diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-05-01 00:40:32 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-01 00:40:32 +0300 |
commit | c7dd102f628b7a64a34223278c2de09718da19f4 (patch) | |
tree | a40475eaa9659647764eebbdd4d28ebb3f57fcd1 | |
parent | 837c28444a009f52e5090bc9e2e98e67a7c6b313 (diff) | |
parent | 5e3a27d3f7af07745c39990b59ca7fcf2813cf58 (diff) |
Merge pull request #45 from PikalaxALT/pikalax_work
Decompile overlay 01; disassemble overlay 04
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | arm9/Makefile | 4 | ||||
-rw-r--r-- | arm9/arm9.lcf | 31 | ||||
-rw-r--r-- | arm9/asm/unk_02006864.s | 8 | ||||
-rw-r--r-- | arm9/asm/unk_0208AC14.s | 4 | ||||
-rw-r--r-- | arm9/global.inc | 211 | ||||
-rw-r--r-- | arm9/modules/01/src/module_01.c | 12 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 58947 | ||||
-rw-r--r-- | arm9/modules/04/asm/thumb_04.s | 3128 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 4 |
10 files changed, 62339 insertions, 13 deletions
@@ -31,3 +31,6 @@ arm*/baserom.* *.dump *.lcf.template + +# Working files +arm9/modules/module_*.{s,sbin,cfg} diff --git a/arm9/Makefile b/arm9/Makefile index 0343dd8c..a6a4831f 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -46,8 +46,8 @@ LD_SPEC := $(TARGET).lsf LD_TEMPLATE := ARM9-TS.lcf.template # Directories containing source files -SRC_DIRS := src -ASM_DIRS := asm data files +SRC_DIRS := src $(wildcard modules/*/src) +ASM_DIRS := asm data files $(wildcard modules/*/asm) C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s)) diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 4eefb24b..ad1f4958 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -11,10 +11,10 @@ MEMORY { .dtcm (RW) : ORIGIN=0x027E0000, LENGTH=0 .overlay (RX) : ORIGIN=0, LENGTH=0 MODULE_00 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_01 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_01 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_02 (RWX) : ORIGIN=0, LENGTH=0 MODULE_03 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_04 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_05 (RWX) : ORIGIN=0, LENGTH=0 MODULE_06 (RWX) : ORIGIN=0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0, LENGTH=0 @@ -325,10 +325,33 @@ SECTIONS { } > .overlay OVERLAY_FILE(00, 0x108400, FILE_10C400.o) - OVERLAY_FILE(01, 0x108600, FILE_10C600.o) + + .MODULE.01 : AT (0x108600) + { + module_01.o (.text) + module_01.o (.sdata) + module_01.o (.data) + } > MODULE_01 + .MODULE.01.bss : + { + module_01.o (.sbss) + module_01.o (.bss) + } >> MODULE_01 + OVERLAY_FILE(02, 0x108800, FILE_10C800.o) OVERLAY_FILE(03, 0x108A00, FILE_10CA00.o) - OVERLAY_FILE(04, 0x108C00, FILE_10CC00.o) + + .MODULE.04 : AT (0x108C00) + { + thumb_04.o (.text) + arm_04.o (.text) + arm_04.o (.data) + } > MODULE_04 + .MODULE.04.bss : + { + arm_04.o (.bss) + } >> MODULE_04 + OVERLAY_FILE(05, 0x141400, FILE_145400.o) OVERLAY_FILE(06, 0x167600, FILE_16B600.o) OVERLAY_FILE(07, 0x180400, FILE_184400.o) diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s index f212d36f..fbfb90df 100644 --- a/arm9/asm/unk_02006864.s +++ b/arm9/asm/unk_02006864.s @@ -95240,7 +95240,7 @@ _02031CEE: bl FUN_02033590
cmp r0, #0x0
beq _02031D04
- blx FUN_021DDB08
+ bl FUN_021DDB08
mov r1, #0x3
sub r0, r1, r0
bl FUN_02033EEC
@@ -98149,10 +98149,10 @@ _020333AA: bne _020333C8
add r0, sp, #0x4
add r1, sp, #0x0
- blx FUN_021DD718
+ bl FUN_021DD718
cmp r0, #0x0
beq _020333E4
- blx FUN_021DD6F0
+ bl FUN_021DD6F0
add sp, #0x8
mov r0, #0x1
pop {r3, pc}
@@ -98161,7 +98161,7 @@ _020333C8: bne _020333E4
add r0, sp, #0x4
add r1, sp, #0x0
- blx FUN_021DD718
+ bl FUN_021DD718
cmp r0, #0x0
beq _020333E4
ldr r0, [sp, #0x0]
diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s index 0adafb8b..8fbcff45 100644 --- a/arm9/asm/unk_0208AC14.s +++ b/arm9/asm/unk_0208AC14.s @@ -13644,7 +13644,9 @@ _02096C6C: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} -_02096C78: ; 0x02096C78 + + arm_func_start FUN_02096C78 +FUN_02096C78: ; 0x02096C78 ldr ip, _02096C8C ; =FUN_02097218 mov r3, r0 mov r0, r1 diff --git a/arm9/global.inc b/arm9/global.inc index e9ddbc3f..3fe0bd01 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -50,7 +50,6 @@ .extern FS_UnloadOverlay
.extern FS_WaitAsync
.extern FUNRTC_Init
-.extern SVC_Sqrt
.extern FUN_020002FE
.extern FUN_02000DF4
.extern FUN_02000E7C
@@ -611,6 +610,7 @@ .extern FUN_02022610
.extern FUN_0202263C
.extern FUN_02022720
+.extern FUN_020227A0
.extern FUN_020227FC
.extern FUN_02022800
.extern FUN_02022804
@@ -798,7 +798,10 @@ .extern FUN_02028174
.extern FUN_02028190
.extern FUN_020281B8
+.extern FUN_02028228
+.extern FUN_0202838C
.extern FUN_02028448
+.extern FUN_02028664
.extern FUN_020286EC
.extern FUN_02028700
.extern FUN_02028754
@@ -1027,6 +1030,7 @@ .extern FUN_020335B8
.extern FUN_020335F0
.extern FUN_02033678
+.extern FUN_020336A0
.extern FUN_020337E8
.extern FUN_0203384C
.extern FUN_02033E74
@@ -2379,16 +2383,106 @@ .extern FUN_0208B4A0
.extern FUN_02090CC8
.extern FUN_02090DB8
+.extern FUN_02095EC8
+.extern FUN_02095FA8
+.extern FUN_02096570
+.extern FUN_02096710
+.extern FUN_02096760
.extern FUN_02096B14
.extern FUN_02096B78
+.extern FUN_02096C78
+.extern FUN_02096C90
.extern FUN_02096CCC
.extern FUN_02096D2C
.extern FUN_02096DA0
+.extern FUN_02096EB4
+.extern FUN_02096EC0
.extern FUN_02096F18
.extern FUN_02096F80
.extern FUN_02096FB0
+.extern FUN_02097000
.extern FUN_0209700C
+.extern FUN_0209702C
+.extern FUN_0209703C
+.extern FUN_0209705C
+.extern FUN_020970CC
+.extern FUN_02097218
.extern FUN_020973B4
+.extern FUN_02097414
+.extern FUN_02097484
+.extern FUN_02097490
+.extern FUN_02097508
+.extern FUN_02099A94
+.extern FUN_02099C78
+.extern FUN_02099D88
+.extern FUN_0209A0AC
+.extern FUN_0209A174
+.extern FUN_0209A224
+.extern FUN_0209A27C
+.extern FUN_0209A2C0
+.extern FUN_0209A4B4
+.extern FUN_0209A504
+.extern FUN_0209A588
+.extern FUN_0209A594
+.extern FUN_0209A60C
+.extern FUN_0209A650
+.extern FUN_0209A6EC
+.extern FUN_0209A7D0
+.extern FUN_0209A858
+.extern FUN_0209A880
+.extern FUN_0209A91C
+.extern FUN_0209A944
+.extern FUN_0209A9A4
+.extern FUN_0209A9D0
+.extern FUN_0209AAD0
+.extern FUN_0209BF4C
+.extern FUN_0209BF9C
+.extern FUN_0209C030
+.extern FUN_0209C52C
+.extern FUN_0209C638
+.extern FUN_0209C7AC
+.extern FUN_0209C840
+.extern FUN_0209C934
+.extern FUN_0209CB24
+.extern FUN_0209CB44
+.extern FUN_0209CB78
+.extern FUN_0209CC10
+.extern FUN_0209CC28
+.extern FUN_020A02EC
+.extern FUN_020A136C
+.extern FUN_020A3688
+.extern FUN_020A374C
+.extern FUN_020A71F8
+.extern FUN_020A722C
+.extern FUN_020A7488
+.extern FUN_020A75C0
+.extern FUN_020A7820
+.extern FUN_020A7A90
+.extern FUN_020A7AC8
+.extern FUN_020A7BD4
+.extern FUN_020A7E0C
+.extern FUN_020A7E80
+.extern FUN_020A87E0
+.extern FUN_020A8850
+.extern FUN_020A8BA4
+.extern FUN_020A8BB0
+.extern FUN_020A8BBC
+.extern FUN_020AA760
+.extern FUN_020AA770
+.extern FUN_020AA7A0
+.extern FUN_020AA824
+.extern FUN_020AABDC
+.extern FUN_020AACFC
+.extern FUN_020AADCC
+.extern FUN_020ACAB0
+.extern FUN_020ACBA0
+.extern FUN_020ACC84
+.extern FUN_020ACD54
+.extern FUN_020AD144
+.extern FUN_020AD834
+.extern FUN_020AD8A8
+.extern FUN_020AD904
+.extern FUN_020AD93C
.extern FUN_020ADA84
.extern FUN_020ADA98
.extern FUN_020ADAB0
@@ -2528,6 +2622,12 @@ .extern FUN_020C10A4
.extern FUN_020C1148
.extern FUN_020C1180
+.extern FUN_020C13C4
+.extern FUN_020C1430
+.extern FUN_020C14AC
+.extern FUN_020C1674
+.extern FUN_020C169C
+.extern FUN_020C16FC
.extern FUN_020C1E58
.extern FUN_020C1E68
.extern FUN_020C1EA4
@@ -2555,31 +2655,72 @@ .extern FUN_020C6034
.extern FUN_020C605C
.extern FUN_021D74E0
+.extern FUN_021D7660
.extern FUN_021D76AC
.extern FUN_021D77C4
+.extern FUN_021D77E0
.extern FUN_021D7800
.extern FUN_021D78FC
.extern FUN_021D79B4
+.extern FUN_021D7A7C
+.extern FUN_021D7B14
+.extern FUN_021D7B48
+.extern FUN_021D7B6C
+.extern FUN_021D7B70
+.extern FUN_021D7BBC
+.extern FUN_021D7BC0
+.extern FUN_021D7C30
+.extern FUN_021D7C4C
.extern FUN_021D7CA4
+.extern FUN_021D7D68
+.extern FUN_021D7DA8
+.extern FUN_021D7DEC
+.extern FUN_021D7E18
+.extern FUN_021D7F20
.extern FUN_021D7F8C
.extern FUN_021D8018
+.extern FUN_021D8044
+.extern FUN_021D8058
.extern FUN_021D8164
.extern FUN_021D82BC
.extern FUN_021D8320
.extern FUN_021D836C
.extern FUN_021D83A8
.extern FUN_021D83C0
+.extern FUN_021D83F0
.extern FUN_021D844C
.extern FUN_021D8494
+.extern FUN_021D8558
+.extern FUN_021D8590
+.extern FUN_021D85A0
+.extern FUN_021D85B4
.extern FUN_021D85FC
.extern FUN_021D8624
.extern FUN_021D865C
+.extern FUN_021D868C
+.extern FUN_021D872C
+.extern FUN_021D8730
.extern FUN_021D8758
+.extern FUN_021D87D0
+.extern FUN_021D8818
.extern FUN_021D8820
+.extern FUN_021D8860
.extern FUN_021D88E4
+.extern FUN_021D8910
+.extern FUN_021D8944
.extern FUN_021D89CC
+.extern FUN_021D8A54
+.extern FUN_021D8A7C
.extern FUN_021D8B64
+.extern FUN_021D8BF0
+.extern FUN_021D8C08
.extern FUN_021D8C24
+.extern FUN_021D8C58
+.extern FUN_021D8C6C
+.extern FUN_021D8CC8
+.extern FUN_021D8CF0
+.extern FUN_021D8D04
+.extern FUN_021D8F08
.extern FUN_021D917C
.extern FUN_021D959C
.extern FUN_021D967C
@@ -2588,6 +2729,12 @@ .extern FUN_021D971C
.extern FUN_021D9820
.extern FUN_021D99F8
+.extern FUN_021D9C2C
+.extern FUN_021D9F78
+.extern FUN_021DA2F4
+.extern FUN_021DA334
+.extern FUN_021DA388
+.extern FUN_021DA3DC
.extern FUN_021DA464
.extern FUN_021DA4EC
.extern FUN_021DA54C
@@ -2598,6 +2745,7 @@ .extern FUN_021DA5D8
.extern FUN_021DA7B4
.extern FUN_021DAAA4
+.extern FUN_021DAB68
.extern FUN_021DAC70
.extern FUN_021DAE40
.extern FUN_021DAED4
@@ -2608,9 +2756,29 @@ .extern FUN_021DB7E8
.extern FUN_021DB858
.extern FUN_021DC174
+.extern FUN_021DCA84
.extern FUN_021DD6F0
.extern FUN_021DD718
+.extern FUN_021DD968
.extern FUN_021DDB08
+.extern FUN_021DDBBC
+.extern FUN_021DDC1C
+.extern FUN_021DDCE8
+.extern FUN_021DDD7C
+.extern FUN_021DDDCC
+.extern FUN_021DDE7C
+.extern FUN_021DDEE0
+.extern FUN_021DF95C
+.extern FUN_021DF978
+.extern FUN_021DFA40
+.extern FUN_021DFAF8
+.extern FUN_021DFB20
+.extern FUN_021DFD18
+.extern FUN_021DFDBC
+.extern FUN_021DFE64
+.extern FUN_021DFF74
+.extern FUN_021E0200
+.extern FUN_021E0374
.extern FUN_021E1374
.extern FUN_021E1858
.extern FUN_021E1994
@@ -2621,7 +2789,10 @@ .extern FUN_021E1F34
.extern FUN_021E1F58
.extern FUN_021E1F60
+.extern FUN_021E242C
+.extern FUN_021E2454
.extern FUN_021E2464
+.extern FUN_021E2578
.extern FUN_021E2608
.extern FUN_021E26CC
.extern FUN_021E27E8
@@ -2685,8 +2856,15 @@ .extern FUN_021E8588
.extern FUN_021E85E4
.extern FUN_021E85FC
+.extern FUN_021EA530
+.extern FUN_021EACF8
+.extern FUN_021EADD8
+.extern FUN_021EADF8
+.extern FUN_021EAE18
+.extern FUN_021EAE38
.extern FUN_021EAE90
.extern FUN_021EB044
+.extern FUN_021EB0FC
.extern FUN_021EC57C
.extern FUN_021EC71C
.extern FUN_021EC854
@@ -2747,6 +2925,10 @@ .extern FUN_021F61DC
.extern FUN_021F61E8
.extern FUN_02211E60
+.extern FUN_02213B08
+.extern FUN_02213D80
+.extern FUN_02213DBC
+.extern FUN_02213E24
.extern FUN_0222D5C0
.extern FUN_0222DAEC
.extern FUN_0222DD1C
@@ -3149,8 +3331,10 @@ .extern MATHi_CRC8InitTable
.extern MATHi_CalcHMAC
.extern MIC_DoSamplingAsync
+.extern MIC_GetLastSamplingAddress
.extern MIC_Init
.extern MIC_StartAutoSampling
+.extern MIC_StartAutoSamplingAsync
.extern MIC_StopAutoSampling
.extern MI_Copy36B
.extern MI_Copy48B
@@ -3259,6 +3443,7 @@ .extern OS_IrqHandler
.extern OS_IsAlarmAvailable
.extern OS_IsRunOnEmulator
+.extern OS_IsThreadAvailable
.extern OS_IsThreadTerminated
.extern OS_IsTickAvailable
.extern OS_JamMessage
@@ -3276,6 +3461,7 @@ .extern OS_RestoreInterrupts
.extern OS_RestoreInterrupts_IrqAndFiq
.extern OS_SNPrintf
+.extern OS_SPrintf
.extern OS_SaveContext
.extern OS_SendMessage
.extern OS_SetAlarm
@@ -3313,8 +3499,8 @@ .extern OSi_HeapInfo
.extern OSi_IdleThread
.extern OSi_IdleThreadStack
-.extern OSi_Initialized
.extern OSi_InitVramExclusive
+.extern OSi_Initialized
.extern OSi_IrqCallbackInfo
.extern OSi_IrqCallbackInfoIndex
.extern OSi_IrqDma0
@@ -3448,6 +3634,7 @@ .extern SND_UnlockChannel
.extern SND_WaitForCommandProc
.extern STD_CopyLString
+.extern SVC_Sqrt
.extern SVC_WaitByLoop
.extern ScriptCall
.extern ScriptJump
@@ -3463,6 +3650,7 @@ .extern StringLength
.extern StringNotEqual
.extern StringNotEqualN
+.extern THUNK_FUN_02099BC8
.extern TP_CheckError
.extern TP_GetCalibratedPoint
.extern TP_GetLatestIndexInAuto
@@ -3529,6 +3717,7 @@ .extern __call_static_initializers
.extern __close_console
.extern __destroy_global_chain
+.extern __msl_assertion_failed
.extern __read_console
.extern __write_console
.extern _d2f
@@ -3575,14 +3764,29 @@ .extern _u32_div_not_0_f
.extern _ull_mod
.extern abs
+.extern atod
+.extern atol
.extern cardi_common
.extern gScriptCmdTable
.extern memcmp
.extern memcpy
.extern memmove
+.extern rand
+.extern snprintf
+.extern sprintf
+.extern srand
+.extern sscanf
+.extern strcat
+.extern strchr
.extern strcmp
.extern strcpy
.extern strlen
+.extern strncmp
+.extern strncpy
+.extern strnicmp
+.extern strstr
+.extern strtold2
+.extern strtoul
.extern sys_exit
.extern sys_readc
.extern sys_writec
@@ -3590,8 +3794,11 @@ .extern tempName_NNS_FndCreateExpHeapEx
.extern thunk_FUN_02096e4c
.extern thunk_FUN_02097190
+.extern thunk_FUN_020995dc
+.extern thunk_FUN_0209996c
.extern thunk_FUN_020adc8c
.extern thunk_FUN_020adc8c_2
.extern thunk_FUN_020afda0
.extern thunk_FUN_020afda0_2
.extern thunk_FUN_020b5040
+.extern wcslen
diff --git a/arm9/modules/01/src/module_01.c b/arm9/modules/01/src/module_01.c new file mode 100644 index 00000000..86e50785 --- /dev/null +++ b/arm9/modules/01/src/module_01.c @@ -0,0 +1,12 @@ +#include "global.h" + +u32 UNK_021D7500[8]; + +void MOD01_021D74E0(void) +{ + UNK_021D7500[1]++; +} + +void (*UNK_021D74F0[4])(void) = { + MOD01_021D74E0 +}; diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s new file mode 100644 index 00000000..8d1d699b --- /dev/null +++ b/arm9/modules/04/asm/arm_04.s @@ -0,0 +1,58947 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start FUN_021D8D18 +FUN_021D8D18: ; 0x021D8D18 + stmdb sp!, {r4, lr} + ldr r2, _021D8D58 ; =0x02210468 + ldr r1, _021D8D5C ; =0x000013D8 + ldr r2, [r2] + mov r4, r0 + add r0, r2, r1 + bl OS_LockMutex + ldr r2, _021D8D58 ; =0x02210468 + ldr r1, _021D8D5C ; =0x000013D8 + ldr r0, [r2] + add r0, r0, #0x1000 + str r4, [r0, #4] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_021D8D58: .word 0x02210468 +_021D8D5C: .word 0x000013D8 + + arm_func_start FUN_021D8D60 +FUN_021D8D60: ; 0x021D8D60 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x98 + ldr r4, _021D8EE0 ; =0x0221046C + mov r3, #0 + ldr r5, [r4, #4] + ldr ip, [r4] + cmp r5, r3 + mov r5, r0 + mov r6, r1 + mov r4, r2 + cmpeq ip, r3 + bne _021D8DC0 + ldr r0, _021D8EE4 ; =0x0220BEF8 + bl strlen + mov r3, r0 + ldr r1, _021D8EE8 ; =0x0220BF04 + ldr r2, _021D8EE4 ; =0x0220BEF8 + mov r0, r5 + bl FUN_021DAB68 + cmp r0, #0 + beq _021D8E18 + add sp, sp, #0x98 + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} +_021D8DC0: + ldr r0, _021D8EEC ; =0x0220BF0C + bl strlen + mov r3, r0 + ldr r1, _021D8EE8 ; =0x0220BF04 + ldr r2, _021D8EEC ; =0x0220BF0C + mov r0, r5 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl strlen + mov r3, r0 + ldr r1, _021D8EF0 ; =0x0220BF14 + mov r0, r5 + mov r2, r6 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8E18: + ldr r1, _021D8EE0 ; =0x0221046C + add r0, sp, #0 + bl FUN_021D9F78 + cmp r0, #0 + addeq sp, sp, #0x98 + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021D8EF4 ; =0x0221048C + add r1, sp, #0 + ldr r2, [r0] + mov r0, r5 + bl FUN_021D9C2C + cmp r0, #0 + addeq sp, sp, #0x98 + moveq r0, #8 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021D8EF8 ; =0x02210460 + ldr r0, [r0] + cmp r0, #1 + bne _021D8E94 + ldr r0, _021D8EFC ; =0x0220BF1C + bl strlen + mov r3, r0 + ldr r1, _021D8F00 ; =0x0220BF20 + ldr r2, _021D8EFC ; =0x0220BF1C + mov r0, r5 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8E94: + mov r0, r4 + bl wcslen + cmp r0, #0 + beq _021D8ED4 + mov r0, r4 + bl wcslen + mov r3, r0 + ldr r1, _021D8F04 ; =0x0220BF28 + mov r0, r5 + mov r2, r4 + mov r3, r3, lsl #1 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x98 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, pc} +_021D8ED4: + mov r0, #0 + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021D8EE0: .word 0x0221046C +_021D8EE4: .word 0x0220BEF8 +_021D8EE8: .word 0x0220BF04 +_021D8EEC: .word 0x0220BF0C +_021D8EF0: .word 0x0220BF14 +_021D8EF4: .word 0x0221048C +_021D8EF8: .word 0x02210460 +_021D8EFC: .word 0x0220BF1C +_021D8F00: .word 0x0220BF20 +_021D8F04: .word 0x0220BF28 + + arm_func_start FUN_021D8F08 +FUN_021D8F08: ; 0x021D8F08 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021D91BC ; =0x02210468 + mov r1, #0 + ldr r0, [r0] + str r1, [sp] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _021D91C0 ; =0x0220BF34 + bl FUN_021DA388 + str r0, [sp] + cmp r0, #0 + beq _021D8F40 + bl FUN_021DCA84 +_021D8F40: + ldr r0, _021D91BC ; =0x02210468 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D91C4 ; =0x021D74A8 + str r2, [sp] + str r2, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x314] + ldr r1, _021D91C8 ; =0x0220BF3C + bl FUN_021DA388 + bl atol + ldr r1, _021D91C4 ; =0x021D74A8 + ldr r1, [r1] + cmp r1, #0x22 + bne _021D8F9C + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D91CC ; =0x00004E85 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xc + ldmia sp!, {r4, r5, pc} +_021D8F9C: + cmp r0, #0xc8 + beq _021D8FC8 + ldr r2, _021D91BC ; =0x02210468 + ldr r1, _021D91D0 ; =0x000059D8 + ldr r2, [r2] + add r1, r0, r1 + add r0, r2, #0x1000 + str r1, [r0, #8] + add sp, sp, #4 + mov r0, #0x12 + ldmia sp!, {r4, r5, pc} +_021D8FC8: + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D91D4 ; =0x0000100C + ldr r3, [r0] + ldr r1, _021D91D8 ; =0x0220BF48 + add r0, r3, #0x1000 + ldr r0, [r0, #0x314] + add r2, r3, r2 + mov r3, #4 + bl FUN_021DA334 + cmp r0, #0 + bgt _021D9014 + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D91CC ; =0x00004E85 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xe + ldmia sp!, {r4, r5, pc} +_021D9014: + ldr r1, _021D91BC ; =0x02210468 + ldr r0, _021D91D4 ; =0x0000100C + ldr r2, [r1] + add r1, sp, #0 + add r0, r2, r0 + mov r2, #0xa + bl strtold2 + ldr r2, _021D91BC ; =0x02210468 + ldr r1, _021D91D4 ; =0x0000100C + ldr r5, [r2] + mov r4, r0 + add r0, r5, r1 + bl strlen + ldr r1, _021D91D4 ; =0x0000100C + ldr r2, [sp] + add r1, r5, r1 + add r0, r1, r0 + cmp r2, r0 + ldrne r1, _021D91CC ; =0x00004E85 + addne r0, r5, #0x1000 + strne r1, [r0, #8] + addne sp, sp, #4 + movne r0, #0xc + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D91DC ; =0x00004E20 + add r1, r5, #0x1000 + add r0, r4, r0 + str r0, [r1, #8] + cmp r4, #0x64 + bge _021D91B0 + ldr ip, _021D91BC ; =0x02210468 + mov r0, #0 + ldr r1, [ip] + ldr r5, _021D91E0 ; =0x00001052 + add r1, r1, #0x1000 + strb r0, [r1, #0x52] + ldr r2, [ip] + ldr r1, _021D91E4 ; =0x0220BF54 + add r2, r2, #0x1000 + strb r0, [r2, #0x1f] + ldr r2, [ip] + ldr r3, _021D91E8 ; =0x0000012D + add r2, r2, #0x1000 + strb r0, [r2, #0x17f] + ldr r2, [ip] + add r2, r2, #0x1000 + strb r0, [r2, #0x10] + ldr r2, [ip] + add r2, r2, #0x1000 + strb r0, [r2, #0x188] + ldr r2, [ip] + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + add r2, r2, r5 + bl FUN_021DA334 + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D91EC ; =0x0000101F + ldr r3, [r0] + ldr r1, _021D91F0 ; =0x0220BF5C + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0x33 + bl FUN_021DA334 + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D91F4 ; =0x0000117F + ldr r3, [r0] + ldr r1, _021D91F8 ; =0x0220BF64 + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #9 + bl FUN_021DA334 + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D91FC ; =0x00001010 + ldr r3, [r0] + ldr r1, _021D9200 ; =0x0220BF70 + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0xf + bl FUN_021DA334 + ldr r0, _021D91BC ; =0x02210468 + ldr r2, _021D9204 ; =0x00001188 + ldr r3, [r0] + ldr r1, _021D9208 ; =0x0220BF7C + add r0, r3, #0x1000 + add r2, r3, r2 + ldr r0, [r0, #0x314] + mov r3, #0x41 + bl FUN_021DA2F4 + ldr r0, _021D91BC ; =0x02210468 + mov r1, #0 + ldr r0, [r0] + cmp r4, #0x28 + add r0, r0, #0x1000 + strb r1, [r0, #0x1b3] + ldrne r0, _021D920C ; =0x02210464 + movne r1, #1 + strne r1, [r0] + ldreq r0, _021D920C ; =0x02210464 + moveq r1, #2 + streq r1, [r0] +_021D91B0: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D91BC: .word 0x02210468 +_021D91C0: .word 0x0220BF34 +_021D91C4: .word 0x021D74A8 +_021D91C8: .word 0x0220BF3C +_021D91CC: .word 0x00004E85 +_021D91D0: .word 0x000059D8 +_021D91D4: .word 0x0000100C +_021D91D8: .word 0x0220BF48 +_021D91DC: .word 0x00004E20 +_021D91E0: .word 0x00001052 +_021D91E4: .word 0x0220BF54 +_021D91E8: .word 0x0000012D +_021D91EC: .word 0x0000101F +_021D91F0: .word 0x0220BF5C +_021D91F4: .word 0x0000117F +_021D91F8: .word 0x0220BF64 +_021D91FC: .word 0x00001010 +_021D9200: .word 0x0220BF70 +_021D9204: .word 0x00001188 +_021D9208: .word 0x0220BF7C +_021D920C: .word 0x02210464 + + arm_func_start FUN_021D9210 +FUN_021D9210: ; 0x021D9210 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021D93F4 ; =0x02210468 + mov r1, #0 + ldr r0, [r0] + add r2, r0, #0x1000 + ldr r0, [r2, #0x314] + ldr r5, [r2, #0x20c] + ldr r4, [r2, #0x210] + bl FUN_021DA3DC + cmp r0, #1 + beq _021D9260 + ldr r0, _021D93F4 ; =0x02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xe + ldmia sp!, {r4, r5, pc} +_021D9260: + bl FUN_021D8F08 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0xe + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D93F4 ; =0x02210468 + ldr r1, _021D93F8 ; =0x00004E84 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #8] + cmp r2, r1 + bge _021D9334 + ldr r0, _021D93FC ; =0x00004E22 + cmp r2, r0 + bne _021D9328 + ldr r0, _021D9400 ; =0x0220BF88 + ldr r1, _021D9404 ; =0x0000071F + blx r5 + movs r5, r0 + bne _021D92D0 + ldr r0, _021D93F4 ; =0x02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021D92D0: + add r1, r5, #0x1f + ldr r0, _021D9408 ; =0x0221046C + bic r1, r1, #0x1f + bl FUN_02096710 + cmp r0, #1 + beq _021D9318 + ldr r0, _021D940C ; =0x0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 + ldr r0, _021D93F4 ; =0x02210468 + ldr r2, _021D93F8 ; =0x00004E84 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0xf + ldmia sp!, {r4, r5, pc} +_021D9318: + ldr r0, _021D940C ; =0x0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 +_021D9328: + add sp, sp, #4 + mov r0, #0x15 + ldmia sp!, {r4, r5, pc} +_021D9334: + ldr r0, _021D9410 ; =0x00004E88 + cmp r2, r0 + beq _021D9350 + ldr r0, _021D9414 ; =0x00004E8C + cmp r2, r0 + beq _021D9378 + b _021D93E8 +_021D9350: + ldr r0, _021D9408 ; =0x0221046C + bl FUN_02096570 + ldr r0, _021D93F4 ; =0x02210468 + ldr r2, _021D9410 ; =0x00004E88 + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x10 + ldmia sp!, {r4, r5, pc} +_021D9378: + ldr r0, _021D9400 ; =0x0220BF88 + mov r1, #0x700 + blx r5 + movs r5, r0 + bne _021D93AC + ldr r0, _021D93F4 ; =0x02210468 + ldr r2, _021D9414 ; =0x00004E8C + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021D93AC: + add r0, r5, #0x1f + bic r0, r0, #0x1f + bl FUN_02096760 + ldr r0, _021D940C ; =0x0220BF98 + mov r1, r5 + mov r2, #0 + blx r4 + ldr r0, _021D93F4 ; =0x02210468 + ldr r2, _021D9414 ; =0x00004E8C + ldr r1, [r0] + add sp, sp, #4 + add r1, r1, #0x1000 + str r2, [r1, #8] + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021D93E8: + mov r0, #0x12 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D93F4: .word 0x02210468 +_021D93F8: .word 0x00004E84 +_021D93FC: .word 0x00004E22 +_021D9400: .word 0x0220BF88 +_021D9404: .word 0x0000071F +_021D9408: .word 0x0221046C +_021D940C: .word 0x0220BF98 +_021D9410: .word 0x00004E88 +_021D9414: .word 0x00004E8C + + arm_func_start FUN_021D9418 +FUN_021D9418: ; 0x021D9418 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, #0 + mov r0, #1 + ldr r7, _021D96D4 ; =0x00001388 + ldr fp, _021D96D8 ; =0x000082EA + ldr r5, _021D96DC ; =0x02210468 + ldr r4, _021D96E0 ; =0x000013D8 + mov r6, sb + str sb, [sp, #8] + str sb, [sp, #0xc] + str r0, [sp, #4] +_021D9448: + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x314] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021D9470 + ldr r0, _021D96E4 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021D9470: + ldr r0, [r5] + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #8 + beq _021D9518 + ldr r0, _021D96E8 ; =0x00004E84 + str r0, [r1, #8] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + add r0, r0, #0x1000 + ldr r0, [r0, #0x20] + cmp r0, #7 + bne _021D94C0 + mov r0, #0x14 + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94C0: + cmp sb, #2 + ble _021D9508 + cmp r0, #2 + bne _021D94E0 + mov r0, #9 + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94E0: + cmp r0, #3 + bne _021D94F8 + mov r0, #0xb + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D94F8: + mov r0, #0xd + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9508: + ldr r0, [sp, #4] + add sb, sb, #1 + str r0, [sp] + b _021D9598 +_021D9518: + bl FUN_021D9210 + cmp r0, #0x10 + beq _021D9544 + cmp r0, #0x11 + beq _021D956C + cmp r0, #0x15 + bne _021D9578 + mov r0, #0x15 + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9544: + cmp sb, #2 + ble _021D955C + mov r0, #0x10 + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D955C: + ldr r0, [sp, #8] + add sb, sb, #1 + str r0, [sp] + b _021D9598 +_021D956C: + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D9578: + cmp sb, #2 + blt _021D958C + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D958C: + ldr r0, [sp, #4] + add sb, sb, #1 + str r0, [sp] +_021D9598: + bl OS_GetTick + mov r8, r0 + mov sl, r1 + bl OS_GetTick + subs r2, r0, r8 + sbc r0, r1, sl + mov r1, r0, lsl #6 + ldr r3, [sp, #0xc] + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, fp + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r7 + bhs _021D965C +_021D95D4: + ldr r0, [r5] + add r0, r0, r4 + bl OS_LockMutex + ldr r2, [r5] + add r1, r2, #0x1000 + ldr r0, [r1, #0x3f0] + cmp r0, #1 + bne _021D961C + ldr r2, _021D96E8 ; =0x00004E84 + ldr r0, _021D96E0 ; =0x000013D8 + str r2, [r1, #8] + ldr r1, [r5] + add r0, r1, r0 + bl OS_UnlockMutex + mov r0, #0x14 + bl FUN_021D8D18 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D961C: + add r0, r2, r4 + bl OS_UnlockMutex + mov r0, r7 + bl OS_Sleep + bl OS_GetTick + subs r2, r0, r8 + sbc r0, r1, sl + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + mov r2, fp + mov r3, r6 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r7 + blo _021D95D4 +_021D965C: + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + bl FUN_021DAE4C + ldr r0, [r5] + add r0, r0, r4 + bl OS_LockMutex + ldr r0, [sp] + bl FUN_021D96EC + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r2, [r5] + add r1, r2, #0x1000 + ldr r0, [r1, #4] + cmp r0, #0 + beq _021D96C0 + ldr r2, _021D96E8 ; =0x00004E84 + ldr r0, _021D96E0 ; =0x000013D8 + str r2, [r1, #8] + ldr r1, [r5] + add r0, r1, r0 + bl OS_UnlockMutex + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021D96C0: + add r0, r2, r4 + bl OS_UnlockMutex + b _021D9448 + + arm_func_start FUN_021D96CC +FUN_021D96CC: ; 0x021D96CC + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021D96D4: .word 0x00001388 +_021D96D8: .word 0x000082EA +_021D96DC: .word 0x02210468 +_021D96E0: .word 0x000013D8 +_021D96E4: .word 0x00001B34 +_021D96E8: .word 0x00004E84 + + arm_func_start FUN_021D96EC +FUN_021D96EC: ; 0x021D96EC + stmdb sp!, {r4, lr} + ldr r1, _021D97E0 ; =0x0220BEB4 + mov r4, r0 + ldr r0, [r1] + ldr r1, _021D97E4 ; =0x0220BFA4 + bl strcmp + cmp r0, #0 + ldrne r0, _021D97E0 ; =0x0220BEB4 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _021D97E8 ; =0x02210468 + ldr r1, _021D97E0 ; =0x0220BEB4 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #0x20c] + str r2, [r1, #0xc] + ldr r2, [r0, #0x210] + str r2, [r1, #0x10] + ldr r0, [r0, #0x314] + bl FUN_021DB608 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + cmp r4, #1 + bne _021D9758 + ldr r0, _021D97EC ; =0x0221046C + bl FUN_02095EC8 +_021D9758: + ldr r0, _021D97E8 ; =0x02210468 + ldr r2, _021D97F0 ; =0x000011CC + ldr r3, [r0] + add r0, r3, #0x1000 + ldr r0, [r0, #0x314] + add r1, r3, #0x1200 + add r2, r3, r2 + bl FUN_021D8D60 + ldr r2, _021D97E8 ; =0x02210468 + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2] + add r0, r0, #0x1000 + ldr r1, [r0, #4] + cmp r1, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, [r0, #0x314] + bl FUN_021DB570 + cmp r0, #0 + movne r0, #4 + ldmneia sp!, {r4, pc} + ldr r0, _021D97F4 ; =0x021D3498 + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _021D97E8 ; =0x02210468 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #0x1000 + ldr r0, [r0, #0x314] + bl FUN_021DB4A4 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021D97E0: .word 0x0220BEB4 +_021D97E4: .word 0x0220BFA4 +_021D97E8: .word 0x02210468 +_021D97EC: .word 0x0221046C +_021D97F0: .word 0x000011CC +_021D97F4: .word 0x021D3498 + + arm_func_start FUN_021D97F8 +FUN_021D97F8: ; 0x021D97F8 + stmdb sp!, {r4, lr} + ldr r1, _021D9874 ; =0x02210468 + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + bne _021D981C + mov r1, #0 + mov r2, #0x1c4 + bl MI_CpuFill8 +_021D981C: + ldr r1, _021D9874 ; =0x02210468 + ldr r0, _021D9878 ; =0x00001008 + ldr r2, [r1] + mov r1, r4 + add r0, r2, r0 + mov r2, #0x1c4 + bl MI_CpuCopy8 + ldr r1, [r4] + ldr r0, _021D987C ; =0x00004E20 + cmp r1, r0 + blt _021D9854 + ldr r0, _021D9880 ; =0x00007530 + cmp r1, r0 + blt _021D985C +_021D9854: + ldr r0, _021D9884 ; =0x00005206 + str r0, [r4] +_021D985C: + ldr r1, [r4] + ldr r0, _021D9888 ; =0x00004E84 + cmp r1, r0 + rsbge r0, r1, #0 + strge r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_021D9874: .word 0x02210468 +_021D9878: .word 0x00001008 +_021D987C: .word 0x00004E20 +_021D9880: .word 0x00007530 +_021D9884: .word 0x00005206 +_021D9888: .word 0x00004E84 + + arm_func_start FUN_021D988C +FUN_021D988C: ; 0x021D988C + stmdb sp!, {r4, lr} + ldr r0, _021D98D4 ; =0x02210468 + ldr r1, [r0] + cmp r1, #0 + moveq r0, #0x16 + ldmeqia sp!, {r4, pc} + ldr r0, _021D98D8 ; =0x000013D8 + add r0, r1, r0 + bl OS_LockMutex + ldr r1, _021D98D4 ; =0x02210468 + ldr r0, _021D98D8 ; =0x000013D8 + ldr r2, [r1] + add r1, r2, #0x1000 + add r0, r2, r0 + ldr r4, [r1, #4] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021D98D4: .word 0x02210468 +_021D98D8: .word 0x000013D8 + + arm_func_start FUN_021D98DC +FUN_021D98DC: ; 0x021D98DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021D9914 ; =0x02210468 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9918 ; =0x00001318 + add r0, r1, r0 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021D9914: .word 0x02210468 +_021D9918: .word 0x00001318 + + arm_func_start FUN_021D991C +FUN_021D991C: ; 0x021D991C + stmdb sp!, {r4, lr} + ldr r0, _021D996C ; =0x02210468 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r1, r0, #0x1000 + ldr r0, [r1, #0x314] + ldr r4, [r1, #0x210] + cmp r0, #0 + beq _021D9948 + bl FUN_021DAE4C +_021D9948: + ldr r1, _021D996C ; =0x02210468 + ldr r0, _021D9970 ; =0x0220BFC4 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021D996C ; =0x02210468 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021D996C: .word 0x02210468 +_021D9970: .word 0x0220BFC4 + + arm_func_start FUN_021D9974 +FUN_021D9974: ; 0x021D9974 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021D9A0C ; =0x02210468 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9A10 ; =0x000013D8 + add r0, r1, r0 + bl OS_LockMutex + ldr r2, _021D9A0C ; =0x02210468 + mov r3, #1 + ldr r0, [r2] + ldr r1, _021D9A10 ; =0x000013D8 + add r0, r0, #0x1000 + str r3, [r0, #0x3f0] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldr r0, _021D9A0C ; =0x02210468 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x314] + cmp r0, #0 + beq _021D99DC + bl FUN_021DB440 +_021D99DC: + ldr r0, _021D9A0C ; =0x02210468 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021D9A14 ; =0x00001318 + add r0, r1, r0 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021D9A0C: .word 0x02210468 +_021D9A10: .word 0x000013D8 +_021D9A14: .word 0x00001318 + + arm_func_start FUN_021D9A18 +FUN_021D9A18: ; 0x021D9A18 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _021D9ABC ; =0x02210468 + ldr r0, _021D9AC0 ; =0x000013D8 + ldr r1, [r1] + add r0, r1, r0 + bl OS_InitMutex + ldr r1, _021D9ABC ; =0x02210468 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3f0] + ldr r1, [r1] + add r0, r1, #0x1000 + ldr r0, [r0, #0x384] + cmp r0, #0 + beq _021D9A74 + ldr r0, _021D9AC4 ; =0x00001318 + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} +_021D9A74: + ldr r2, _021D9ABC ; =0x02210468 + ldr r0, _021D9AC4 ; =0x00001318 + ldr lr, [r2] + mov r3, #0x1000 + ldr r1, _021D9AC8 ; =FUN_021D9418 + str r3, [sp] + mov ip, #0x10 + add r0, lr, r0 + add r3, lr, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r1, _021D9ABC ; =0x02210468 + ldr r0, _021D9AC4 ; =0x00001318 + ldr r1, [r1] + add r0, r1, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021D9ABC: .word 0x02210468 +_021D9AC0: .word 0x000013D8 +_021D9AC4: .word 0x00001318 +_021D9AC8: .word FUN_021D9418 + + arm_func_start FUN_021D9ACC +FUN_021D9ACC: ; 0x021D9ACC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021D9BFC ; =0x02210468 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + addne sp, sp, #4 + ldr r2, [r5, #0x40] + movne r0, #2 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D9C00 ; =0x0220BFD4 + ldr r1, _021D9C04 ; =0x000013F4 + blx r2 + ldr r1, _021D9BFC ; =0x02210468 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021D9C04 ; =0x000013F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021D9BFC ; =0x02210468 + ldr r2, _021D9C08 ; =0x00001008 + ldr r0, [r1] + ldr r3, _021D9C0C ; =0x02210464 + add r0, r0, #0x1000 + str r4, [r0, #0x314] + ldr r0, [r1] + mov r1, #0 + add r0, r0, r2 + mov r2, #0x1c4 + str r1, [r3] + bl MI_CpuFill8 + ldr r2, _021D9BFC ; =0x02210468 + ldr r3, _021D9C10 ; =0x00004E84 + ldr r0, [r2] + ldr r1, _021D9C14 ; =0x000011CC + add r0, r0, #0x1000 + str r3, [r0, #8] + ldr lr, [r2] + mov r4, #4 + add ip, lr, r1 +_021D9B7C: + ldmia r5!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _021D9B7C + ldmia r5, {r0, r1} + stmia ip, {r0, r1} + add r0, lr, #0x1100 + mov r2, #0 + strh r2, [r0, #0xfe] + ldr r1, _021D9BFC ; =0x02210468 + mov r0, #1 + ldr r1, [r1] + add r1, r1, #0x1000 + strb r2, [r1, #0x20b] + bl FUN_021D96EC + ldr r2, _021D9BFC ; =0x02210468 + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #4] + ldr r0, [r2] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021D9C18 ; =0x02210460 + mov r1, #0 + str r1, [r0] + bl FUN_021D9A18 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021D9BFC: .word 0x02210468 +_021D9C00: .word 0x0220BFD4 +_021D9C04: .word 0x000013F4 +_021D9C08: .word 0x00001008 +_021D9C0C: .word 0x02210464 +_021D9C10: .word 0x00004E84 +_021D9C14: .word 0x000011CC +_021D9C18: .word 0x02210460 + + arm_func_start FUN_021D9C1C +FUN_021D9C1C: ; 0x021D9C1C + ldr r1, _021D9C28 ; =0x0220BEB4 + str r0, [r1] + bx lr + .align 2, 0 +_021D9C28: .word 0x0220BEB4 + + arm_func_start FUN_021D9C2C +FUN_021D9C2C: ; 0x021D9C2C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov ip, #2 + ldr r2, _021D9F30 ; =0x0220BFE4 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + add r0, sp, #4 + bl strlen + mov r3, r0 + ldr r1, _021D9F34 ; =0x0220BFF0 + mov r0, r6 + add r2, sp, #4 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl strlen + mov r3, r0 + ldr r1, _021D9F38 ; =0x0220BFF8 + mov r0, r6 + mov r2, r5 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0xe + bl strlen + mov r3, r0 + ldr r1, _021D9F3C ; =0x0220C000 + mov r0, r6 + add r2, r5, #0xe + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x41 + bl strlen + mov r3, r0 + ldr r1, _021D9F40 ; =0x0220C008 + mov r0, r6 + add r2, r5, #0x41 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x6f + bl strlen + mov r3, r0 + ldr r1, _021D9F44 ; =0x0220C010 + mov r0, r6 + add r2, r5, #0x6f + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x15 + bl strlen + mov r3, r0 + ldr r1, _021D9F48 ; =0x0220C018 + mov r0, r6 + add r2, r5, #0x15 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1a + bl strlen + mov r3, r0 + ldr r1, _021D9F4C ; =0x0220C020 + mov r0, r6 + add r2, r5, #0x1a + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1d + bl strlen + mov r3, r0 + ldr r1, _021D9F50 ; =0x0220C028 + mov r0, r6 + add r2, r5, #0x1d + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x1f + bl strlen + mov r3, r0 + ldr r1, _021D9F54 ; =0x0220C030 + mov r0, r6 + add r2, r5, #0x1f + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2c + bl strlen + mov r3, r0 + ldr r1, _021D9F58 ; =0x0220C038 + mov r0, r6 + add r2, r5, #0x2c + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x2f + bl strlen + mov r3, r0 + ldr r1, _021D9F5C ; =0x0220C040 + mov r0, r6 + add r2, r5, #0x2f + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x34 + bl strlen + mov r3, r0 + ldr r1, _021D9F60 ; =0x0220C048 + mov r0, r6 + add r2, r5, #0x34 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r5, #0x7e + bl wcslen + mov r3, r0 + ldr r1, _021D9F64 ; =0x0220C050 + mov r0, r6 + add r2, r5, #0x7e + mov r3, r3, lsl #1 + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #1 + bne _021D9ED0 + add r0, r5, #0x4e + bl strlen + mov r3, r0 + ldr r1, _021D9F68 ; =0x0220C058 + mov r0, r6 + add r2, r5, #0x4e + bl FUN_021DAB68 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} +_021D9ED0: + ldr r2, _021D9F6C ; =0x0220C060 + mov ip, #2 + add r0, sp, #4 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + ldr r1, _021D9F70 ; =0x0220C078 + add r2, sp, #4 + mov r0, r6 + bl FUN_021DAC98 + cmp r0, #0 + addne sp, sp, #0x28 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021D9F74 ; =0x0220C084 + mov r0, r6 + add r2, r5, #0x15 + bl FUN_021DAC98 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021D9F30: .word 0x0220BFE4 +_021D9F34: .word 0x0220BFF0 +_021D9F38: .word 0x0220BFF8 +_021D9F3C: .word 0x0220C000 +_021D9F40: .word 0x0220C008 +_021D9F44: .word 0x0220C010 +_021D9F48: .word 0x0220C018 +_021D9F4C: .word 0x0220C020 +_021D9F50: .word 0x0220C028 +_021D9F54: .word 0x0220C030 +_021D9F58: .word 0x0220C038 +_021D9F5C: .word 0x0220C040 +_021D9F60: .word 0x0220C048 +_021D9F64: .word 0x0220C050 +_021D9F68: .word 0x0220C058 +_021D9F6C: .word 0x0220C060 +_021D9F70: .word 0x0220C078 +_021D9F74: .word 0x0220C084 + + arm_func_start FUN_021D9F78 +FUN_021D9F78: ; 0x021D9F78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x8c + mov r6, r1 + mov r1, #0 + mov r2, #0x94 + mov r4, r0 + bl MI_CpuFill8 + ldr r3, [r6] + ldr r5, [r6, #4] + mov r0, #0 + cmp r5, r0 + cmpeq r3, r0 + beq _021D9FC4 + ldr r2, _021DA218 ; =0x0220C094 + mov r0, r4 + mov r1, #0xe + str r5, [sp] + bl OS_SNPrintf + b _021D9FE0 +_021D9FC4: + ldr r3, [r6, #8] + ldr r5, [r6, #0xc] + ldr r2, _021DA218 ; =0x0220C094 + mov r0, r4 + mov r1, #0xe + str r5, [sp] + bl OS_SNPrintf +_021D9FE0: + ldrh r3, [r6, #0x10] + ldr r2, _021DA21C ; =0x0220C09C + add r0, r4, #0xe + mov r1, #7 + bl OS_SNPrintf + ldr r0, _021DA220 ; =0x027FFE0C + ldrb r0, [r0] + cmp r0, #0 + bne _021DA008 + bl OS_Terminate +_021DA008: + ldr r0, _021DA220 ; =0x027FFE0C + add r1, r4, #0x15 + mov r2, #4 + bl MI_CpuCopy8 + ldr r0, _021DA224 ; =0x027FFE10 + ldrb r0, [r0] + cmp r0, #0 + bne _021DA02C + bl OS_Terminate +_021DA02C: + ldr r0, _021DA224 ; =0x027FFE10 + add r1, r4, #0x1a + mov r2, #2 + bl MI_CpuCopy8 + mov r1, #0x30 + add r0, sp, #0x16 + strb r1, [r4, #0x1d] + bl OS_GetMacAddress + ldr r5, _021DA228 ; =0x0220C0A4 + add r7, sp, #0x16 + add r6, r4, #0x1f + mov r8, #0 +_021DA05C: + ldrb r2, [r7] + mov r0, r6 + mov r1, r5 + bl OS_SPrintf + add r8, r8, #1 + cmp r8, #6 + add r7, r7, #1 + add r6, r6, #2 + blt _021DA05C + add r0, sp, #0x38 + bl OS_GetOwnerInfo + ldrb r0, [sp, #0x38] + ldr r2, _021DA228 ; =0x0220C0A4 + mov r1, #3 + cmp r0, #6 + movhi r0, #1 + strhib r0, [sp, #0x38] + ldrb r3, [sp, #0x38] + add r0, r4, #0x2c + bl OS_SNPrintf + add r0, sp, #0x3c + add r1, r4, #0x7e + mov r2, #0x14 + bl MI_CpuCopy8 + ldrb r1, [sp, #0x3b] + ldr r2, _021DA22C ; =0x0220C0AC + add r0, r4, #0x2f + str r1, [sp] + ldrb r3, [sp, #0x3a] + mov r1, #5 + bl OS_SNPrintf + add r0, sp, #0x1c + bl RTC_GetDate + cmp r0, #0 + bne _021DA0F8 + add r0, sp, #0x2c + bl RTC_GetTime + cmp r0, #0 + beq _021DA104 +_021DA0F8: + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA104: + ldr r0, [sp, #0x20] + ldr r2, _021DA230 ; =0x0220C0B8 + str r0, [sp] + ldr r1, [sp, #0x24] + add r0, r4, #0x34 + str r1, [sp, #4] + ldr r3, [sp, #0x2c] + mov r1, #0xd + str r3, [sp, #8] + ldr r3, [sp, #0x30] + str r3, [sp, #0xc] + ldr r3, [sp, #0x34] + str r3, [sp, #0x10] + ldr r3, [sp, #0x1c] + bl OS_SNPrintf + bl OS_DisableInterrupts + mov sb, r0 + bl FUN_020A8850 + mov r8, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r8, #0 + bne _021DA174 + mov r0, sb + bl OS_RestoreInterrupts + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA174: + add r7, r4, #0x41 + mov r6, #0 + ldr r5, _021DA228 ; =0x0220C0A4 +_021DA180: + ldrb r2, [r8, r6] + mov r0, r7 + mov r1, r5 + bl OS_SPrintf + add r6, r6, #1 + cmp r6, #6 + add r7, r7, #2 + blt _021DA180 + bl FUN_021EBAB8 + mov r3, r0 + ldr r2, _021DA234 ; =0x0220C0D4 + add r0, r4, #0x6f + mov r1, #0xe + bl OS_SNPrintf + add r0, sp, #0x14 + bl FUN_020A87E0 + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DA1E8 + mov r0, sb + bl OS_RestoreInterrupts + add sp, sp, #0x8c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DA1E8: + mov r0, r5 + add r1, r4, #0x72 + bl FUN_021EE5F4 + mov r0, r5 + add r1, r4, #0x4e + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, sb + bl OS_RestoreInterrupts + mov r0, #1 + add sp, sp, #0x8c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021DA218: .word 0x0220C094 +_021DA21C: .word 0x0220C09C +_021DA220: .word 0x027FFE0C +_021DA224: .word 0x027FFE10 +_021DA228: .word 0x0220C0A4 +_021DA22C: .word 0x0220C0AC +_021DA230: .word 0x0220C0B8 +_021DA234: .word 0x0220C0D4 + + arm_func_start FUN_021DA238 +FUN_021DA238: ; 0x021DA238 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0 + bl FUN_02095EC8 + add r1, sp, #0 + mov r0, r4 + bl FUN_021D9F78 + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021DA260 +FUN_021DA260: ; 0x021DA260 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + add r0, r0, #0x1000 + mov sb, r2 + cmp sb, #0 + ldr r8, [r0, #0x14] + mov sl, r1 + mov r7, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r6, r7 + mov r5, r7 + mov fp, r7 + mov r4, r7 +_021DA298: + ldr r1, [sl, r7, lsl #3] + cmp r1, #0 + beq _021DA2B4 + ldr r0, _021DA2EC ; =0x0220C110 + mov r2, r6 + blx r8 + str r5, [sl, r7, lsl #3] +_021DA2B4: + add r0, sl, r7, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _021DA2D8 + ldr r0, _021DA2F0 ; =0x0220C12C + mov r2, fp + blx r8 + add r0, sl, r7, lsl #3 + str r4, [r0, #4] +_021DA2D8: + add r7, r7, #1 + cmp r7, sb + blt _021DA298 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DA2EC: .word 0x0220C110 +_021DA2F0: .word 0x0220C12C + + arm_func_start FUN_021DA2F4 +FUN_021DA2F4: ; 0x021DA2F4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl FUN_021DA388 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + cmp r0, r5 + movge r0, #0 + ldmgeia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + bl strcpy + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DA334 +FUN_021DA334: ; 0x021DA334 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r2 + mov r5, r3 + bl FUN_021DA388 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl strlen + mov r1, r0 + mov r0, r4 + mov r2, r6 + mov r3, r5 + bl FUN_021DD36C + mvn r1, #0 + cmp r0, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, r5 + ldmhsia sp!, {r4, r5, r6, pc} + mov r1, #0 + strb r1, [r6, r0] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DA388 +FUN_021DA388: ; 0x021DA388 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, #0 +_021DA398: + add r0, r6, r4, lsl #3 + add r0, r0, #0x1000 + ldr r1, [r0, #0xa34] + cmp r1, #0 + beq _021DA3D4 + mov r0, r5 + bl strcmp + cmp r0, #0 + addeq r0, r6, r4, lsl #3 + addeq r0, r0, #0x1000 + ldreq r0, [r0, #0xa38] + ldmeqia sp!, {r4, r5, r6, pc} + add r4, r4, #1 + cmp r4, #0x20 + blt _021DA398 +_021DA3D4: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DA3DC +FUN_021DA3DC: ; 0x021DA3DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r2, _021DA668 ; =0x00001A34 + mov fp, r0 + add r0, fp, r2 + mov r6, r1 + mov r3, #0x20 + mov r1, #0 + mov r2, #0x100 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + bl MI_CpuFill8 + add r0, fp, #0x1000 + ldr r5, [r0, #0xa04] + ldr r1, _021DA66C ; =0x0220C148 + mov r0, r5 + bl strstr + str r0, [sp] + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r0, #4 + bl strlen + ldr r1, [sp] + add r1, r1, #4 + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, _021DA670 ; =0x0220C150 + mov r0, r5 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r8, r0, #1 + ldrsb r7, [r8, #3] + ldr r2, _021DA674 ; =0x0220C154 + mov r5, #0 + add r1, sp, #8 + mov r0, fp + mov r3, r8 + strb r5, [r8, #3] + bl FUN_021DA68C + cmp r0, #1 + addne sp, sp, #0x14 + strneb r7, [r8, #3] + movne r0, r5 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + strb r7, [r8, #3] + cmp r6, #1 + beq _021DA4C8 + ldr r1, _021DA678 ; =0x0220C160 + mov r0, r8 + mov r2, #3 + bl strncmp + cmp r0, #0 + beq _021DA4D4 +_021DA4C8: + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DA4D4: + ldr r1, _021DA67C ; =0x0220C164 + add r0, r8, #4 + bl strstr + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r0, #2 + mov r6, r5 + b _021DA580 +_021DA4FC: + ldr r1, _021DA680 ; =0x0220C168 + mov r0, sb + bl strstr + movs r7, r0 + beq _021DA598 + ldrsb sl, [r7] + add r8, r7, #2 + ldr r1, _021DA67C ; =0x0220C164 + mov r0, r8 + strb r6, [r7] + bl strstr + movs r5, r0 + streqb sl, [r7] + beq _021DA598 + ldrsb r4, [r5] + mov r0, fp + mov r2, sb + strb r6, [r5] + add r1, sp, #8 + mov r3, r8 + bl FUN_021DA68C + cmp r0, #1 + strneb sl, [r7] + addne sp, sp, #0x14 + strneb r4, [r5] + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r8 + bl strlen + strb sl, [r7] + add r0, r8, r0 + strb r4, [r5] + add sb, r0, #2 +_021DA580: + ldrsb r0, [sb] + cmp r0, #0xd + beq _021DA598 + ldrsb r0, [sb, #1] + cmp r0, #0xa + bne _021DA4FC +_021DA598: + ldr r0, [sp] + add r8, r0, #4 + ldr r0, [sp, #4] + cmp r8, r0 + bhs _021DA65C + mov r5, #0 +_021DA5B0: + ldr r1, _021DA684 ; =0x0220C16C + mov r0, r8 + bl strstr + movs sl, r0 + beq _021DA65C + ldrsb r7, [sl] + add sb, sl, #1 + ldr r1, _021DA688 ; =0x0220C170 + mov r0, sb + strb r5, [sl] + bl strstr + movs r6, r0 + bne _021DA5F4 + ldr r1, _021DA67C ; =0x0220C164 + mov r0, sb + bl strstr + mov r6, r0 +_021DA5F4: + cmp r6, #0 + ldrnesb r4, [r6] + mov r0, fp + mov r2, r8 + add r1, sp, #8 + mov r3, sb + strneb r5, [r6] + bl FUN_021DA68C + cmp r0, #1 + beq _021DA634 + strb r7, [sl] + cmp r6, #0 + add sp, sp, #0x14 + strneb r4, [r6] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DA634: + mov r0, sb + bl strlen + add r0, sb, r0 + add r8, r0, #1 + ldr r0, [sp, #4] + strb r7, [sl] + cmp r6, #0 + strneb r4, [r6] + cmp r8, r0 + blo _021DA5B0 +_021DA65C: + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DA668: .word 0x00001A34 +_021DA66C: .word 0x0220C148 +_021DA670: .word 0x0220C150 +_021DA674: .word 0x0220C154 +_021DA678: .word 0x0220C160 +_021DA67C: .word 0x0220C164 +_021DA680: .word 0x0220C168 +_021DA684: .word 0x0220C16C +_021DA688: .word 0x0220C170 + + arm_func_start FUN_021DA68C +FUN_021DA68C: ; 0x021DA68C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + ldr r4, [r8, #8] + ldr r1, [r8, #4] + add r0, r0, #0x1000 + cmp r4, r1 + ldr r5, [r0, #0x10] + ldr r4, [r0, #0x14] + mov r7, r2 + mov r6, r3 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + bl strlen + mov r1, r0 + ldr r0, _021DA7D8 ; =0x0220C174 + add r1, r1, #1 + blx r5 + ldr r2, [r8] + ldr r1, [r8, #8] + str r0, [r2, r1, lsl #3] + ldr r3, [r8, #8] + ldr r2, [r8] + ldr r0, [r2, r3, lsl #3] + cmp r0, #0 + beq _021DA770 + mov r0, r6 + bl strlen + mov r1, r0 + ldr r0, _021DA7DC ; =0x0220C194 + add r1, r1, #1 + blx r5 + ldr r2, [r8] + ldr r1, [r8, #8] + add r1, r2, r1, lsl #3 + str r0, [r1, #4] + ldr r3, [r8, #8] + ldr r2, [r8] + mov r1, r3, lsl #3 + add r0, r2, r3, lsl #3 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021DA770 + ldr r0, [r2, r1] + mov r1, r7 + bl strcpy + ldr r2, [r8] + ldr r0, [r8, #8] + mov r1, r6 + add r0, r2, r0, lsl #3 + ldr r0, [r0, #4] + bl strcpy + ldr r1, [r8, #8] + mov r0, #1 + add r1, r1, #1 + str r1, [r8, #8] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021DA770: + ldr r1, [r2, r3, lsl #3] + cmp r1, #0 + beq _021DA798 + ldr r0, _021DA7E0 ; =0x0220C1B4 + mov r2, #0 + blx r4 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + str r2, [r1, r0, lsl #3] +_021DA798: + ldr r1, [r8] + ldr r0, [r8, #8] + add r0, r1, r0, lsl #3 + ldr r1, [r0, #4] + cmp r1, #0 + beq _021DA7D0 + ldr r0, _021DA7E4 ; =0x0220C1D0 + mov r2, #0 + blx r4 + ldr r1, [r8] + ldr r0, [r8, #8] + mov r2, #0 + add r0, r1, r0, lsl #3 + str r2, [r0, #4] +_021DA7D0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DA7D8: .word 0x0220C174 +_021DA7DC: .word 0x0220C194 +_021DA7E0: .word 0x0220C1B4 +_021DA7E4: .word 0x0220C1D0 + + arm_func_start FUN_021DA7E8 +FUN_021DA7E8: ; 0x021DA7E8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r0 + mov r0, r6 + mov r4, #0 + bl strlen + cmp r0, #0x100 + movhs r0, r4 + ldmhsia sp!, {r4, r5, r6, pc} + ldr r0, _021DA934 ; =0x00001024 + mov r1, r6 + add r0, r5, r0 + mov r2, #0x100 + bl strncpy + mov r0, r6 + bl strlen + ldr r1, _021DA934 ; =0x00001024 + mov r6, r0 + add r0, r5, r1 + bl strlen + cmp r6, r0 + movne r0, r4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _021DA934 ; =0x00001024 + ldr r1, _021DA938 ; =0x0220C1EC + add r0, r5, r0 + bl strstr + cmp r0, #0 + beq _021DA884 + ldr r0, _021DA93C ; =0x0000102B + add r1, r5, #0x1000 + add r0, r5, r0 + str r0, [r1, #0x124] + mov r0, r4 + str r0, [r1, #0x12c] + add r0, r5, #0x1100 + mov r1, #0x50 + strh r1, [r0, #0x30] + b _021DA8C0 +_021DA884: + ldr r0, _021DA934 ; =0x00001024 + ldr r1, _021DA940 ; =0x0220C1F4 + add r0, r5, r0 + bl strstr + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r1, r0, #8 + add r0, r5, #0x1000 + str r1, [r0, #0x124] + mov r2, #1 + ldr r1, _021DA944 ; =0x000001BB + str r2, [r0, #0x12c] + add r0, r5, #0x1100 + strh r1, [r0, #0x30] +_021DA8C0: + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _021DA948 ; =0x0220C200 + bl strstr + cmp r0, #0 + movne r1, #0 + strneb r1, [r0] + addne r4, r0, #1 + add r0, r5, #0x1000 + ldr r0, [r0, #0x124] + ldr r1, _021DA94C ; =0x0220C204 + bl strstr + cmp r0, #0 + addeq r0, r5, #0x1000 + moveq r1, #0 + streq r1, [r0, #0x128] + movne r1, #0 + strneb r1, [r0] + addne r1, r0, #1 + addne r0, r5, #0x1000 + strne r1, [r0, #0x128] + cmp r4, #0 + beq _021DA92C + mov r0, r4 + bl atol + add r1, r5, #0x1100 + strh r0, [r1, #0x30] +_021DA92C: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DA934: .word 0x00001024 +_021DA938: .word 0x0220C1EC +_021DA93C: .word 0x0000102B +_021DA940: .word 0x0220C1F4 +_021DA944: .word 0x000001BB +_021DA948: .word 0x0220C200 +_021DA94C: .word 0x0220C204 + + arm_func_start FUN_021DA950 +FUN_021DA950: ; 0x021DA950 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + add r0, r0, #0x1000 + mov r5, r2 + cmp r5, #0 + ldr r7, [r0, #0x14] + ldr r2, [r0, #0x10] + mov r6, r1 + addle sp, sp, #4 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r1, [r6, #0xc] + ldr r0, _021DAA08 ; =0x0220C208 + add r1, r1, r5 + blx r2 + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r2, [r6, #0xc] + mov r1, r4 + bl MI_CpuCopy8 + ldr r1, [r6] + ldr r0, _021DAA0C ; =0x0220C218 + mov r2, #0 + blx r7 + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + ldr r1, [r6, #4] + sub r0, r4, r0 + add r0, r1, r0 + str r0, [r6, #4] + ldr r1, [r6, #0xc] + mov r0, #1 + add r1, r1, r5 + str r1, [r6, #0xc] + str r4, [r6] + ldr r1, [r6, #0xc] + add r1, r4, r1 + str r1, [r6, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAA08: .word 0x0220C208 +_021DAA0C: .word 0x0220C218 + + arm_func_start FUN_021DAA10 +FUN_021DAA10: ; 0x021DAA10 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r1, [r4] + add r0, r0, #0x1000 + cmp r1, #0 + ldr r3, [r0, #0x14] + beq _021DAA38 + ldr r0, _021DAA4C ; =0x0220C218 + mov r2, #0 + blx r3 +_021DAA38: + mov r0, r4 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DAA4C: .word 0x0220C218 + + arm_func_start FUN_021DAA50 +FUN_021DAA50: ; 0x021DAA50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r2 + add r0, r0, #0x1000 + ldr r2, [r0, #0x10] + mov r4, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _021DAABC ; =0x0220C22C + mov r1, r5 + blx r2 + str r0, [r4] + ldr r0, [r4] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + str r0, [r4, #4] + str r5, [r4, #0xc] + ldr r2, [r4] + ldr r1, [r4, #0xc] + mov r0, #1 + add r1, r2, r1 + str r1, [r4, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DAABC: .word 0x0220C22C + + arm_func_start FUN_021DAAC0 +FUN_021DAAC0: ; 0x021DAAC0 + ands r1, r0, #0x8000 + bicne r0, r0, #0x8000 + bx lr + + arm_func_start FUN_021DAACC +FUN_021DAACC: ; 0x021DAACC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r2, _021DAB60 ; =0x000019F4 + mov r7, r0 + mov r6, r1 + mov r0, r6 + add r4, r7, r2 + bl strlen + mov r5, r0 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 + cmp r5, r1 + ble _021DAB34 + sub r2, r5, r1 + mov r0, r7 + mov r1, r4 + add r2, r2, #1 + bl FUN_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 +_021DAB34: + ldr r2, _021DAB64 ; =0x0220C240 + mov r3, r6 + bl OS_SNPrintf + cmp r0, r5 + ldreq r1, [r4, #4] + movne r0, #1 + addeq r0, r1, r0 + streq r0, [r4, #4] + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAB60: .word 0x000019F4 +_021DAB64: .word 0x0220C240 + + arm_func_start FUN_021DAB68 +FUN_021DAB68: ; 0x021DAB68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f0] + ldr r0, _021DAC8C ; =0x000019F4 + cmp r4, #0 + ldreq r6, _021DAC90 ; =0x0220C244 + mov r8, r2 + add r5, sl, #0x1000 + add r4, sl, r0 + ldr r0, [r5, #0x9f0] + mov r7, r3 + add fp, r0, #1 + mov r2, #0 + mov sb, r1 + ldrne r6, _021DAC94 ; =0x0220C248 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str fp, [r5, #0x9f0] + bl FUN_021DD4FC + mov r5, r0 + mov r0, r6 + bl strlen + mov fp, r0 + mov r0, sb + bl strlen + sub r1, fp, #2 + add r2, r1, r0 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + add r2, r5, r2 + sub r1, r1, r0 + cmp r2, r1 + ble _021DAC28 + sub r2, r2, r1 + mov r0, sl + mov r1, r4 + add r2, r2, #1 + bl FUN_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r4, #4] + ldr r1, [r4, #8] + sub r1, r1, r0 +_021DAC28: + mov r2, r6 + mov r3, sb + bl OS_SNPrintf + ldr r2, [r4, #4] + mov r1, r7 + add r0, r2, r0 + str r0, [r4, #4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + mov r0, r8 + sub r3, r3, r2 + sub r3, r3, #1 + bl FUN_021DD4FC + cmp r0, #0 + addlt sp, sp, #4 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r4, #4] + mov r0, #0 + add r1, r1, r5 + str r1, [r4, #4] + ldr r1, [r4, #4] + strb r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DAC8C: .word 0x000019F4 +_021DAC90: .word 0x0220C244 +_021DAC94: .word 0x0220C248 + + arm_func_start FUN_021DAC98 +FUN_021DAC98: ; 0x021DAC98 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r6, r2 + mov r8, r0 + ldr r2, _021DAD7C ; =0x000019F4 + mov r0, r6 + mov r7, r1 + add r5, r8, r2 + bl strlen + mov r4, r0 + ldr r0, _021DAD80 ; =0x0220C250 + bl strlen + mov sb, r0 + mov r0, r7 + bl strlen + sub r1, sb, #4 + add r0, r1, r0 + add r4, r4, r0 + ldr r2, [r5, #8] + ldr r1, [r5, #4] + add r0, r4, #1 + sub r1, r2, r1 + cmp r0, r1 + ble _021DAD1C + sub r2, r4, r1 + mov r0, r8 + mov r1, r5 + add r2, r2, #1 + bl FUN_021DA950 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021DAD1C: + ldr r0, [r5] + ldr r1, _021DAD84 ; =0x0220C148 + bl strstr + add r8, r0, #2 + ldrsb sb, [r0, #2] + mov r0, r8 + bl strlen + add r2, r0, #1 + add r0, r8, r4 + mov r1, r8 + bl memmove + ldr r2, _021DAD80 ; =0x0220C250 + str r6, [sp] + mov r3, r7 + mov r0, r8 + add r1, r4, #1 + bl OS_SNPrintf + strb sb, [r8, r0] + ldr r1, [r5, #4] + mov r0, #0 + add r1, r1, r4 + str r1, [r5, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021DAD7C: .word 0x000019F4 +_021DAD80: .word 0x0220C250 +_021DAD84: .word 0x0220C148 + + arm_func_start FUN_021DAD88 +FUN_021DAD88: ; 0x021DAD88 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r0 + add r0, r7, #0x1000 + ldr r1, [r0, #8] + ldr r0, _021DAE40 ; =0x000019F4 + cmp r1, #0 + ldreq r6, _021DAE44 ; =0x0220C25C + add r5, r7, r0 + add r0, r7, #0x1000 + ldrne r6, _021DAE48 ; =0x0220C2B0 + ldr r0, [r0, #0x124] + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + add r1, r7, #0x1000 + mov r8, r0 + ldr r0, [r1, #0x128] + bl strlen + sub r1, r8, #4 + add r0, r1, r0 + add r1, r4, r0 + ldr r0, _021DAE40 ; =0x000019F4 + add r2, r1, #0x400 + add r1, r7, r0 + mov r0, r7 + bl FUN_021DAA50 + cmp r0, #1 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r3, r7, #0x1000 + ldr r0, [r3, #0x124] + mov r2, r6 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x128] + bl OS_SNPrintf + ldr r1, [r5, #4] + add r0, r1, r0 + str r0, [r5, #4] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DAE40: .word 0x000019F4 +_021DAE44: .word 0x0220C25C +_021DAE48: .word 0x0220C2B0 + + arm_func_start FUN_021DAE4C +FUN_021DAE4C: ; 0x021DAE4C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + add r1, r5, #0x1000 + ldr r4, [r1, #0x14] + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021DAF00 ; =0x00001A34 + mov r2, #0x20 + add r1, r5, r1 + bl FUN_021DA260 + ldr r1, _021DAF04 ; =0x00001A04 + mov r0, r5 + add r1, r5, r1 + bl FUN_021DAA10 + ldr r1, _021DAF08 ; =0x000019F4 + mov r0, r5 + add r1, r5, r1 + bl FUN_021DAA10 + add r0, r5, #0x1000 + ldr r1, [r0, #0x9c8] + cmp r1, #0 + beq _021DAEC0 + ldr r0, _021DAF0C ; =0x0220C2D0 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9c8] +_021DAEC0: + add r0, r5, #0x1000 + ldr r1, [r0, #0x9cc] + cmp r1, #0 + beq _021DAEE8 + ldr r0, _021DAF10 ; =0x0220C2E8 + mov r2, #0 + blx r4 + add r0, r5, #0x1000 + mov r1, #0 + str r1, [r0, #0x9cc] +_021DAEE8: + ldr r2, _021DAF14 ; =0x00001C10 + mov r0, r5 + mov r1, #0 + bl MI_CpuFill8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DAF00: .word 0x00001A34 +_021DAF04: .word 0x00001A04 +_021DAF08: .word 0x000019F4 +_021DAF0C: .word 0x0220C2D0 +_021DAF10: .word 0x0220C2E8 +_021DAF14: .word 0x00001C10 + + arm_func_start FUN_021DAF18 +FUN_021DAF18: ; 0x021DAF18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + add r0, sl, #0x1000 + ldr fp, [r0, #0x1c] + ldr r0, _021DB224 ; =0x00001134 + ldr r1, _021DB228 ; =0x00001198 + ldr r2, _021DB22C ; =0x00001A04 + add r8, sl, r0 + cmp fp, #0 + mov r0, sl + add r6, sl, r1 + add r7, sl, r2 + mov r5, #0 + ldrle fp, _021DB230 ; =0x0000EA60 + bl FUN_021DB35C + mov r0, sl + bl FUN_021DB348 + movs r4, r0 + addeq r0, sl, #0x1000 + moveq r1, #2 + streq r1, [r0, #0x20] + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_0209CB44 + add r0, sl, #0x1000 + ldr r0, [r0, #0x12c] + cmp r0, #1 + bne _021DAFC8 + mov r0, r6 + mov r1, #0 + mov r2, #0x830 + bl MI_CpuFill8 + ldr r1, _021DB234 ; =FUN_021DAAC0 + add r0, sl, #0x1000 + str r1, [r6, #0x810] + ldr r1, [r0, #0x124] + ldr r0, _021DB238 ; =0x0220C0E4 + str r1, [r6, #0x800] + mov r1, #0xb + str r6, [r8, #0xc] + bl FUN_020A3688 + mov r0, #1 + bl FUN_020A02EC +_021DAFC8: + add r0, sl, #0x1100 + ldrh r1, [r0, #0x30] + mov r2, r4 + mov r0, #0 + bl FUN_0209CB78 + bl FUN_0209C934 + cmp r0, #0 + beq _021DB004 + add r0, sl, #0x1000 + mov r1, #3 + str r1, [r0, #0x20] + bl FUN_0209CB24 + bl FUN_0209CC10 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DB004: + add r0, sl, #0x1000 + ldr r4, [r0, #0x9f4] + mov r0, r4 + bl strlen + mov r1, r0 + mov r0, r4 + bl FUN_0209C030 + cmp r0, #0 + str r0, [sp, #8] + addle r0, sl, #0x1000 + movle r1, #5 + strle r1, [r0, #0x20] + ble _021DB20C + bl FUN_0209BF4C + mov r0, sl + bl FUN_021DB3B8 + cmp r0, #0 + addeq r0, sl, #0x1000 + moveq r1, #7 + streq r1, [r0, #0x20] + beq _021DB20C + ldr r0, [r7] + str r0, [r7, #4] + ldr r1, [r7] + ldr r0, [r7, #0xc] + add r0, r1, r0 + str r0, [r7, #8] + bl OS_GetTick + mov r6, r0 + mov r0, fp, asr #0x1f + mov r8, r1 + str r0, [sp, #4] + mov r4, #0 +_021DB088: + ldr r0, _021DB23C ; =0x021C8F04 + ldr r0, [r0] + cmp r0, #0 + addeq r0, sl, #0x1000 + moveq r1, #5 + streq r1, [r0, #0x20] + beq _021DB20C + bl FUN_0209BF9C + str r0, [sp, #8] + cmp r0, #0 + blt _021DB1E8 + cmp r0, #0 + ble _021DB16C + bl OS_GetTick + mov r6, r0 + add r0, sp, #8 + mov r8, r1 + bl FUN_0209C638 + cmp r0, #0 + beq _021DB1E8 + ldr r2, [r7, #8] + ldr r1, [r7, #4] + sub r2, r2, #1 + ldr sb, [sp, #8] + sub r2, r2, r1 + cmp sb, r2 + movge sb, r2 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, [r7, #4] + cmp r5, #1 + add r0, r0, sb + str r0, [r7, #4] + ldr r0, [r7, #4] + strb r4, [r0] + bne _021DB144 + ldr r0, _021DB240 ; =0x00001A14 + add r0, sl, r0 + bl OS_LockMutex + add r1, sl, #0x1000 + ldr r2, [r1, #0xa30] + ldr r0, _021DB240 ; =0x00001A14 + add r2, r2, sb + add r0, sl, r0 + str r2, [r1, #0xa30] + bl OS_UnlockMutex + b _021DB150 +_021DB144: + mov r0, sl + bl FUN_021DB248 + mov r5, r0 +_021DB150: + ldr r0, [sp, #8] + cmp r0, sb + bls _021DB164 + bl FUN_0209C52C + b _021DB1E8 +_021DB164: + mov r0, sb + bl FUN_0209C52C +_021DB16C: + add r0, sl, #0x1000 + ldr r1, [r0, #0xa2c] + cmp r1, #0 + blt _021DB188 + ldr r0, [r0, #0xa30] + cmp r0, r1 + bge _021DB1E8 +_021DB188: + bl OS_GetTick + subs r2, r0, r6 + sbc r0, r1, r8 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021DB244 ; =0x000082EA + mov r3, r4 + bl _ll_udiv + ldr r2, [sp, #4] + cmp r1, r2 + cmpeq r0, fp + addhi r0, sl, #0x1000 + movhi r1, #6 + strhi r1, [r0, #0x20] + bhi _021DB20C + mov r0, sl + bl FUN_021DB3B8 + cmp r0, #0 + bne _021DB088 + add r0, sl, #0x1000 + mov r1, #7 + str r1, [r0, #0x20] + b _021DB20C +_021DB1E8: + bl FUN_0209C840 + bl FUN_0209C7AC + bl FUN_0209CB24 + bl FUN_0209CC10 + add r0, sl, #0x1000 + mov r1, #8 + str r1, [r0, #0x20] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DB20C: + bl FUN_0209C840 + bl FUN_0209C7AC + bl FUN_0209CB24 + bl FUN_0209CC10 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DB224: .word 0x00001134 +_021DB228: .word 0x00001198 +_021DB22C: .word 0x00001A04 +_021DB230: .word 0x0000EA60 +_021DB234: .word FUN_021DAAC0 +_021DB238: .word 0x0220C0E4 +_021DB23C: .word 0x021C8F04 +_021DB240: .word 0x00001A14 +_021DB244: .word 0x000082EA + + arm_func_start FUN_021DB248 +FUN_021DB248: ; 0x021DB248 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + add r0, r5, #0x1000 + ldr r6, [r0, #0xa04] + ldr r2, _021DB334 ; =0x00001A04 + ldr r1, _021DB338 ; =0x0220C148 + mov r0, r6 + add r4, r5, r2 + bl strstr + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r1, _021DB338 ; =0x0220C148 + mov r0, r6 + bl strstr + ldr r1, _021DB33C ; =0x00001A14 + add r6, r0, #4 + add r0, r5, r1 + bl OS_LockMutex + ldr r0, [r4, #4] + ldr r1, _021DB33C ; =0x00001A14 + sub r2, r0, r6 + add r0, r5, #0x1000 + str r2, [r0, #0xa30] + add r0, r5, r1 + bl OS_UnlockMutex + ldr r0, [r4] + ldr r1, _021DB340 ; =0x0220C300 + bl strstr + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DB340 ; =0x0220C300 + bl strlen + add r7, r4, r0 + ldr r1, _021DB344 ; =0x0220C164 + mov r0, r7 + bl strstr + mov r4, r0 + ldr r0, _021DB33C ; =0x00001A14 + ldrsb r6, [r4] + mov r1, #0 + add r0, r5, r0 + strb r1, [r4] + bl OS_LockMutex + mov r0, r7 + bl atol + add r1, r5, #0x1000 + ldr r2, _021DB33C ; =0x00001A14 + str r0, [r1, #0xa2c] + add r0, r5, r2 + bl OS_UnlockMutex + strb r6, [r4] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DB334: .word 0x00001A04 +_021DB338: .word 0x0220C148 +_021DB33C: .word 0x00001A14 +_021DB340: .word 0x0220C300 +_021DB344: .word 0x0220C164 + + arm_func_start FUN_021DB348 +FUN_021DB348: ; 0x021DB348 + ldr ip, _021DB358 ; =0x0209AB80 + add r0, r0, #0x1000 + ldr r0, [r0, #0x124] + bx ip + .align 2, 0 +_021DB358: .word 0x0209AB80 + + arm_func_start FUN_021DB35C +FUN_021DB35C: ; 0x021DB35C + stmdb sp!, {r4, lr} + ldr r1, _021DB3AC ; =0x00001134 + mov r4, r0 + add r0, r4, r1 + mov r1, #0 + mov r2, #0x64 + bl MI_CpuFill8 + ldr r0, _021DB3B0 ; =0x00000B68 + add r1, r4, #0x1000 + str r0, [r1, #0x170] + ldr r3, [r1, #0x9c8] + ldr r0, _021DB3AC ; =0x00001134 + ldr r2, _021DB3B4 ; =0x000005EA + str r3, [r1, #0x174] + str r2, [r1, #0x17c] + ldr r2, [r1, #0x9cc] + add r0, r4, r0 + str r2, [r1, #0x180] + bl FUN_0209CC28 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB3AC: .word 0x00001134 +_021DB3B0: .word 0x00000B68 +_021DB3B4: .word 0x000005EA + + arm_func_start FUN_021DB3B8 +FUN_021DB3B8: ; 0x021DB3B8 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldr r0, [r0, #0x12c] + cmp r0, #1 + bne _021DB3EC + ldr r0, _021DB438 ; =0x000019D0 + add r0, r4, r0 + bl OS_GetLowEntropyData + ldr r0, _021DB438 ; =0x000019D0 + mov r1, #0x20 + add r0, r4, r0 + bl FUN_020A136C +_021DB3EC: + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_LockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xc0c] + cmp r0, #1 + bne _021DB41C + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_UnlockMutex + mov r0, #0 + ldmia sp!, {r4, pc} +_021DB41C: + ldr r0, _021DB43C ; =0x00001BF4 + add r0, r4, r0 + bl OS_UnlockMutex + mov r0, #0xa + bl OS_Sleep + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB438: .word 0x000019D0 +_021DB43C: .word 0x00001BF4 + + arm_func_start FUN_021DB440 +FUN_021DB440: ; 0x021DB440 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldrb r0, [r0] + cmp r0, #0xff + ldmneia sp!, {r4, pc} + ldr r0, _021DB49C ; =0x00001BF4 + add r0, r4, r0 + bl OS_LockMutex + ldr r0, _021DB49C ; =0x00001BF4 + add r1, r4, #0x1000 + mov r2, #1 + add r0, r4, r0 + str r2, [r1, #0xc0c] + bl OS_UnlockMutex + add r0, r4, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _021DB4A0 ; =0x00001B34 + add r0, r4, r0 + bl OS_JoinThread + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB49C: .word 0x00001BF4 +_021DB4A0: .word 0x00001B34 + + arm_func_start FUN_021DB4A4 +FUN_021DB4A4: ; 0x021DB4A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r3, _021DB55C ; =0x00001BF4 + mov r5, r0 + add r2, r5, #0x1000 + mov ip, #0 + add r0, r5, r3 + mov r4, r1 + str ip, [r2, #0xc0c] + bl OS_InitMutex + ldr r0, _021DB560 ; =0x00001A14 + add r0, r5, r0 + bl OS_InitMutex + add r0, r5, #0x1000 + ldr r0, [r0, #0x18] + cmp r0, #1 + ldreq r0, _021DB564 ; =0x02210480 + moveq r1, #1 + streq r1, [r0] + ldrne r0, _021DB564 ; =0x02210480 + movne r1, #0 + strne r1, [r0] + add r0, r5, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DB524 + ldr r0, _021DB568 ; =0x00001B34 + add r0, r5, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, pc} +_021DB524: + ldr r0, _021DB568 ; =0x00001B34 + mov r1, #0x1000 + str r1, [sp] + ldr r1, _021DB56C ; =FUN_021DAF18 + mov r2, r5 + add r0, r5, r0 + add r3, r5, #0x1000 + str r4, [sp, #4] + bl OS_CreateThread + ldr r0, _021DB568 ; =0x00001B34 + add r0, r5, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DB55C: .word 0x00001BF4 +_021DB560: .word 0x00001A14 +_021DB564: .word 0x02210480 +_021DB568: .word 0x00001B34 +_021DB56C: .word FUN_021DAF18 + + arm_func_start FUN_021DB570 +FUN_021DB570: ; 0x021DB570 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _021DB5F4 ; =0x0220C314 + ldr r2, _021DB5F8 ; =0x0220C320 + mov r4, r0 + bl FUN_021DAC98 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + add r0, r4, #0x1000 + ldr r0, [r0, #0x9f4] + ldr r1, _021DB5FC ; =0x0220C148 + bl strstr + add r0, r0, #4 + bl strlen + movs r3, r0 + beq _021DB5E8 + ldr r2, _021DB600 ; =0x0220C328 + add r0, sp, #0 + mov r1, #7 + bl OS_SNPrintf + ldr r1, _021DB604 ; =0x0220C32C + add r2, sp, #0 + mov r0, r4 + bl FUN_021DAC98 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_021DB5E8: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB5F4: .word 0x0220C314 +_021DB5F8: .word 0x0220C320 +_021DB5FC: .word 0x0220C148 +_021DB600: .word 0x0220C328 +_021DB604: .word 0x0220C32C + + arm_func_start FUN_021DB608 +FUN_021DB608: ; 0x021DB608 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r2, _021DB714 ; =0x00001C10 + mov r6, r0 + ldr r4, [r5, #0xc] + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DB718 ; =0x00001004 + add r0, r6, #0x1000 + mvn r2, #0 + str r2, [r0, #0xa2c] + mov lr, r5 + str r2, [r0, #0xa30] + add ip, r6, r1 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _021DB71C ; =0x0220C33C + ldr r1, _021DB720 ; =0x00000B68 + blx r4 + add r1, r6, #0x1000 + str r0, [r1, #0x9c8] + ldr r0, [r1, #0x9c8] + cmp r0, #0 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021DB724 ; =0x0220C354 + ldr r1, _021DB728 ; =0x000005EA + blx r4 + add r2, r6, #0x1000 + str r0, [r2, #0x9cc] + ldr r0, [r2, #0x9cc] + cmp r0, #0 + moveq r0, #1 + streq r0, [r2, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _021DB72C ; =0x00001A04 + ldr r2, [r2, #0xc] + mov r0, r6 + add r1, r6, r1 + bl FUN_021DAA50 + cmp r0, #0 + addeq r1, r6, #0x1000 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5] + mov r0, r6 + bl FUN_021DA7E8 + cmp r0, #0 + addeq r1, r6, #0x1000 + moveq r0, #1 + streq r0, [r1, #0x20] + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl FUN_021DAD88 + add r1, r6, #0x1000 + str r0, [r1, #0x20] + ldr r0, [r1, #0x20] + cmp r0, #0 + moveq r0, #0xff + streqb r0, [r1] + add r0, r6, #0x1000 + ldr r0, [r0, #0x20] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DB714: .word 0x00001C10 +_021DB718: .word 0x00001004 +_021DB71C: .word 0x0220C33C +_021DB720: .word 0x00000B68 +_021DB724: .word 0x0220C354 +_021DB728: .word 0x000005EA +_021DB72C: .word 0x00001A04 + + arm_func_start FUN_021DB730 +FUN_021DB730: ; 0x021DB730 + stmdb sp!, {r4, lr} + ldr r2, _021DB770 ; =0x02210484 + ldr r1, _021DB774 ; =0x000011DC + ldr r2, [r2] + mov r4, r0 + add r0, r2, r1 + bl OS_LockMutex + ldr r2, _021DB770 ; =0x02210484 + ldr r1, _021DB774 ; =0x000011DC + ldr r0, [r2] + add r0, r0, #0x1000 + str r4, [r0] + ldr r0, [r2] + add r0, r0, r1 + bl OS_UnlockMutex + ldmia sp!, {r4, pc} + .align 2, 0 +_021DB770: .word 0x02210484 +_021DB774: .word 0x000011DC + + arm_func_start FUN_021DB778 +FUN_021DB778: ; 0x021DB778 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2d4 + ldr r5, _021DC670 ; =0x02210484 + mov r0, #0 + str r0, [sp] + ldr r0, [r5] + ldr r7, [sp] + add r0, r0, #0x1000 + ldr sb, [r0, #0x108] + ldr r8, [r0, #0x10c] + mov r0, r7 + str r0, [sp, #8] + str r0, [sp, #0x1c] + mvn r0, #2 + str r0, [sp, #0x20] + mov r0, r7 + str r0, [sp, #0x24] + mvn r0, #3 + str r0, [sp, #0x28] + mov r0, r7 + str r0, [sp, #0x2c] + mov r0, #0x1000 + str r0, [sp, #0x14] + mov r0, #5 + str r0, [sp, #0x30] + mov r0, r7 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + mov r0, #4 + str r0, [sp, #0x40] + mov r0, r7 + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + str r0, [sp, #0x50] + str r0, [sp, #0x58] + str r0, [sp, #0x54] + mvn r0, #4 + str r0, [sp, #0x5c] + mov r0, r7 + str r0, [sp, #0x60] + mvn r0, #1 + ldr r4, _021DC674 ; =0x02210490 + mov r6, #1 + str r0, [sp, #0x18] +_021DB830: + ldr r0, _021DC678 ; =0x02210494 + ldr r1, [sp, #0x14] + str r6, [r0, #4] + str r1, [r0, #8] + ldr r1, _021DC67C ; =0x00004E20 + str sb, [r0, #0xc] + str r1, [r0, #0x18] + str r8, [r0, #0x10] + ldr r0, _021DC680 ; =0x0220C36C + ldr r1, [r5] + ldr r2, [r0] + ldr r0, _021DC678 ; =0x02210494 + add r1, r1, #0x1000 + str r2, [r0] + ldr r0, [sp, #0x18] + str r0, [r1, #4] + ldr r0, [r4] + ldr r1, _021DC678 ; =0x02210494 + bl FUN_021DB608 + cmp r0, #0 + beq _021DB89C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DB89C: + ldr r0, [r4] + bl FUN_021DB570 + cmp r0, #0 + beq _021DB8C4 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DB8C4: + ldr r0, _021DC684 ; =0x021D3498 + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl FUN_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DB8FC + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DB8FC: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DB91C + cmp r1, #8 + beq _021DB948 + b _021DB930 +_021DB91C: + ldr r0, _021DC670 ; =0x02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DB930: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #3 + bl FUN_021DB730 + b _021DC614 +_021DB948: + ldr r1, [sp, #0x1c] + bl FUN_021DA3DC + cmp r0, #1 + beq _021DB970 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DB970: + ldr r0, [r4] + ldr r1, _021DC68C ; =0x0220C418 + bl FUN_021DA388 + bl atol + mov sl, r0 + ldr r0, _021DC690 ; =0x021D74A8 + ldr r0, [r0] + cmp r0, #0x22 + bne _021DB9A0 + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DB9A0: + cmp sl, #0xc8 + beq _021DBCB4 + ldr r0, _021DC694 ; =0x0000012E + cmp sl, r0 + bne _021DBC9C + ldr r0, _021DC698 ; =0x0221048C + str r6, [r0] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _021DBC0C + ldr r1, _021DC674 ; =0x02210490 + mvn r2, #5 + str r2, [r0, #4] + ldr r0, [r1] + bl FUN_021DAE4C + ldr r2, _021DC678 ; =0x02210494 + ldr r0, _021DC69C ; =0x0220BEB4 + ldr r3, _021DC67C ; =0x00004E20 + ldr r0, [r0] + mov r5, #0 + mov r4, #0x200 + ldr r1, _021DC6A0 ; =0x0220C424 + str r0, [r2] + str r5, [r2, #4] + str r4, [r2, #8] + str sb, [r2, #0xc] + str r8, [r2, #0x10] + str r3, [r2, #0x18] + bl strcmp + cmp r0, #0 + ldrne r0, _021DC678 ; =0x02210494 + movne r1, #1 + strne r1, [r0, #0x14] + ldr r0, _021DC674 ; =0x02210490 + ldr r1, _021DC678 ; =0x02210494 + ldr r0, [r0] + bl FUN_021DB608 + cmp r0, #0 + beq _021DBA5C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DBA5C: + add r0, sp, #0x240 + bl FUN_021DA238 + cmp r0, #0 + beq _021DBA88 + ldr r0, _021DC674 ; =0x02210490 + add r1, sp, #0x240 + ldr r0, [r0] + mov r2, #1 + bl FUN_021D9C2C + cmp r0, #0 + bne _021DBAA0 +_021DBA88: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #8 + bl FUN_021DB730 + b _021DC614 +_021DBAA0: + ldr r0, _021DC674 ; =0x02210490 + ldr r1, _021DC6A4 ; =0x0220C444 + ldr r0, [r0] + ldr r2, _021DC6A8 ; =0x0220C44C + mov r3, #7 + bl FUN_021DAB68 + cmp r0, #0 + bne _021DBAF8 + ldr r0, _021DC670 ; =0x02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r4, [r0, #0x118] + mov r0, r4 + bl strlen + ldr r1, _021DC674 ; =0x02210490 + mov r3, r0 + ldr r0, [r1] + ldr r1, _021DC6AC ; =0x0220C454 + mov r2, r4 + bl FUN_021DAB68 + cmp r0, #0 + beq _021DBB10 +_021DBAF8: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #8 + bl FUN_021DB730 + b _021DC614 +_021DBB10: + ldr r1, _021DC670 ; =0x02210484 + ldr r0, _021DC6B0 ; =0x0220C464 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0x1000 + ldr r1, [r1, #0x118] + blx r8 + ldr r0, _021DC670 ; =0x02210484 + mov r2, #0 + ldr r0, [r0] + ldr r1, _021DC674 ; =0x02210490 + add r0, r0, #0x1000 + str r2, [r0, #0x118] + ldr r0, [r1] + bl FUN_021DB570 + cmp r0, #0 + beq _021DBB6C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DBB6C: + ldr r0, _021DC684 ; =0x021D3498 + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r2, _021DC674 ; =0x02210490 + sub r1, r0, #1 + ldr r0, [r2] + bl FUN_021DB4A4 + ldr r0, _021DC674 ; =0x02210490 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DBBAC + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DBBAC: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DBBD0 + cmp r1, #8 + beq _021DBBFC + b _021DBBE4 +_021DBBD0: + ldr r0, _021DC670 ; =0x02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DBBE4: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #3 + bl FUN_021DB730 + b _021DC614 +_021DBBFC: + bl FUN_021DAE4C + mov r0, #7 + bl FUN_021DB730 + b _021DC614 +_021DBC0C: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr fp, [r1, #0xa04] + cmp fp, #0 + bne _021DBC30 + bl FUN_021DAE4C + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DBC30: + mov r0, fp + bl strlen + add r1, r0, #1 + ldr r0, _021DC6B4 ; =0x0220C394 + blx sb + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x114] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x114] + str r0, [sp, #0xc] + cmp r0, #0 + bne _021DBC80 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #4 + bl FUN_021DB730 + b _021DC614 +_021DBC80: + mov r0, fp + bl strlen + mov r2, r0 + ldr r0, [sp, #0xc] + mov r1, fp + bl strncpy + b _021DBCB4 +_021DBC9C: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #0xa + bl FUN_021DB730 + b _021DC614 +_021DBCB4: + ldr r0, [r4] + bl FUN_021DAE4C + add r0, sp, #0x68 + bl FUN_02095EC8 + ldr r2, [sp, #0x68] + ldr r1, [sp, #0x6c] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + bne _021DBDEC + ldr r1, [r5] + ldr r0, _021DC6B8 ; =0x022104B0 + add r2, r1, #0x1000 + ldr r1, [sp, #0x20] + str r1, [r2, #4] + ldr r2, [sp, #0x24] + mov r1, r0 + strh r2, [r1] + strb r2, [r1, #0x34] + ldr r2, [r5] + ldr r1, [r4] + add r3, r2, #0x1000 + ldr fp, [r3, #0x108] + mov r2, r0 + str fp, [r2, #0x40] + ldr r3, [r3, #0x10c] + str r3, [r2, #0x44] + bl FUN_021D9ACC + cmp r0, #0 + beq _021DBD38 + mov r0, #5 + bl FUN_021DB730 + b _021DC614 +_021DBD38: + bl FUN_021D98DC + bl FUN_021D988C + cmp r0, #0x15 + beq _021DBDE8 + bl FUN_021D988C + cmp r0, #9 + bne _021DBD6C + ldr r0, _021DC670 ; =0x02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + b _021DBDD8 +_021DBD6C: + add r0, sp, #0x7c + bl FUN_021D97F8 + ldr r0, _021DC6BC ; =0x02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DBDC4 + ldr r1, [sp, #0x7c] + ldr r0, _021DC6C0 ; =0xFFFFA4FA + cmp r1, r0 + beq _021DBDA0 + bl FUN_021D988C + cmp r0, #0xb + bne _021DBDC4 +_021DBDA0: + ldr r0, _021DC670 ; =0x02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + bl FUN_021D991C + mov r0, #0xb + bl FUN_021DB730 + b _021DC614 +_021DBDC4: + ldr r0, _021DC670 ; =0x02210484 + ldr r1, [sp, #0x7c] + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DBDD8: + bl FUN_021D991C + mov r0, #6 + bl FUN_021DB730 + b _021DC614 +_021DBDE8: + bl FUN_021D991C +_021DBDEC: + cmp sl, #0xc8 + bne _021DBE14 + ldr r0, _021DC670 ; =0x02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl FUN_021DB730 + b _021DC614 +_021DBE14: + ldr r0, [r5] + ldr r1, _021DC6A0 ; =0x0220C424 + add r2, r0, #0x1000 + ldr r0, [sp, #0x28] + str r0, [r2, #4] + ldr r0, _021DC678 ; =0x02210494 + ldr r2, [sp, #0x2c] + str sb, [r0, #0xc] + str r2, [r0, #4] + ldr r2, [sp, #0x14] + str r8, [r0, #0x10] + str r2, [r0, #8] + ldr r2, _021DC6C4 ; =0x00009C40 + str r2, [r0, #0x18] + ldr r0, _021DC69C ; =0x0220BEB4 + ldr r2, _021DC678 ; =0x02210494 + ldr r0, [r0] + str r0, [r2] + bl strcmp + cmp r0, #0 + ldrne r0, _021DC678 ; =0x02210494 + ldr r1, _021DC678 ; =0x02210494 + strne r6, [r0, #0x14] + ldr r0, [r4] + bl FUN_021DB608 + cmp r0, #0 + beq _021DBE98 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DBE98: + add r0, sp, #0x240 + bl FUN_021DA238 + cmp r0, #0 + beq _021DBEC0 + ldr r0, [r4] + add r1, sp, #0x240 + mov r2, r6 + bl FUN_021D9C2C + cmp r0, #0 + bne _021DBED8 +_021DBEC0: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #8 + bl FUN_021DB730 + b _021DC614 +_021DBED8: + ldr r0, [r4] + ldr r1, _021DC6A4 ; =0x0220C444 + ldr r2, _021DC6C8 ; =0x0220C484 + ldr r3, [sp, #0x30] + bl FUN_021DAB68 + cmp r0, #0 + bne _021DBF24 + ldr r0, [r5] + add r0, r0, #0x1000 + ldr sl, [r0, #0x114] + mov r0, sl + bl strlen + mov r3, r0 + ldr r0, [r4] + ldr r1, _021DC6CC ; =0x0220C48C + mov r2, sl + bl FUN_021DAB68 + cmp r0, #0 + beq _021DBF3C +_021DBF24: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #8 + bl FUN_021DB730 + b _021DC614 +_021DBF3C: + ldr r1, [r5] + ldr r0, _021DC6D0 ; =0x0220C3B0 + add r1, r1, #0x1000 + ldr r2, [sp, #0x34] + ldr r1, [r1, #0x114] + blx r8 + ldr r0, [r5] + add r1, r0, #0x1000 + ldr r0, [sp, #0x38] + str r0, [r1, #0x114] + ldr r0, [r4] + bl FUN_021DB570 + cmp r0, #0 + beq _021DBF8C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DBF8C: + ldr r0, _021DC684 ; =0x021D3498 + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl FUN_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DBFC4 + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DBFC4: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DC02C + cmp r1, #3 + beq _021DBFEC + cmp r1, #8 + beq _021DC058 + b _021DC040 +_021DBFEC: + bl FUN_021DAE4C + ldr r0, _021DC6BC ; =0x02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DC020 + ldr r0, _021DC670 ; =0x02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl FUN_021DB730 + b _021DC614 +_021DC020: + mov r0, #3 + bl FUN_021DB730 + b _021DC614 +_021DC02C: + ldr r0, _021DC670 ; =0x02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DC040: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #3 + bl FUN_021DB730 + b _021DC614 +_021DC058: + ldr r1, [sp, #0x3c] + bl FUN_021DA3DC + cmp r0, #1 + beq _021DC080 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DC080: + ldr r0, [r4] + ldr r1, _021DC68C ; =0x0220C418 + bl FUN_021DA388 + bl atol + mov sl, r0 + ldr r0, _021DC690 ; =0x021D74A8 + ldr r0, [r0] + cmp r0, #0x22 + bne _021DC0BC + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DC0BC: + cmp sl, #0xc8 + beq _021DC118 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + ldr r0, _021DC6BC ; =0x02210488 + ldr r0, [r0] + cmp r0, #1 + bne _021DC10C + ldr r0, _021DC694 ; =0x0000012E + cmp sl, r0 + bne _021DC10C + ldr r0, _021DC670 ; =0x02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl FUN_021DB730 + b _021DC614 +_021DC10C: + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DC118: + ldr r0, [r4] + ldr r1, _021DC6D4 ; =0x0220C494 + ldr r3, [sp, #0x40] + add r2, sp, #0x64 + bl FUN_021DA334 + cmp r0, #0 + bgt _021DC14C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC14C: + add r0, sp, #0x64 + bl atol + ldr r1, _021DC690 ; =0x021D74A8 + ldr r1, [r1] + cmp r1, #0x22 + bne _021DC17C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC17C: + ldr r1, _021DC6BC ; =0x02210488 + ldr r1, [r1] + cmp r1, #1 + bne _021DC1B4 + cmp r0, #0x72 + bne _021DC1B4 + ldr r0, _021DC670 ; =0x02210484 + mov r2, #0 + ldr r1, [r0] + mov r0, #0xb + add r1, r1, #0x1000 + str r2, [r1, #4] + bl FUN_021DB730 + b _021DC614 +_021DC1B4: + cmp r0, #0x64 + blt _021DC1D4 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #6 + bl FUN_021DB730 + b _021DC614 +_021DC1D4: + ldr r2, [sp, #0x44] + ldr r0, [r4] + ldr r1, _021DC6D8 ; =0x0220C4A0 + mov r3, r2 + bl FUN_021DA334 + mov fp, r0 + cmp fp, #0 + bgt _021DC20C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC20C: + ldr r2, [sp, #0x48] + ldr r0, [r4] + ldr r1, _021DC6DC ; =0x0220C4A4 + mov r3, r2 + bl FUN_021DA334 + str r0, [sp, #4] + cmp r0, #0 + bgt _021DC244 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC244: + ldr r2, [sp, #0x4c] + ldr r0, [r4] + ldr r1, _021DC6E0 ; =0x0220C4AC + mov r3, r2 + bl FUN_021DA334 + mov sl, r0 + ldr r0, _021DC6E4 ; =0x0220C3CC + add r1, fp, #1 + blx sb + str r0, [sp] + cmp r0, #0 + bne _021DC28C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #4 + bl FUN_021DB730 + b _021DC614 +_021DC28C: + ldr r1, [sp, #4] + ldr r0, _021DC6E8 ; =0x0220C3D8 + add r1, r1, #1 + blx sb + movs r7, r0 + bne _021DC2BC + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #4 + bl FUN_021DB730 + b _021DC614 +_021DC2BC: + cmp sl, #0 + ble _021DC2F4 + ldr r0, _021DC6EC ; =0x0220C3E8 + add r1, sl, #1 + blx sb + str r0, [sp, #8] + cmp r0, #0 + bne _021DC2F4 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #4 + bl FUN_021DB730 + b _021DC614 +_021DC2F4: + ldr r0, [r4] + ldr r1, _021DC6D8 ; =0x0220C4A0 + ldr r2, [sp] + add r3, fp, #1 + bl FUN_021DA334 + cmp r0, #0 + bge _021DC328 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC328: + ldr r1, [sp, #4] + ldr r2, [sp, #0x50] + add r3, r1, #1 + ldr r1, [sp] + strb r2, [r1, r0] + ldr r0, [r4] + ldr r1, _021DC6DC ; =0x0220C4A4 + mov r2, r7 + bl FUN_021DA334 + cmp r0, #0 + bge _021DC36C + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC36C: + ldr r1, [sp, #0x54] + cmp sl, #0 + strb r1, [r7, r0] + mov fp, r1 + ble _021DC404 + ldr r0, [r4] + ldr r1, _021DC6E0 ; =0x0220C4AC + ldr r2, [sp, #8] + add r3, sl, #1 + bl FUN_021DA334 + cmp r0, #0 + bge _021DC3B4 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC3B4: + ldr r2, [sp, #0x58] + ldr r1, [sp, #8] + strb r2, [r1, r0] + mov r0, r1 + bl atol + ldr r1, _021DC690 ; =0x021D74A8 + ldr r1, [r1] + cmp r1, #0x22 + bne _021DC3F0 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #9 + bl FUN_021DB730 + b _021DC614 +_021DC3F0: + mov r1, #0x3e8 + mul fp, r0, r1 + ldr r0, _021DC6F0 ; =0x0002BF20 + cmp fp, r0 + movgt fp, r0 +_021DC404: + ldr r0, [r4] + bl FUN_021DAE4C + ldr r0, [r5] + ldr r1, _021DC678 ; =0x02210494 + add r2, r0, #0x1000 + ldr r0, [sp, #0x5c] + str r0, [r2, #4] + mov r0, r1 + ldr r2, [sp] + str sb, [r0, #0xc] + str r2, [r0] + ldr r2, [sp, #0x60] + str r8, [r0, #0x10] + str r2, [r0, #4] + ldr r2, [sp, #0x14] + str r2, [r0, #8] + ldr r2, _021DC6F4 ; =0x0001D4C0 + str r2, [r0, #0x18] + ldr r0, [r4] + bl FUN_021DB608 + cmp r0, #0 + beq _021DC474 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DC474: + ldr r0, [r4] + mov r1, r7 + bl FUN_021DAACC + cmp r0, #0 + beq _021DC4A0 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #8 + bl FUN_021DB730 + b _021DC614 +_021DC4A0: + ldr r0, [r4] + bl FUN_021DB570 + cmp r0, #0 + beq _021DC4C8 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #1 + bl FUN_021DB730 + b _021DC614 +_021DC4C8: + ldr r0, _021DC684 ; =0x021D3498 + ldr r0, [r0, #4] + bl OS_GetThreadPriority + sub r1, r0, #1 + ldr r0, [r4] + bl FUN_021DB4A4 + ldr r1, [r4] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + beq _021DC500 + ldr r0, _021DC688 ; =0x00001B34 + add r0, r1, r0 + bl OS_JoinThread +_021DC500: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr r1, [r1, #0x20] + cmp r1, #2 + beq _021DC520 + cmp r1, #8 + beq _021DC54C + b _021DC534 +_021DC520: + ldr r0, _021DC670 ; =0x02210484 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] +_021DC534: + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #3 + bl FUN_021DB730 + b _021DC614 +_021DC54C: + mov r1, r6 + bl FUN_021DA3DC + cmp r0, #1 + beq _021DC574 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DC574: + ldr r0, [r4] + add r1, r0, #0x1000 + ldr sl, [r1, #0xa04] + cmp sl, #0 + bne _021DC598 + bl FUN_021DAE4C + mov r0, #2 + bl FUN_021DB730 + b _021DC614 +_021DC598: + mov r0, sl + bl strlen + add r1, r0, #1 + ldr r0, _021DC6F8 ; =0x0220C3F8 + blx sb + ldr r1, [r5] + add r1, r1, #0x1000 + str r0, [r1, #0x118] + ldr r0, [r5] + add r0, r0, #0x1000 + ldr r0, [r0, #0x118] + str r0, [sp, #0x10] + cmp r0, #0 + bne _021DC5E8 + ldr r0, _021DC674 ; =0x02210490 + ldr r0, [r0] + bl FUN_021DAE4C + mov r0, #4 + bl FUN_021DB730 + b _021DC614 +_021DC5E8: + mov r0, sl + bl strlen + mov r2, r0 + ldr r0, [sp, #0x10] + mov r1, sl + bl strncpy + ldr r0, [r4] + bl FUN_021DAE4C + mov r0, fp + bl OS_Sleep + b _021DB830 +_021DC614: + ldr r0, [sp] + cmp r0, #0 + beq _021DC630 + ldr r0, _021DC6FC ; =0x0220C4B4 + ldr r1, [sp] + mov r2, #0 + blx r8 +_021DC630: + cmp r7, #0 + beq _021DC648 + ldr r0, _021DC700 ; =0x0220C4C0 + mov r1, r7 + mov r2, #0 + blx r8 +_021DC648: + ldr r0, [sp, #8] + cmp r0, #0 + addeq sp, sp, #0x2d4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021DC704 ; =0x0220C4CC + ldr r1, [sp, #8] + mov r2, #0 + blx r8 + add sp, sp, #0x2d4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DC670: .word 0x02210484 +_021DC674: .word 0x02210490 +_021DC678: .word 0x02210494 +_021DC67C: .word 0x00004E20 +_021DC680: .word 0x0220C36C +_021DC684: .word 0x021D3498 +_021DC688: .word 0x00001B34 +_021DC68C: .word 0x0220C418 +_021DC690: .word 0x021D74A8 +_021DC694: .word 0x0000012E +_021DC698: .word 0x0221048C +_021DC69C: .word 0x0220BEB4 +_021DC6A0: .word 0x0220C424 +_021DC6A4: .word 0x0220C444 +_021DC6A8: .word 0x0220C44C +_021DC6AC: .word 0x0220C454 +_021DC6B0: .word 0x0220C464 +_021DC6B4: .word 0x0220C394 +_021DC6B8: .word 0x022104B0 +_021DC6BC: .word 0x02210488 +_021DC6C0: .word 0xFFFFA4FA +_021DC6C4: .word 0x00009C40 +_021DC6C8: .word 0x0220C484 +_021DC6CC: .word 0x0220C48C +_021DC6D0: .word 0x0220C3B0 +_021DC6D4: .word 0x0220C494 +_021DC6D8: .word 0x0220C4A0 +_021DC6DC: .word 0x0220C4A4 +_021DC6E0: .word 0x0220C4AC +_021DC6E4: .word 0x0220C3CC +_021DC6E8: .word 0x0220C3D8 +_021DC6EC: .word 0x0220C3E8 +_021DC6F0: .word 0x0002BF20 +_021DC6F4: .word 0x0001D4C0 +_021DC6F8: .word 0x0220C3F8 +_021DC6FC: .word 0x0220C4B4 +_021DC700: .word 0x0220C4C0 +_021DC704: .word 0x0220C4CC + + arm_func_start FUN_021DC708 +FUN_021DC708: ; 0x021DC708 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _021DC788 ; =0x02210484 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _021DC740 + ldr r0, _021DC78C ; =0x0000111C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} +_021DC740: + ldr r1, _021DC788 ; =0x02210484 + ldr r0, _021DC78C ; =0x0000111C + ldr r2, [r1] + mov r3, #0x1000 + ldr r1, _021DC790 ; =FUN_021DB778 + str r3, [sp] + mov ip, #0x10 + add r0, r2, r0 + add r3, r2, #0x1000 + str ip, [sp, #4] + bl OS_CreateThread + ldr r1, _021DC788 ; =0x02210484 + ldr r0, _021DC78C ; =0x0000111C + ldr r1, [r1] + add r0, r1, r0 + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021DC788: .word 0x02210484 +_021DC78C: .word 0x0000111C +_021DC790: .word FUN_021DB778 + + arm_func_start FUN_021DC794 +FUN_021DC794: ; 0x021DC794 + ldr r0, _021DC7A8 ; =0x02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_021DC7A8: .word 0x02210484 + + arm_func_start FUN_021DC7AC +FUN_021DC7AC: ; 0x021DC7AC + stmdb sp!, {r4, lr} + ldr r1, _021DC7E8 ; =0x02210484 + ldr r0, _021DC7EC ; =0x000011DC + ldr r1, [r1] + add r0, r1, r0 + bl OS_LockMutex + ldr r1, _021DC7E8 ; =0x02210484 + ldr r0, _021DC7EC ; =0x000011DC + ldr r2, [r1] + add r1, r2, #0x1000 + add r0, r2, r0 + ldr r4, [r1] + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DC7E8: .word 0x02210484 +_021DC7EC: .word 0x000011DC + + arm_func_start FUN_021DC7F0 +FUN_021DC7F0: ; 0x021DC7F0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DC864 ; =0x02210484 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DC868 ; =0x02210490 + ldr r0, [r0] + cmp r0, #0 + beq _021DC820 + bl FUN_021DB440 +_021DC820: + bl FUN_021D9974 + ldr r0, _021DC864 ; =0x02210484 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x188] + cmp r0, #0 + beq _021DC848 + ldr r0, _021DC86C ; =0x0000111C + add r0, r1, r0 + bl OS_JoinThread +_021DC848: + ldr r0, _021DC864 ; =0x02210484 + mvn r1, #6 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #4] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DC864: .word 0x02210484 +_021DC868: .word 0x02210490 +_021DC86C: .word 0x0000111C + + arm_func_start FUN_021DC870 +FUN_021DC870: ; 0x021DC870 + stmdb sp!, {r4, lr} + ldr r1, _021DC958 ; =0x02210484 + ldr r0, _021DC95C ; =0x02210490 + ldr r1, [r1] + ldr r0, [r0] + add r1, r1, #0x1000 + cmp r0, #0 + ldr r4, [r1, #0x10c] + beq _021DC8B8 + bl FUN_021DAE4C + ldr r1, _021DC95C ; =0x02210490 + ldr r0, _021DC960 ; =0x0220C4D8 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021DC95C ; =0x02210490 + mov r1, #0 + str r1, [r0] +_021DC8B8: + bl FUN_021D991C + ldr r0, _021DC958 ; =0x02210484 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r0, #0x1000 + ldr r1, [r0, #0x114] + cmp r1, #0 + beq _021DC8FC + ldr r0, _021DC964 ; =0x0220C3B0 + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =0x02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x114] +_021DC8FC: + ldr r0, _021DC958 ; =0x02210484 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0x118] + cmp r1, #0 + beq _021DC934 + ldr r0, _021DC968 ; =0x0220C464 + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =0x02210484 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x118] +_021DC934: + ldr r1, _021DC958 ; =0x02210484 + ldr r0, _021DC96C ; =0x0220C4E8 + ldr r1, [r1] + mov r2, #0 + blx r4 + ldr r0, _021DC958 ; =0x02210484 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021DC958: .word 0x02210484 +_021DC95C: .word 0x02210490 +_021DC960: .word 0x0220C4D8 +_021DC964: .word 0x0220C3B0 +_021DC968: .word 0x0220C464 +_021DC96C: .word 0x0220C4E8 + + arm_func_start FUN_021DC970 +FUN_021DC970: ; 0x021DC970 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _021DCA5C ; =0x02210484 + mov r5, r0 + ldr r0, [r1] + ldr r4, [r5] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021DCA60 ; =0x0220C4FC + ldr r1, _021DCA64 ; =0x000011F4 + blx r4 + ldr r1, _021DCA5C ; =0x02210484 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021DCA64 ; =0x000011F4 + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DCA5C ; =0x02210484 + ldr r2, _021DCA68 ; =0xFFFE7961 + ldr r0, [r1] + ldr r3, _021DCA6C ; =0x00001108 + add r0, r0, #0x1000 + str r2, [r0, #4] + ldr ip, [r1] + ldmia r5, {r0, r1, r2} + add r3, ip, r3 + stmia r3, {r0, r1, r2} + ldr r0, _021DCA70 ; =0x02210490 + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021DCA74 ; =0x0220C510 + ldr r1, _021DCA78 ; =0x00001C10 + blx r4 + ldr r1, _021DCA70 ; =0x02210490 + cmp r0, #0 + str r0, [r1] + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021DCA5C ; =0x02210484 + ldr r0, _021DCA7C ; =0x000011DC + ldr r2, [r1] + ldr r1, _021DCA80 ; =0x0221048C + mov r3, #0 + add r0, r2, r0 + str r3, [r1] + bl OS_InitMutex + bl FUN_021DC708 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DCA5C: .word 0x02210484 +_021DCA60: .word 0x0220C4FC +_021DCA64: .word 0x000011F4 +_021DCA68: .word 0xFFFE7961 +_021DCA6C: .word 0x00001108 +_021DCA70: .word 0x02210490 +_021DCA74: .word 0x0220C510 +_021DCA78: .word 0x00001C10 +_021DCA7C: .word 0x000011DC +_021DCA80: .word 0x0221048C + + arm_func_start FUN_021DCA84 +FUN_021DCA84: ; 0x021DCA84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + mov r6, r0 + bl strlen + mov r4, r0 + ldr r0, _021DCCB4 ; =0x0220C580 + bl strlen + cmp r4, r0 + bne _021DCCA8 + ldrsb r0, [r6, #7] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0xb] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0x10] + cmp r0, #0x20 + bne _021DCCA8 + ldrsb r0, [r6, #0x13] + cmp r0, #0x3a + bne _021DCCA8 + ldrsb r0, [r6, #0x16] + cmp r0, #0x3a + bne _021DCCA8 + ldrsb r0, [r6, #0x19] + cmp r0, #0x20 + bne _021DCCA8 + add r0, sp, #0 + bl RTC_GetDate + cmp r0, #0 + bne _021DCCA8 + add r0, sp, #0x10 + bl RTC_GetTime + cmp r0, #0 + bne _021DCCA8 + add r0, sp, #0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r5, r1 + mvn r0, #0 + cmp r5, r0 + cmpeq r4, r0 + beq _021DCCA8 + add r0, sp, #0x1c + mov r1, r6 + bl strcpy + mov r2, #0 + ldr r1, _021DCCB8 ; =0x021D74A8 + add r0, sp, #0x28 + strb r2, [sp, #0x23] + strb r2, [sp, #0x27] + strb r2, [sp, #0x2c] + strb r2, [sp, #0x2f] + strb r2, [sp, #0x32] + strb r2, [sp, #0x35] + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =0x021D74A8 + str r0, [sp] + ldr r1, [r1] + cmp r1, #0x22 + beq _021DCCA8 + sub r1, r0, #0x7d0 + mov r0, #0xd + str r1, [sp] + str r0, [sp, #4] + mov r8, #0 + ldr r7, _021DCCBC ; =0x0220C550 + add r6, sp, #0x24 +_021DCB9C: + ldr r0, [r7, r8, lsl #2] + mov r1, r6 + bl strcmp + cmp r0, #0 + addeq r0, r8, #1 + streq r0, [sp, #4] + beq _021DCBC4 + add r8, r8, #1 + cmp r8, #0xc + blt _021DCB9C +_021DCBC4: + ldr r0, [sp, #4] + cmp r0, #0xc + bhi _021DCCA8 + ldr r1, _021DCCB8 ; =0x021D74A8 + mov r2, #0 + add r0, sp, #0x21 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =0x021D74A8 + str r0, [sp, #8] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x2d + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =0x021D74A8 + str r0, [sp, #0x10] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x30 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =0x021D74A8 + str r0, [sp, #0x14] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + mov r2, #0 + add r0, sp, #0x33 + str r2, [r1] + bl atol + ldr r1, _021DCCB8 ; =0x021D74A8 + str r0, [sp, #0x18] + ldr r0, [r1] + cmp r0, #0x22 + beq _021DCCA8 + add r0, sp, #0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + beq _021DCCA8 + subs r4, r4, r0 + ldr r2, _021DCCC0 ; =0x022104FC + sbc r3, r5, r1 + ldr r1, _021DCCC4 ; =0x022104F8 + mov r0, #1 + str r3, [r2, #4] + str r0, [r1] + add sp, sp, #0x40 + str r4, [r2] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021DCCA8: + mov r0, #0 + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DCCB4: .word 0x0220C580 +_021DCCB8: .word 0x021D74A8 +_021DCCBC: .word 0x0220C550 +_021DCCC0: .word 0x022104FC +_021DCCC4: .word 0x022104F8 + + arm_func_start FUN_021DCCC8 +FUN_021DCCC8: ; 0x021DCCC8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _021DCED4 ; =0x02210504 + mov r1, #0 + ldr r0, [r0] + add r4, r0, #8 + mov r0, r4 + bl FUN_021DA3DC + cmp r0, #0 + bne _021DCD08 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD08: + ldr r1, _021DCEDC ; =0x0220C5A0 + mov r0, r4 + bl FUN_021DA388 + cmp r0, #0 + beq _021DCD20 + bl FUN_021DCA84 +_021DCD20: + ldr r1, _021DCEE0 ; =0x0220C5A8 + mov r0, r4 + bl FUN_021DA388 + cmp r0, #0 + bne _021DCD4C + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD4C: + bl atol + ldr r1, _021DCEE4 ; =0x021D74A8 + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _021DCD7C + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCD7C: + cmp r2, #0xc8 + beq _021DCDA0 + ldr r1, _021DCEE8 ; =0xFFFF9E58 + mov r0, #0x10 + sub r1, r1, r2 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCDA0: + ldr r1, _021DCEEC ; =0x0220C5B4 + add r2, sp, #0 + mov r0, r4 + mov r3, #4 + bl FUN_021DA334 + cmp r0, #0 + bgt _021DCDD4 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCDD4: + add r0, sp, #0 + bl atol + ldr r1, _021DCEE4 ; =0x021D74A8 + mov r2, r0 + ldr r0, [r1] + cmp r0, #0x22 + bne _021DCE08 + ldr r1, _021DCED8 ; =0xFFFF9DF3 + mov r0, #0x10 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCE08: + cmp r2, #0x64 + blt _021DCE2C + ldr r1, _021DCEF0 ; =0xFFFFA240 + mov r0, #0x10 + sub r1, r1, r2 + bl FUN_021DD6B0 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, pc} +_021DCE2C: + ldr r0, _021DCED4 ; =0x02210504 + ldr r1, _021DCEF4 ; =0x0220C5C0 + ldr r2, [r0] + mov r0, r4 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc18] + mov r3, #0x40 + add r2, r2, #4 + bl FUN_021DA334 + ldr r0, _021DCED4 ; =0x02210504 + ldr r1, _021DCEF8 ; =0x0220C5C8 + ldr r2, [r0] + mov r0, r4 + add r2, r2, #0x1000 + ldr r2, [r2, #0xc18] + mov r3, #0x12c + add r2, r2, #0x45 + bl FUN_021DA334 + ldr r1, _021DCEFC ; =0x0220C5D8 + add r2, sp, #0 + mov r0, r4 + mov r3, #1 + bl FUN_021DA334 + ldrsb r0, [sp] + cmp r0, #0x59 + bne _021DCEB0 + ldr r0, _021DCED4 ; =0x02210504 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc18] + str r1, [r0] + b _021DCEC8 +_021DCEB0: + ldr r0, _021DCED4 ; =0x02210504 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0xc18] + str r1, [r0] +_021DCEC8: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DCED4: .word 0x02210504 +_021DCED8: .word 0xFFFF9DF3 +_021DCEDC: .word 0x0220C5A0 +_021DCEE0: .word 0x0220C5A8 +_021DCEE4: .word 0x021D74A8 +_021DCEE8: .word 0xFFFF9E58 +_021DCEEC: .word 0x0220C5B4 +_021DCEF0: .word 0xFFFFA240 +_021DCEF4: .word 0x0220C5C0 +_021DCEF8: .word 0x0220C5C8 +_021DCEFC: .word 0x0220C5D8 + + arm_func_start FUN_021DCF00 +FUN_021DCF00: ; 0x021DCF00 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DCFF0 ; =0x02210504 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r0, _021DCFF4 ; =0x00001B3C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #1 + bne _021DCFE4 + ldr r0, _021DCFF0 ; =0x02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0x28] + cmp r0, #7 + beq _021DCFB0 + cmp r0, #8 + bne _021DCFC4 + bl FUN_021DCCC8 + cmp r0, #0 + bne _021DCF94 + ldr r0, _021DCFF0 ; =0x02210504 + ldr r0, [r0] + add r0, r0, #8 + bl FUN_021DAE4C + add sp, sp, #4 + mov r0, #4 + ldmfd sp!, {pc} +_021DCF94: + ldr r0, _021DCFF0 ; =0x02210504 + ldr r0, [r0] + add r0, r0, #8 + bl FUN_021DAE4C + add sp, sp, #4 + mov r0, #3 + ldmfd sp!, {pc} +_021DCFB0: + add r0, r1, #8 + bl FUN_021DAE4C + add sp, sp, #4 + mov r0, #5 + ldmfd sp!, {pc} +_021DCFC4: + add r0, r1, #8 + bl FUN_021DAE4C + ldr r1, _021DCFF8 ; =0xFFFFA1DB + mov r0, #0x11 + bl FUN_021DD6B0 + add sp, sp, #4 + mov r0, #4 + ldmfd sp!, {pc} +_021DCFE4: + mov r0, #2 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DCFF0: .word 0x02210504 +_021DCFF4: .word 0x00001B3C +_021DCFF8: .word 0xFFFFA1DB + + arm_func_start FUN_021DCFFC +FUN_021DCFFC: ; 0x021DCFFC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xb4 + ldr r2, _021DD244 ; =0x02210504 + mov r5, r0 + ldr r2, [r2] + mov r0, r1 + add r2, r2, #0x1000 + str r1, [r2, #0xc18] + mov r1, #0 + mov r2, #0x174 + bl MI_CpuFill8 + ldr r0, _021DD244 ; =0x02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + beq _021DD058 + ldr r0, _021DD248 ; =0x00001B3C + add r0, r1, r0 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _021DD058 + bl OS_Terminate +_021DD058: + ldr r0, _021DD24C ; =0x0220BEB4 + ldr r1, _021DD244 ; =0x02210504 + ldr r0, [r0] + mov r3, #0 + ldr r4, [r1] + mov r2, #0x1000 + str r0, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + ldr r2, [r4] + ldr r1, _021DD250 ; =0x0220C5E4 + str r2, [sp, #0xc] + ldr r2, [r4, #4] + str r2, [sp, #0x10] + bl strcmp + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + moveq r0, #0 + ldr r2, _021DD254 ; =0x00004E20 + streq r0, [sp, #0x14] + add r1, sp, #0 + add r0, r4, #8 + str r2, [sp, #0x18] + bl FUN_021DB608 + cmp r0, #0 + beq _021DD0DC + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD0DC: + add r0, sp, #0x1c + bl FUN_021DA238 + cmp r0, #0 + beq _021DD10C + ldr r0, _021DD244 ; =0x02210504 + add r1, sp, #0x1c + ldr r0, [r0] + mov r2, #0 + add r0, r0, #8 + bl FUN_021D9C2C + cmp r0, #0 + bne _021DD134 +_021DD10C: + ldr r0, _021DD244 ; =0x02210504 + ldr r0, [r0] + add r0, r0, #8 + bl FUN_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD134: + ldr r0, _021DD244 ; =0x02210504 + ldr r1, _021DD25C ; =0x0220C604 + ldr r0, [r0] + ldr r2, _021DD260 ; =0x0220C60C + add r0, r0, #8 + mov r3, #6 + bl FUN_021DAB68 + cmp r0, #0 + bne _021DD17C + ldr r0, _021DD244 ; =0x02210504 + ldr r1, _021DD264 ; =0x0220C614 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #8 + mov r3, #4 + bl FUN_021DAB68 + cmp r0, #0 + beq _021DD1A4 +_021DD17C: + ldr r0, _021DD244 ; =0x02210504 + ldr r0, [r0] + add r0, r0, #8 + bl FUN_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD1A4: + ldr r0, _021DD244 ; =0x02210504 + ldr r0, [r0] + add r0, r0, #8 + bl FUN_021DB570 + cmp r0, #0 + beq _021DD1E4 + ldr r0, _021DD244 ; =0x02210504 + ldr r0, [r0] + add r0, r0, #8 + bl FUN_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #0xb4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD1E4: + ldr r0, _021DD268 ; =0x021D3498 + ldr r0, [r0, #4] + bl OS_GetThreadPriority + ldr r1, _021DD244 ; =0x02210504 + ldr r2, [r1] + sub r1, r0, #1 + add r0, r2, #8 + bl FUN_021DB4A4 + ldr r0, _021DD244 ; =0x02210504 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r0, [r0, #0xba8] + cmp r0, #0 + addne sp, sp, #0xb4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + add r0, r1, #8 + bl FUN_021DAE4C + ldr r1, _021DD258 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + mov r0, #0 + add sp, sp, #0xb4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DD244: .word 0x02210504 +_021DD248: .word 0x00001B3C +_021DD24C: .word 0x0220BEB4 +_021DD250: .word 0x0220C5E4 +_021DD254: .word 0x00004E20 +_021DD258: .word 0xFFFFA1DC +_021DD25C: .word 0x0220C604 +_021DD260: .word 0x0220C60C +_021DD264: .word 0x0220C614 +_021DD268: .word 0x021D3498 + + arm_func_start FUN_021DD26C +FUN_021DD26C: ; 0x021DD26C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DD2BC ; =0x02210504 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + add r0, r0, #8 + bl FUN_021DAE4C + ldr r1, _021DD2BC ; =0x02210504 + ldr r0, _021DD2C0 ; =0x0220C618 + ldr r1, [r1] + mov r2, #0 + ldr r3, [r1, #4] + blx r3 + ldr r0, _021DD2BC ; =0x02210504 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD2BC: .word 0x02210504 +_021DD2C0: .word 0x0220C618 + + arm_func_start FUN_021DD2C4 +FUN_021DD2C4: ; 0x021DD2C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DD35C ; =0x02210504 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _021DD2FC + ldr r1, _021DD360 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD2FC: + ldr r0, _021DD364 ; =0x0220C628 + ldr r1, _021DD368 ; =0x00001C1C + blx r5 + ldr r1, _021DD35C ; =0x02210504 + cmp r0, #0 + str r0, [r1] + bne _021DD330 + ldr r1, _021DD360 ; =0xFFFFA1DC + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DD330: + ldr r2, _021DD368 ; =0x00001C1C + mov r1, #0 + bl MI_CpuFill8 + ldr r1, _021DD35C ; =0x02210504 + mov r0, #1 + ldr r2, [r1] + str r5, [r2] + ldr r1, [r1] + str r4, [r1, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DD35C: .word 0x02210504 +_021DD360: .word 0xFFFFA1DC +_021DD364: .word 0x0220C628 +_021DD368: .word 0x00001C1C + + arm_func_start FUN_021DD36C +FUN_021DD36C: ; 0x021DD36C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ands r4, r1, #3 + addne sp, sp, #8 + mvnne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r6, #0 + mov r5, r6 + cmp r1, #0 + bls _021DD3AC +_021DD394: + ldrsb r4, [r0, r5] + add r5, r5, #1 + cmp r4, #0x2a + addne r6, r6, #6 + cmp r5, r1 + blo _021DD394 +_021DD3AC: + cmp r2, #0 + moveq r0, r6, asr #2 + addeq r0, r6, r0, lsr #29 + addeq sp, sp, #8 + moveq r0, r0, asr #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, r6, asr #2 + add r4, r6, r4, lsr #29 + mov r4, r4, asr #3 + cmp r3, r4 + addlo sp, sp, #8 + mvnlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0 + moveq r0, #0 + streqb r0, [r2] + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r6, r2 + add ip, sp, #0 + mov lr, #0 + mov r1, #0x3f + mov r3, #0x3e +_021DD408: + mov r8, lr + mov r5, ip +_021DD410: + ldrsb r7, [r0, r8] + cmp r7, #0x41 + blt _021DD42C + cmp r7, #0x5a + suble r7, r7, #0x41 + strleb r7, [r5] + ble _021DD474 +_021DD42C: + cmp r7, #0x61 + blt _021DD444 + cmp r7, #0x7a + suble r7, r7, #0x47 + strleb r7, [r5] + ble _021DD474 +_021DD444: + cmp r7, #0x30 + blt _021DD45C + cmp r7, #0x39 + addle r7, r7, #4 + strleb r7, [r5] + ble _021DD474 +_021DD45C: + cmp r7, #0x2e + streqb r3, [r5] + beq _021DD474 + cmp r7, #0x2d + streqb r1, [r5] + strneb lr, [r5] +_021DD474: + add r8, r8, #1 + cmp r8, #4 + add r5, r5, #1 + blt _021DD410 + ldrsb r8, [sp] + ldrsb r7, [sp, #1] + add r5, r6, #1 + mov r8, r8, lsl #2 + orr r7, r8, r7, asr #4 + sub r5, r5, r2 + strb r7, [r6] + cmp r5, r4 + add r0, r0, #4 + bge _021DD4F0 + ldrsb r8, [sp, #1] + ldrsb r7, [sp, #2] + add r5, r6, #2 + mov r8, r8, lsl #4 + orr r7, r8, r7, asr #2 + sub r5, r5, r2 + strb r7, [r6, #1] + cmp r5, r4 + bge _021DD4F0 + ldrsb r7, [sp, #2] + ldrsb r5, [sp, #3] + orr r5, r5, r7, lsl #6 + strb r5, [r6, #2] + add r6, r6, #3 + sub r5, r6, r2 + cmp r5, r4 + blt _021DD408 +_021DD4F0: + mov r0, r5 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_021DD4FC +FUN_021DD4FC: ; 0x021DD4FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r4, _021DD69C ; =0xAAAAAAAB + str r2, [sp] + umull r4, r5, r1, r4 + ldr r6, _021DD6A0 ; =0x00000003 + mov r5, r5, lsr #1 + umull r4, r5, r6, r5 + mov sl, r0 + subs r5, r1, r4 + movne r4, #4 + ldr r2, _021DD69C ; =0xAAAAAAAB + ldr r0, [sp] + moveq r4, #0 + cmp r0, #0 + umull r0, r2, r1, r2 + mov r2, r2, lsr #1 + addeq sp, sp, #0xc + add r0, r4, r2, lsl #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r3, r0 + addlo sp, sp, #0xc + mvnlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r7, sl, r1 + ldr r6, [sp] + cmp sl, r7 + beq _021DD68C + mov r0, #1 + mov r5, #0 + str r0, [sp, #4] + mov fp, #3 + mov r4, #0x2a +_021DD580: + sub sb, r7, sl + ldr r1, _021DD6A4 ; =0x2AAAAAAB + mov r0, sb, lsl #3 + smull r2, r3, r1, r0 + ldr r1, _021DD6A8 ; =0x00000006 + add r3, r3, r0, lsr #31 + smull r2, r3, r1, r3 + subs r3, r0, r2 + ldr r1, _021DD6A4 ; =0x2AAAAAAB + ldrne r8, [sp, #4] + smull r2, r3, r1, r0 + moveq r8, r5 + add r3, r3, r0, lsr #31 + cmp sb, #3 + movge sb, fp + add r0, sp, #8 + mov r1, r5 + mov r2, fp + add r8, r3, r8 + bl MI_CpuFill8 + mov r0, sl + add r1, sp, #8 + mov r2, sb + bl MI_CpuCopy8 + ldr r0, _021DD6AC ; =0x0220C638 + cmp r8, #2 + ldr r1, [r0] + ldrb r0, [sp, #8] + mov r0, r0, asr #2 + ldrsb r0, [r1, r0] + strb r0, [r6] + strltb r4, [r6, #1] + blt _021DD628 + ldrb r2, [sp, #8] + ldr r0, _021DD6AC ; =0x0220C638 + ldrb r1, [sp, #9] + mov r2, r2, lsl #4 + and r2, r2, #0x3f + ldr r0, [r0] + orr r1, r2, r1, asr #4 + ldrsb r0, [r0, r1] + strb r0, [r6, #1] +_021DD628: + cmp r8, #3 + strltb r4, [r6, #2] + blt _021DD658 + ldrb r2, [sp, #9] + ldr r0, _021DD6AC ; =0x0220C638 + ldrb r1, [sp, #0xa] + mov r2, r2, lsl #2 + and r2, r2, #0x3f + ldr r0, [r0] + orr r1, r2, r1, asr #6 + ldrsb r0, [r0, r1] + strb r0, [r6, #2] +_021DD658: + cmp r8, #4 + strltb r4, [r6, #3] + blt _021DD67C + ldr r0, _021DD6AC ; =0x0220C638 + ldrb r1, [sp, #0xa] + ldr r2, [r0] + and r0, r1, #0x3f + ldrsb r0, [r2, r0] + strb r0, [r6, #3] +_021DD67C: + add sl, sl, sb + cmp sl, r7 + add r6, r6, #4 + bne _021DD580 +_021DD68C: + ldr r0, [sp] + sub r0, r6, r0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DD69C: .word 0xAAAAAAAB +_021DD6A0: .word 0x00000003 +_021DD6A4: .word 0x2AAAAAAB +_021DD6A8: .word 0x00000006 +_021DD6AC: .word 0x0220C638 + + arm_func_start FUN_021DD6B0 +FUN_021DD6B0: ; 0x021DD6B0 + ldr r3, _021DD6CC ; =0x02210508 + ldr r2, [r3] + cmp r2, #9 + ldrne r2, _021DD6D0 ; =0x0221050C + strne r0, [r3] + strne r1, [r2] + bx lr + .align 2, 0 +_021DD6CC: .word 0x02210508 +_021DD6D0: .word 0x0221050C + + arm_func_start FUN_021DD6D4 +FUN_021DD6D4: ; 0x021DD6D4 + ldr r0, _021DD6EC ; =0x02210508 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_021DD6EC: .word 0x02210508 + + arm_func_start FUN_021DD6F0 +FUN_021DD6F0: ; 0x021DD6F0 + ldr r1, _021DD710 ; =0x02210508 + ldr r0, [r1] + cmp r0, #9 + movne r2, #0 + ldrne r0, _021DD714 ; =0x0221050C + strne r2, [r1] + strne r2, [r0] + bx lr + .align 2, 0 +_021DD710: .word 0x02210508 +_021DD714: .word 0x0221050C + + arm_func_start FUN_021DD718 +FUN_021DD718: ; 0x021DD718 + cmp r0, #0 + ldrne r2, _021DD800 ; =0x0221050C + ldrne r2, [r2] + strne r2, [r0] + cmp r1, #0 + beq _021DD7F4 + ldr r0, _021DD804 ; =0x02210508 + ldr r0, [r0] + cmp r0, #0x11 + addls pc, pc, r0, lsl #2 + b _021DD7EC +_021DD744: ; jump table + b _021DD7EC ; case 0 + b _021DD7BC ; case 1 + b _021DD78C ; case 2 + b _021DD78C ; case 3 + b _021DD78C ; case 4 + b _021DD78C ; case 5 + b _021DD798 ; case 6 + b _021DD7A4 ; case 7 + b _021DD78C ; case 8 + b _021DD7BC ; case 9 + b _021DD7B0 ; case 10 + b _021DD7B0 ; case 11 + b _021DD7B0 ; case 12 + b _021DD7B0 ; case 13 + b _021DD7C8 ; case 14 + b _021DD7D4 ; case 15 + b _021DD7E0 ; case 16 + b _021DD7D4 ; case 17 +_021DD78C: + mov r0, #6 + str r0, [r1] + b _021DD7F4 +_021DD798: + mov r0, #3 + str r0, [r1] + b _021DD7F4 +_021DD7A4: + mov r0, #4 + str r0, [r1] + b _021DD7F4 +_021DD7B0: + mov r0, #1 + str r0, [r1] + b _021DD7F4 +_021DD7BC: + mov r0, #7 + str r0, [r1] + b _021DD7F4 +_021DD7C8: + mov r0, #5 + str r0, [r1] + b _021DD7F4 +_021DD7D4: + mov r0, #6 + str r0, [r1] + b _021DD7F4 +_021DD7E0: + mov r0, #2 + str r0, [r1] + b _021DD7F4 +_021DD7EC: + mov r0, #0 + str r0, [r1] +_021DD7F4: + ldr r0, _021DD804 ; =0x02210508 + ldr r0, [r0] + bx lr + .align 2, 0 +_021DD800: .word 0x0221050C +_021DD804: .word 0x02210508 + + arm_func_start FUN_021DD808 +FUN_021DD808: ; 0x021DD808 + cmp r0, #0 + ldrne r1, _021DD824 ; =0x0221050C + ldrne r1, [r1] + strne r1, [r0] + ldr r0, _021DD828 ; =0x02210508 + ldr r0, [r0] + bx lr + .align 2, 0 +_021DD824: .word 0x0221050C +_021DD828: .word 0x02210508 + + arm_func_start FUN_021DD82C +FUN_021DD82C: ; 0x021DD82C + ldr ip, _021DD840 ; =FUN_021DD904 + mov r1, r0 + mov r0, #5 + mov r2, #0 + bx ip + .align 2, 0 +_021DD840: .word FUN_021DD904 + + arm_func_start FUN_021DD844 +FUN_021DD844: ; 0x021DD844 + ldr ip, _021DD85C ; =FUN_021DD8E8 + mov r2, r1 + mov r1, r0 + mov r3, r2 + mov r0, #5 + bx ip + .align 2, 0 +_021DD85C: .word FUN_021DD8E8 + + arm_func_start FUN_021DD860 +FUN_021DD860: ; 0x021DD860 + ldr ip, _021DD870 ; =FUN_021DD944 + mov r1, r0 + mov r0, #5 + bx ip + .align 2, 0 +_021DD870: .word FUN_021DD944 + + arm_func_start FUN_021DD874 +FUN_021DD874: ; 0x021DD874 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _021DD8E0 ; =0x02210514 + mov r4, r2 + mov r7, r3 + mov r5, r1 + ldr r2, [sp, #0x18] + ldr r3, [ip] + mov r1, r7 + mov r8, r0 + blx r3 + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r5, #0 + beq _021DD8D8 + mov r0, r5 + mov r1, r6 + mov r2, r7 + bl MI_CpuCopy8 + ldr r1, _021DD8E4 ; =0x02210510 + mov r0, r8 + ldr r3, [r1] + mov r1, r5 + mov r2, r4 + blx r3 +_021DD8D8: + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021DD8E0: .word 0x02210514 +_021DD8E4: .word 0x02210510 + + arm_func_start FUN_021DD8E8 +FUN_021DD8E8: ; 0x021DD8E8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0x20 + str ip, [sp] + bl FUN_021DD874 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021DD904 +FUN_021DD904: ; 0x021DD904 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD920 ; =0x02210510 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD920: .word 0x02210510 + + arm_func_start FUN_021DD924 +FUN_021DD924: ; 0x021DD924 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD940 ; =0x02210514 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD940: .word 0x02210514 + + arm_func_start FUN_021DD944 +FUN_021DD944: ; 0x021DD944 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021DD964 ; =0x02210514 + mov r2, #0x20 + ldr r3, [r3] + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD964: .word 0x02210514 + + arm_func_start FUN_021DD968 +FUN_021DD968: ; 0x021DD968 + ldr r3, _021DD97C ; =0x02210514 + ldr r2, _021DD980 ; =0x02210510 + str r0, [r3] + str r1, [r2] + bx lr + .align 2, 0 +_021DD97C: .word 0x02210514 +_021DD980: .word 0x02210510 + + arm_func_start FUN_021DD984 +FUN_021DD984: ; 0x021DD984 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021DDCE8 + bl FUN_021DDB14 + cmp r0, #0 + beq _021DD9CC + bl FUN_021EBAB8 + mov r2, r0 + cmp r2, #0x63 + ldr r1, _021DD9D8 ; =0xFFFF2D10 + movhi r2, #0x63 + mov r0, #8 + sub r1, r1, r2 + bl FUN_021DD6B0 + bl FUN_021DDBBC + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021DD9CC: + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DD9D8: .word 0xFFFF2D10 + + arm_func_start FUN_021DD9DC +FUN_021DD9DC: ; 0x021DD9DC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r1, #0 + mov r2, #0x3c + mov r4, r0 + bl MI_CpuFill8 + mov r0, #0xff + str r0, [r4, #4] + bl FUN_021DDC1C + cmp r0, #4 + addne sp, sp, #0x18 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + bl FUN_021EBAB8 + str r0, [r4] + bl OS_DisableInterrupts + mov r6, r0 + bl FUN_020A8850 + mov r5, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DDA4C + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DDA4C: + mov r0, r5 + add r1, r4, #0x33 + mov r2, #6 + bl MI_CpuCopy8 + ldr r0, [r4] + cmp r0, #0 + blt _021DDAB0 + cmp r0, #3 + bge _021DDAB0 + add r0, sp, #0 + bl FUN_020A87E0 + mov r5, r0 + mov r1, #0x20 + bl DC_InvalidateRange + cmp r5, #0 + bne _021DDAA0 + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DDAA0: + ldrh r2, [sp] + mov r0, r5 + add r1, r4, #0x12 + bl MI_CpuCopy8 +_021DDAB0: + mov r0, r6 + bl OS_RestoreInterrupts + add r0, sp, #2 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + add r0, sp, #2 + bl FUN_021EBA28 + cmp r0, #1 + bne _021DDAFC + ldrb r1, [sp, #8] + cmp r1, #0 + beq _021DDAFC + sub r3, r1, #0x30 + add r0, sp, #9 + add r1, r4, #8 + mov r2, #9 + str r3, [r4, #4] + bl MI_CpuCopy8 +_021DDAFC: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DDB08 +FUN_021DDB08: ; 0x021DDB08 + ldr ip, _021DDB10 ; =0x020A8B28 + bx ip + .align 2, 0 +_021DDB10: .word 0x020A8B28 + + arm_func_start FUN_021DDB14 +FUN_021DDB14: ; 0x021DDB14 + ldr r0, _021DDB3C ; =0x02210518 + ldr r0, [r0] + cmp r0, #0 + beq _021DDB34 + ldrh r0, [r0, #4] + cmp r0, #6 + moveq r0, #1 + bxeq lr +_021DDB34: + mov r0, #0 + bx lr + .align 2, 0 +_021DDB3C: .word 0x02210518 + + arm_func_start FUN_021DDB40 +FUN_021DDB40: ; 0x021DDB40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDBB8 ; =0x02210518 + ldr r2, [r0] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldrh r1, [r2, #4] + cmp r1, #8 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + mov r0, #5 + strh r0, [r2, #4] + bl FUN_021EB9D8 + cmp r0, #0 + ldrne r0, _021DDBB8 ; =0x02210518 + movne r1, #0 + strne r1, [r0] + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDBB8: .word 0x02210518 + + arm_func_start FUN_021DDBBC +FUN_021DDBBC: ; 0x021DDBBC + stmdb sp!, {r4, lr} + ldr r0, _021DDC18 ; =0x02210518 + ldr r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldrh r1, [r1, #4] + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + ldmeqia sp!, {r4, pc} + bl FUN_021EB9D8 + cmp r0, #0 + bne _021DDC08 + mov r4, #0xa +_021DDBF4: + mov r0, r4 + bl OS_Sleep + bl FUN_021EB9D8 + cmp r0, #0 + beq _021DDBF4 +_021DDC08: + ldr r0, _021DDC18 ; =0x02210518 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_021DDC18: .word 0x02210518 + + arm_func_start FUN_021DDC1C +FUN_021DDC1C: ; 0x021DDC1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDCE4 ; =0x02210518 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldrh r0, [r0, #4] + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021EBAE8 + mov r1, r0 + cmp r1, #5 + bne _021DDC80 + ldr r1, _021DDCE4 ; =0x02210518 + mov r0, #4 + ldr r3, [r1] + mov r2, #1 + strh r0, [r3, #4] + ldr r1, [r1] + add sp, sp, #4 + strh r2, [r1, #6] + ldmfd sp!, {pc} +_021DDC80: + cmp r1, #0 + bge _021DDCD8 + mvn r0, #9 + cmp r1, r0 + blt _021DDCB8 + sub r1, r1, #0x2bc + mov r0, #9 + bl FUN_021DD6B0 + ldr r1, _021DDCE4 ; =0x02210518 + mov r0, #8 + ldr r1, [r1] + add sp, sp, #4 + strh r0, [r1, #4] + ldmfd sp!, {pc} +_021DDCB8: + mov r0, #5 + bl FUN_021DD6B0 + ldr r1, _021DDCE4 ; =0x02210518 + mov r0, #7 + ldr r1, [r1] + add sp, sp, #4 + strh r0, [r1, #4] + ldmfd sp!, {pc} +_021DDCD8: + mov r0, #2 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDCE4: .word 0x02210518 + + arm_func_start FUN_021DDCE8 +FUN_021DDCE8: ; 0x021DDCE8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDD78 ; =0x02210518 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldrh r0, [r1, #4] + cmp r0, #2 + bne _021DDD28 + bl FUN_021EBB80 + ldr r1, _021DDD78 ; =0x02210518 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1] + ldmfd sp!, {pc} +_021DDD28: + cmp r0, #4 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r0, [r1, #6] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_020A71F8 + cmp r0, #9 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DDD78 ; =0x02210518 + mov r3, #0 + ldr r2, [r0] + mov r1, #6 + strh r3, [r2, #6] + ldr r0, [r0] + strh r1, [r0, #4] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDD78: .word 0x02210518 + + arm_func_start FUN_021DDD7C +FUN_021DDD7C: ; 0x021DDD7C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DDDC8 ; =0x02210518 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldr r0, [r1] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r0, #3 + strh r0, [r1, #4] + bl FUN_021DDC1C + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDDC8: .word 0x02210518 + + arm_func_start FUN_021DDDCC +FUN_021DDDCC: ; 0x021DDDCC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _021DDE70 ; =0x02210518 + ldr r0, [r0] + cmp r0, #0 + beq _021DDE5C + ldrh r0, [r0, #4] + cmp r0, #1 + addne sp, sp, #0xc + ldmneia sp!, {pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _021DDE70 ; =0x02210518 + ldr r3, _021DDE74 ; =FUN_021DD944 + ldr lr, [r0] + ldr r2, _021DDE78 ; =FUN_021DD904 + ldrh ip, [lr, #8] + add r0, sp, #0 + mov r1, #2 + strb ip, [sp, #8] + ldrh ip, [lr, #0xa] + strb ip, [sp, #9] + str r3, [sp] + str r2, [sp, #4] + strh r1, [lr, #4] + bl FUN_021EBC60 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + mov r0, #9 + mvn r1, #5 + bl FUN_021DD6B0 + add sp, sp, #0xc + ldmfd sp!, {pc} +_021DDE5C: + mov r0, #9 + mvn r1, #3 + bl FUN_021DD6B0 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021DDE70: .word 0x02210518 +_021DDE74: .word FUN_021DD944 +_021DDE78: .word FUN_021DD904 + + arm_func_start FUN_021DDE7C +FUN_021DDE7C: ; 0x021DDE7C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021DDEA4 + cmp r0, #1 + beq _021DDEB4 + cmp r0, #2 + beq _021DDEC4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEA4: + ldr r0, _021DDED4 ; =0x0220D280 + bl FUN_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEB4: + ldr r0, _021DDED8 ; =0x0220D2A8 + bl FUN_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} +_021DDEC4: + ldr r0, _021DDEDC ; =0x0220D2CC + bl FUN_021D9C1C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DDED4: .word 0x0220D280 +_021DDED8: .word 0x0220D2A8 +_021DDEDC: .word 0x0220D2CC + + arm_func_start FUN_021DDEE0 +FUN_021DDEE0: ; 0x021DDEE0 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _021DDF3C ; =0x02210518 + mov r6, r0 + ldr r2, [r2] + mov r5, r1 + mov r4, r3 + cmp r2, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + strh r5, [r6, #8] + mov r0, #1 + strh r0, [r6, #0xa] + strh r0, [r6, #4] + mov r0, #0 + ldr r1, _021DDF3C ; =0x02210518 + strh r0, [r6, #6] + str r6, [r1] + bl FUN_021DDE7C + mov r0, r4 + bl FUN_020A374C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DDF3C: .word 0x02210518 + + arm_func_start FUN_021DDF40 +FUN_021DDF40: ; 0x021DDF40 + ldr ip, _021DDF48 ; =FUN_021D9974 + bx ip + .align 2, 0 +_021DDF48: .word FUN_021D9974 + + arm_func_start FUN_021DDF4C +FUN_021DDF4C: ; 0x021DDF4C + stmdb sp!, {lr} + sub sp, sp, #0x1c4 + ldr r0, _021DE054 ; =0x0221051C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0x1c4 + moveq r0, #0 + ldmeqia sp!, {pc} + add r0, r0, #0x1000 + ldr r0, [r0, #0xba0] + cmp r0, #0 + addeq sp, sp, #0x1c4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl FUN_021D988C + cmp r0, #0 + beq _021DDFA4 + cmp r0, #0x14 + beq _021DDFE0 + cmp r0, #0x15 + beq _021DDFB0 + b _021DE010 +_021DDFA4: + add sp, sp, #0x1c4 + mov r0, #2 + ldmfd sp!, {pc} +_021DDFB0: + bl FUN_021D991C + ldr r0, _021DE054 ; =0x0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl FUN_021DD904 + ldr r0, _021DE054 ; =0x0221051C + mov r1, #0 + str r1, [r0] + add sp, sp, #0x1c4 + mov r0, #3 + ldmfd sp!, {pc} +_021DDFE0: + bl FUN_021D991C + ldr r0, _021DE054 ; =0x0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl FUN_021DD904 + ldr r0, _021DE054 ; =0x0221051C + mov r1, #0 + str r1, [r0] + add sp, sp, #0x1c4 + mov r0, #5 + ldmfd sp!, {pc} +_021DE010: + add r0, sp, #0 + bl FUN_021D97F8 + bl FUN_021D991C + ldr r0, _021DE054 ; =0x0221051C + ldr r2, _021DE058 ; =0x00001E1C + ldr r1, [r0] + mov r0, #4 + bl FUN_021DD904 + ldr r1, [sp] + ldr r2, _021DE054 ; =0x0221051C + mov r3, #0 + mov r0, #2 + str r3, [r2] + bl FUN_021DD6B0 + mov r0, #4 + add sp, sp, #0x1c4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE054: .word 0x0221051C +_021DE058: .word 0x00001E1C + + arm_func_start FUN_021DE05C +FUN_021DE05C: ; 0x021DE05C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DE130 ; =0x0221051C + ldr r0, [r0] + cmp r0, #0 + beq _021DE078 + bl OS_Terminate +_021DE078: + ldr r1, _021DE134 ; =0x00001E1C + mov r0, #4 + bl FUN_021DD944 + ldr r1, _021DE130 ; =0x0221051C + cmp r0, #0 + str r0, [r1] + bne _021DE0AC + ldr r1, _021DE138 ; =0xFFFFB17C + mov r0, #9 + bl FUN_021DD6B0 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021DE0AC: + ldr r2, _021DE134 ; =0x00001E1C + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _021DE130 ; =0x0221051C + ldr r1, _021DE13C ; =0x00001C44 + ldr r2, [r0] + ldr r0, _021DE140 ; =0x0220D2EC + add r1, r2, r1 + mov r2, #9 + bl MI_CpuCopy8 + ldr r1, _021DE130 ; =0x0221051C + ldr r2, _021DE144 ; =FUN_021DD944 + ldr r0, [r1] + ldr r3, _021DE148 ; =FUN_021DD904 + add r0, r0, #0x1000 + str r2, [r0, #0xc50] + ldr r0, [r1] + ldr r2, _021DE14C ; =0x00001C10 + add r0, r0, #0x1000 + str r3, [r0, #0xc54] + ldr r1, [r1] + add r0, r1, r2 + bl FUN_021D9ACC + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r1, _021DE138 ; =0xFFFFB17C + mov r0, #9 + bl FUN_021DD6B0 + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE130: .word 0x0221051C +_021DE134: .word 0x00001E1C +_021DE138: .word 0xFFFFB17C +_021DE13C: .word 0x00001C44 +_021DE140: .word 0x0220D2EC +_021DE144: .word FUN_021DD944 +_021DE148: .word FUN_021DD904 +_021DE14C: .word 0x00001C10 + + arm_func_start FUN_021DE150 +FUN_021DE150: ; 0x021DE150 + stmdb sp!, {r4, lr} + bl FUN_021DCF00 + mov r4, r0 + sub r0, r4, #3 + cmp r0, #2 + bhi _021DE16C + bl FUN_021DD26C +_021DE16C: + mov r0, r4 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021DE174 +FUN_021DE174: ; 0x021DE174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + ldr r0, _021DE1EC ; =FUN_021DD944 + ldr r1, _021DE1F0 ; =FUN_021DD904 + bl FUN_021DD2C4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + bl strlen + cmp r0, #0 + bne _021DE1C0 + ldr r0, _021DE1F4 ; =0x0220D2F0 + mov r1, r4 + bl FUN_021DCFFC + b _021DE1CC +_021DE1C0: + mov r0, r5 + mov r1, r4 + bl FUN_021DCFFC +_021DE1CC: + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + bl FUN_021DD26C + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DE1EC: .word FUN_021DD944 +_021DE1F0: .word FUN_021DD904 +_021DE1F4: .word 0x0220D2F0 + + arm_func_start FUN_021DE1F8 +FUN_021DE1F8: ; 0x021DE1F8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DE2C4 ; =0x022104F8 + mov r5, r0 + ldr r2, [r2] + mov r4, r1 + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + bl RTC_GetDate + cmp r0, #0 + bne _021DE23C + mov r0, r4 + bl RTC_GetTime + cmp r0, #0 + beq _021DE248 +_021DE23C: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DE248: + mov r0, r5 + mov r1, r4 + bl RTC_ConvertDateTimeToSecond + mvn r2, #0 + cmp r1, r2 + cmpeq r0, r2 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r2, _021DE2C8 ; =0x022104FC + mov ip, #0 + ldr lr, [r2] + ldr r3, [r2, #4] + subs r2, r0, lr + sbc r3, r1, r3 + subs r0, r2, ip + sbcs r0, r3, ip + blt _021DE2A0 + ldr r0, _021DE2CC ; =0xBC19137F + subs r0, r0, r2 + sbcs r0, ip, r3 + bge _021DE2AC +_021DE2A0: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021DE2AC: + mov r0, r5 + mov r1, r4 + bl RTC_ConvertSecondToDateTime + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DE2C4: .word 0x022104F8 +_021DE2C8: .word 0x022104FC +_021DE2CC: .word 0xBC19137F + + arm_func_start FUN_021DE2D0 +FUN_021DE2D0: ; 0x021DE2D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FUN_02207330 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021DE308 +FUN_021DE308: ; 0x021DE308 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl FUN_02207158 + add sp, sp, #4 + ldmfd sp!, {pc} + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0220733C + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DE364 +FUN_021DE364: ; 0x021DE364 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xb0 + mul r2, r4, r0 + mov r0, r6 + mov r1, #0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_022074EC + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DE3AC +FUN_021DE3AC: ; 0x021DE3AC + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl FUN_022077A8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021DE3D0 +FUN_021DE3D0: ; 0x021DE3D0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_022069DC + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021DE404 +FUN_021DE404: ; 0x021DE404 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DE454 ; =0x02210520 + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #0x48] + cmp r0, #0 + bne _021DE440 + bl FUN_021DE730 + b _021DE448 +_021DE440: + ldr r0, _021DE458 ; =FUN_021DE730 + bl FUN_02206E6C +_021DE448: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DE454: .word 0x02210520 +_021DE458: .word FUN_021DE730 + + arm_func_start FUN_021DE45C +FUN_021DE45C: ; 0x021DE45C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0xa80 + mov r1, #0x20 + bl FUN_021DE884 + ldr r2, _021DE568 ; =0x02210520 + mov r1, #0 + str r0, [r2] + str r1, [r0, #0x48] + ldr r0, [r2] + mov r2, #0xa80 + bl MI_CpuFill8 + ldr r0, _021DE568 ; =0x02210520 + mov r1, r5 + ldr r3, [r0] + mov r2, #0x1f + str r6, [r3] + ldr r0, [r0] + add r0, r0, #8 + bl strncpy + ldr r0, _021DE568 ; =0x02210520 + mov r1, r4 + ldr r0, [r0] + mov r2, #0x1f + add r0, r0, #0x28 + bl strncpy + ldr r1, _021DE568 ; =0x02210520 + ldr r0, _021DE56C ; =0x0220D2F8 + ldr r1, [r1] + add r1, r1, #0x4c + bl FUN_021DE174 + cmp r0, #0 + bne _021DE520 + ldr r0, _021DE568 ; =0x02210520 + ldr r0, [r0] + bl FUN_021DE86C + ldr r1, _021DE568 ; =0x02210520 + mov r0, #0 + str r0, [r1] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021DE520: + ldr r0, _021DE568 ; =0x02210520 + mov r2, #0x800 + ldr r0, [r0] + ldr r1, _021DE570 ; =FUN_021DE574 + add r0, r0, #0x9c0 + mov r3, r0 + str r2, [sp] + mov ip, #0x10 + mov r2, #0 + str ip, [sp, #4] + bl OS_CreateThread + ldr r0, _021DE568 ; =0x02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE568: .word 0x02210520 +_021DE56C: .word 0x0220D2F8 +_021DE570: .word FUN_021DE574 + + arm_func_start FUN_021DE574 +FUN_021DE574: ; 0x021DE574 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x2a4 + mov r7, #0 + mov r6, #6 + mvn r5, #0 + mov r4, #0x64 +_021DE58C: + bl FUN_021DE150 + cmp r0, #3 + bne _021DE6AC + ldr r0, _021DE718 ; =0x02210520 + ldr r5, [r0] + add r0, r5, #0x50 + bl strlen + mov r4, r0 + ldr r0, _021DE71C ; =0x0220D300 + bl strlen + add r0, r4, r0 + cmp r0, #0xff + bls _021DE5D8 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl FUN_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE5D8: + ldr r2, _021DE720 ; =0x0220D314 + add r0, sp, #0x10 + add r3, r5, #0x50 + mov r1, #0x100 + bl OS_SNPrintf + ldr r0, _021DE718 ; =0x02210520 + ldr r4, [r0] + add r0, r4, #0x91 + bl strlen + mov r1, r0 + add r2, sp, #0x110 + add r0, r4, #0x91 + mov r3, #0x190 + bl FUN_021DD4FC + cmp r0, #0 + bge _021DE630 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl FUN_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE630: + ldr r0, _021DE718 ; =0x02210520 + ldr r4, _021DE724 ; =FUN_021DE774 + ldr r2, [r0] + ldr r0, _021DE728 ; =FUN_021DE884 + add r1, r2, #8 + str r1, [sp] + add r1, r2, #0x28 + str r1, [sp, #4] + ldr r1, _021DE72C ; =FUN_021DE86C + add r2, sp, #0x10 + add r3, sp, #0x110 + str r4, [sp, #8] + bl FUN_02206EFC + cmp r0, #0 + bne _021DE684 + mov r0, #0 + mov r1, #8 + mvn r2, #0 + bl FUN_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE684: + ldr r1, _021DE718 ; =0x02210520 + mov r0, #0 + ldr r3, [r1] + mov r4, #1 + mov r1, r0 + mvn r2, #0 + str r4, [r3, #0x48] + bl FUN_021DE774 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6AC: + cmp r0, #4 + bne _021DE6EC + add r0, sp, #0xc + bl FUN_021DD808 + ldr r1, [sp, #0xc] + mov r0, #0xe + bl FUN_021DD6B0 + ldr r1, _021DE718 ; =0x02210520 + mov r0, #0 + ldr r2, [r1] + mov r1, #3 + ldr r3, [r2] + mvn r2, #0 + blx r3 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DE6EC: + cmp r0, #5 + bne _021DE704 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_021DE774 +_021DE704: + mov r0, r4 + bl OS_Sleep + b _021DE58C + + arm_func_start FUN_021DE710 +FUN_021DE710: ; 0x021DE710 + add sp, sp, #0x2a4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE718: .word 0x02210520 +_021DE71C: .word 0x0220D300 +_021DE720: .word 0x0220D314 +_021DE724: .word FUN_021DE774 +_021DE728: .word FUN_021DE884 +_021DE72C: .word FUN_021DE86C + + arm_func_start FUN_021DE730 +FUN_021DE730: ; 0x021DE730 + stmdb sp!, {r4, lr} + ldr r0, _021DE770 ; =0x02210520 + ldr r0, [r0] + add r0, r0, #0x9c0 + bl OS_JoinThread + ldr r0, _021DE770 ; =0x02210520 + ldr r0, [r0] + ldr r4, [r0, #4] + bl FUN_021DE86C + ldr r0, _021DE770 ; =0x02210520 + mov r1, #0 + str r1, [r0] + cmp r4, #0 + ldmeqia sp!, {r4, pc} + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE770: .word 0x02210520 + + arm_func_start FUN_021DE774 +FUN_021DE774: ; 0x021DE774 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r1 + mov r6, r0 + mov r4, r2 + bne _021DE79C + ldr r3, _021DE854 ; =0x02210520 + ldr r3, [r3] + ldr r3, [r3] + blx r3 + ldmia sp!, {r4, r5, r6, pc} +_021DE79C: + cmp r5, #8 + addls pc, pc, r5, lsl #2 + b _021DE830 +_021DE7A8: ; jump table + b _021DE830 ; case 0 + b _021DE7CC ; case 1 + b _021DE7DC ; case 2 + b _021DE7E4 ; case 3 + b _021DE7F4 ; case 4 + b _021DE804 ; case 5 + b _021DE834 ; case 6 + b _021DE818 ; case 7 + b _021DE820 ; case 8 +_021DE7CC: + ldr r1, _021DE858 ; =0xFFFF86E7 + mov r0, #9 + bl FUN_021DD6B0 + b _021DE834 +_021DE7DC: + bl OS_Terminate + b _021DE834 +_021DE7E4: + ldr r1, _021DE85C ; =0xFFFF86D4 + mov r0, #0xf + bl FUN_021DD6B0 + b _021DE834 +_021DE7F4: + ldr r1, _021DE860 ; =0xFFFF86CA + mov r0, #0xe + bl FUN_021DD6B0 + b _021DE834 +_021DE804: + ldr r1, _021DE864 ; =0xFFFF86E8 + mov r0, #0xe + sub r1, r1, r4 + bl FUN_021DD6B0 + b _021DE834 +_021DE818: + bl OS_Terminate + b _021DE834 +_021DE820: + ldr r1, _021DE868 ; =0xFFFF86DF + mov r0, #9 + bl FUN_021DD6B0 + b _021DE834 +_021DE830: + bl OS_Terminate +_021DE834: + ldr r1, _021DE854 ; =0x02210520 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + ldr r3, [r2] + mov r2, r4 + blx r3 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DE854: .word 0x02210520 +_021DE858: .word 0xFFFF86E7 +_021DE85C: .word 0xFFFF86D4 +_021DE860: .word 0xFFFF86CA +_021DE864: .word 0xFFFF86E8 +_021DE868: .word 0xFFFF86DF + + arm_func_start FUN_021DE86C +FUN_021DE86C: ; 0x021DE86C + ldr ip, _021DE880 ; =FUN_021DD904 + mov r1, r0 + mov r0, #6 + mov r2, #0 + bx ip + .align 2, 0 +_021DE880: .word FUN_021DD904 + + arm_func_start FUN_021DE884 +FUN_021DE884: ; 0x021DE884 + ldr ip, _021DE898 ; =FUN_021DD924 + mov r2, r1 + mov r1, r0 + mov r0, #6 + bx ip + .align 2, 0 +_021DE898: .word FUN_021DD924 + + arm_func_start FUN_021DE89C +FUN_021DE89C: ; 0x021DE89C + ldrh r1, [r0] + mov r2, #0 + cmp r1, #0 + beq _021DE8C0 +_021DE8AC: + add r2, r2, #1 + mov r1, r2, lsl #1 + ldrh r1, [r0, r1] + cmp r1, #0 + bne _021DE8AC +_021DE8C0: + mov r0, r2 + bx lr + + arm_func_start FUN_021DE8C8 +FUN_021DE8C8: ; 0x021DE8C8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _021DE9E4 ; =0x02210524 + mov r1, #0 + ldr r3, [r2, #4] + ldr ip, [r2] + cmp r3, r1 + mov r4, r0 + cmpeq ip, r1 + bne _021DE98C + ldr r0, [r2, #0xc] + ldr r3, [r2, #8] + cmp r0, r1 + cmpeq r3, r1 + bne _021DE98C + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + cmp r0, r1 + cmpeq r2, r1 + bne _021DE98C + add r0, sp, #0 + bl OS_GetMacAddress + bl OS_GetTick + ldr r2, [sp] + ldr r3, [sp, #4] + mov lr, r2, lsr #0x18 + mov r2, r1, lsl #0x18 + orr lr, lr, r3, lsl #8 + mvn r1, #0xff000000 + mov ip, r3, lsr #0x18 + and r1, lr, r1 + orr r3, r1, r0, lsl #24 + and r1, ip, #0 + orr r2, r2, r0, lsr #8 + orr r1, r1, r2 + str r1, [sp, #4] + ldr ip, _021DE9E4 ; =0x02210524 + add r0, sp, #0 + str r3, [sp] + ldmia r0, {r2, r3} + stmia ip, {r2, r3} + ldr r3, _021DE9E8 ; =0x6C078965 + ldr r2, _021DE9EC ; =0x5D588B65 + ldr r1, _021DE9F0 ; =0x00269EC3 + mov r0, #0 + str r3, [ip, #8] + str r2, [ip, #0xc] + str r1, [ip, #0x10] + str r0, [ip, #0x14] +_021DE98C: + ldr r1, _021DE9E4 ; =0x02210524 + ldr r3, [r1, #8] + ldr r2, [r1] + ldr r0, [r1, #4] + umull lr, ip, r3, r2 + mla ip, r3, r0, ip + ldr r0, [r1, #0xc] + ldr r3, [r1, #0x10] + mla ip, r0, r2, ip + adds r2, r3, lr + ldr r0, [r1, #0x14] + str r2, [r1] + adc r0, r0, ip + cmp r4, #0 + str r0, [r1, #4] + movne r3, #0 + umullne r2, r1, r0, r4 + mlane r1, r0, r3, r1 + mlane r1, r3, r4, r1 + movne r0, r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DE9E4: .word 0x02210524 +_021DE9E8: .word 0x6C078965 +_021DE9EC: .word 0x5D588B65 +_021DE9F0: .word 0x00269EC3 + + arm_func_start FUN_021DE9F4 +FUN_021DE9F4: ; 0x021DE9F4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r4, r1 + mov r7, r0 + mov r6, r3 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r2 + mov r1, r6 + bl strchr + movs r5, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021DEA30: + mov r0, r7 + bl strlen + mov r2, r0 + mov r1, r7 + add r0, r5, #1 + bl strncmp + cmp r0, #0 + bne _021DEA68 + mov r0, r7 + bl strlen + add r0, r0, r5 + ldrsb r0, [r0, #1] + cmp r6, r0 + beq _021DEAA4 +_021DEA68: + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r0, #1 + bl strchr + movs r5, r0 + bne _021DEA30 + add sp, sp, #4 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DEAA4: + mov r1, r6 + add r0, r5, #1 + bl strchr + movs r5, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r5, #1 + bl strchr + cmp r0, #0 + addne r1, r5, #1 + subne r6, r0, r1 + bne _021DEAE8 + add r0, r5, #1 + bl strlen + mov r6, r0 +_021DEAE8: + mov r0, r4 + mov r2, r6 + add r1, r5, #1 + bl strncpy + mov r1, #0 + mov r0, r6 + strb r1, [r4, r6] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021DEB0C +FUN_021DEB0C: ; 0x021DEB0C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r4, r3 + mov r0, r5 + mov r1, #0 + bl strchr + mov r2, r0 + mov r0, r7 + mov r1, r6 + mov r3, r4 + bl FUN_021DEB54 + mov r0, r5 + bl strlen + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021DEB54 +FUN_021DEB54: ; 0x021DEB54 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + str r0, [sp] + mov r4, r2 + str r3, [sp, #4] + str r1, [sp, #8] + ldr r2, _021DEB8C ; =0x0220D328 + mov r0, r4 + mov r1, #0x1000 + bl OS_SNPrintf + mov r0, r4 + bl strlen + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DEB8C: .word 0x0220D328 + + arm_func_start FUN_021DEB90 +FUN_021DEB90: ; 0x021DEB90 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021FD43C + bl FUN_021EFB28 + ldr r2, _021DEBCC ; =0x02210540 + ldr r1, _021DEBD0 ; =0xFFFE8515 + str r0, [r2] + mov r0, #9 + bl FUN_021DD6B0 + ldr r0, _021DEBD4 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DEBCC: .word 0x02210540 +_021DEBD0: .word 0xFFFE8515 +_021DEBD4: .word 0x0221053C + + arm_func_start FUN_021DEBD8 +FUN_021DEBD8: ; 0x021DEBD8 + ldr ip, _021DEBE0 ; =FUN_021EAC1C + bx ip + .align 2, 0 +_021DEBE0: .word FUN_021EAC1C + + arm_func_start FUN_021DEBE4 +FUN_021DEBE4: ; 0x021DEBE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r7, #0 + mov fp, r0 + mov sb, r1 + mov sl, r7 + bl FUN_021E852C + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sb, #4 + addls pc, pc, sb, lsl #2 + b _021DEC48 +_021DEC18: ; jump table + b _021DEC2C ; case 0 + b _021DEC2C ; case 1 + b _021DEC34 ; case 2 + b _021DEC34 ; case 3 + b _021DEC40 ; case 4 +_021DEC2C: + mov r4, r7 + b _021DEC48 +_021DEC34: + mov r4, #6 + ldr r6, _021DEF4C ; =0xFFFFE250 + b _021DEC48 +_021DEC40: + ldr r6, _021DEF50 ; =0xFFFFE24F + mov r4, #9 +_021DEC48: + cmp r4, #0 + bne _021DED00 + mov r0, fp + bl FUN_021FD3C4 + movs r7, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021DEF54 ; =0x0221053C + ldrb r8, [r7, #1] + ldr r1, [r0] + mov r5, #1 + mov r0, r5,lsl r8 + ldr r1, [r1, #0x644] + ands r0, r1, r0 + mov r0, r8 + moveq r5, #0 + bl FUN_021EA9D8 + ldr r0, _021DEF54 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + bne _021DECA8 + cmp sb, #0 + beq _021DECBC +_021DECA8: + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DECC0 + cmp r8, #0 + bne _021DECC0 +_021DECBC: + mov sl, #1 +_021DECC0: + mov r0, r8 + bl FUN_021DF56C + ldr r1, _021DEF54 ; =0x0221053C + ldrb r7, [r7] + ldr r2, _021DEF58 ; =0x02210544 + mov fp, #0 + ldr r3, [r1] + str fp, [r2, r7, lsl #2] + ldrb r2, [r3, #0x361] + mov r7, r0 + sub r0, r2, #1 + strb r0, [r3, #0x361] + ldr r1, [r1] + ldrb r0, [r1, #0x368] + sub r0, r0, #1 + strb r0, [r1, #0x368] +_021DED00: + ldr r0, _021DEF54 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DED58 + ldr r0, [r1, #0x24] + cmp r0, #6 + bne _021DED58 + cmp r5, #0 + bne _021DED58 + ldrb r0, [r1, #0x369] + cmp r0, #2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r4, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_021E85D4 + mov r0, r7 + bl FUN_021E8A50 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DED58: + mov r0, r4 + mov r1, r6 + mov r2, r7 + bl FUN_021E8A74 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r4, #0 + beq _021DED90 + mov r0, r4 + mov r1, r6 + bl FUN_021DD6B0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DED90: + ldr r0, _021DEF54 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEE04 + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DEDBC + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DEE04 +_021DEDBC: + ldr r2, _021DEF54 ; =0x0221053C + ldr r1, [r2] + ldrb r0, [r1, #0x361] + add r6, r0, #2 + add r3, r1, r6, lsl #2 + ldr r3, [r3, #0x448] + cmp r3, #0 + beq _021DEE04 + add r3, r1, r6 + ldrb r3, [r3, #0x624] + add r0, r0, #1 + add r0, r1, r0 + strb r3, [r0, #0x624] + ldr r0, [r2] + ldrb r1, [r0, #0x361] + add r0, r1, #1 + add r1, r1, #3 + bl FUN_021E8830 +_021DEE04: + ldr r0, _021DEF54 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + bne _021DEE4C + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEE2C + bl FUN_021E85D4 + b _021DEE68 +_021DEE2C: + ldrb r0, [r1, #0x361] + cmp r0, #0 + bne _021DEE68 + ldr r1, _021DEF5C ; =0x0220D334 + mov r0, #1 + mov r2, #0 + bl FUN_021E1E30 + b _021DEE68 +_021DEE4C: + ldrb r0, [r1, #0x361] + cmp r0, #0 + bne _021DEE68 + ldr r1, _021DEF5C ; =0x0220D334 + mov r0, #1 + mov r2, #0 + bl FUN_021E1E30 +_021DEE68: + ldr r0, _021DEF54 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #0 + beq _021DEE88 + ldrb r0, [r1, #0x369] + cmp r0, #1 + bne _021DEEA4 +_021DEE88: + ldr r0, _021DEF54 ; =0x0221053C + ldr r2, [r0] + ldrb r1, [r2, #0x368] + strb r1, [r2, #0x36a] + ldr r0, [r0] + ldr r0, [r0, #0x364] + bl FUN_02202308 +_021DEEA4: + ldr r0, _021DEF54 ; =0x0221053C + ldr r6, [r0] + ldr r0, [r6, #0x90] + cmp r0, #0 + beq _021DEF00 + cmp r5, #0 + beq _021DEF00 + cmp sb, #0 + moveq r5, #1 + mov r0, r7 + movne r5, #0 + bl FUN_021E1F18 + str r0, [sp] + ldr r1, [r6, #0x94] + ldr r0, _021DEF54 ; =0x0221053C + str r1, [sp, #4] + ldr r1, [r0] + mov r0, r4 + ldr r4, [r1, #0x90] + mov r1, r5 + mov r2, sl + mov r3, r8 + blx r4 +_021DEF00: + ldr r0, _021DEF54 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x2d] + cmp r0, #0 + bne _021DEF24 + ldrb r0, [r1, #0x369] + cmp r0, #2 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021DEF24: + ldrb r0, [r1, #0x361] + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_02200D6C + bl FUN_021E8DC0 + mov r0, #3 + bl FUN_021DF5CC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021DEF4C: .word 0xFFFFE250 +_021DEF50: .word 0xFFFFE24F +_021DEF54: .word 0x0221053C +_021DEF58: .word 0x02210544 +_021DEF5C: .word 0x0220D334 + + arm_func_start FUN_021DEF60 +FUN_021DEF60: ; 0x021DEF60 + ldr ip, _021DEF68 ; =FUN_021EAC5C + bx ip + .align 2, 0 +_021DEF68: .word FUN_021EAC5C + + arm_func_start FUN_021DEF6C +FUN_021DEF6C: ; 0x021DEF6C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + add r4, sp, #0 + mov r3, #0 + strb r3, [r4] + strb r3, [r4, #1] + strb r3, [r4, #2] + strb r3, [r4, #3] + strb r3, [r4, #4] + strb r3, [r4, #5] + strb r3, [r4, #6] + strb r3, [r4, #7] + strb r3, [r4, #8] + strb r3, [r4, #9] + strb r3, [r4, #0xa] + mov r5, r1 + strb r3, [r4, #0xb] + ldr r4, [r5, #8] + mov r6, r0 + bl FUN_021E2068 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0C8 ; =0x0220D338 + bl strlen + mov r2, r0 + ldr r1, _021DF0C8 ; =0x0220D338 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0C8 ; =0x0220D338 + bl strlen + add r4, r4, r0 + mov r0, r4 + mov r1, #0x76 + bl strchr + sub r7, r0, r4 + add r0, sp, #0 + mov r1, r4 + mov r2, r7 + bl strncpy + cmp r7, #0xa + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0CC ; =0x0220D340 + add r1, r7, #1 + add r4, r4, r1 + bl strlen + mov r2, r0 + ldr r1, _021DF0CC ; =0x0220D340 + mov r0, r4 + bl memcmp + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF0D0 ; =0x0221053C + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + beq _021DF0A8 + cmp r0, #6 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF0A8 + ldrb r0, [r1, #0x369] + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} +_021DF0A8: + ldr r0, _021DF0CC ; =0x0220D340 + bl strlen + add r2, r4, r0 + ldr r1, [r5] + mov r0, r6 + bl FUN_021E8EF4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF0C8: .word 0x0220D338 +_021DF0CC: .word 0x0220D340 +_021DF0D0: .word 0x0221053C + + arm_func_start FUN_021DF0D4 +FUN_021DF0D4: ; 0x021DF0D4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [r1, #4] + ldr r0, _021DF120 ; =0x00000603 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DF124 ; =0x00000901 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _021DF128 ; =0x00000B01 + cmp r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #3 + bl FUN_021DF414 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF120: .word 0x00000603 +_021DF124: .word 0x00000901 +_021DF128: .word 0x00000B01 + + arm_func_start FUN_021DF12C +FUN_021DF12C: ; 0x021DF12C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021DF174 + cmp r6, #0 + beq _021DF174 + ldr r0, _021DF2AC ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0, #0x4f4] + cmp r0, #0 + bne _021DF1D8 + bl FUN_021E8DC0 + mov r0, #3 + bl FUN_021DF5CC + b _021DF1D8 +_021DF174: + cmp r7, #0 + bne _021DF1D8 + mov r0, #6 + bl FUN_021DF5CC + ldr r1, _021DF2AC ; =0x0221053C + mov r0, #0 + ldr r3, [r1] + ldrb r1, [r3, #0x361] + cmp r1, #0 + blt _021DF1D8 + ldr r2, [r3, #0x64] +_021DF1A0: + add r1, r3, r0, lsl #2 + ldr r1, [r1, #0x448] + cmp r2, r1 + bne _021DF1C8 + ldr r1, _021DF2AC ; =0x0221053C + ldr r1, [r1] + add r0, r1, r0 + ldrb r0, [r0, #0x624] + strb r0, [r1, #0x2c] + b _021DF1D8 +_021DF1C8: + ldrb r1, [r3, #0x361] + add r0, r0, #1 + cmp r0, r1 + ble _021DF1A0 +_021DF1D8: + ldr r1, _021DF2AC ; =0x0221053C + ldr r0, _021DF2B0 ; =0x00000624 + ldr r2, [r1] + ldrb r1, [r2, #0x361] + add r0, r2, r0 + add r1, r1, #1 + bl FUN_021DF530 + ldr r1, _021DF2AC ; =0x0221053C + ldr r1, [r1] + str r0, [r1, #0x644] + bl FUN_021E8780 + ldr r0, _021DF2AC ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF224 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DF258 +_021DF224: + ldr r0, _021DF2AC ; =0x0221053C + ldr r1, [sp, #0x20] + ldr r3, [r0] + mov r0, r7 + str r1, [sp] + ldr r2, [r3, #0x8c] + mov r1, r6 + str r2, [sp, #4] + ldr r6, [r3, #0x88] + mov r2, r5 + mov r3, r4 + blx r6 + b _021DF26C +_021DF258: + ldr r2, [r1, #0x84] + ldr r3, [r1, #0x80] + mov r0, r7 + mov r1, r6 + blx r3 +_021DF26C: + cmp r7, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021DF2AC ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r0, #0x24] + cmp r0, #5 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #3 + bl FUN_021DF5CC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF2AC: .word 0x0221053C +_021DF2B0: .word 0x00000624 + + arm_func_start FUN_021DF2B4 +FUN_021DF2B4: ; 0x021DF2B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021DF300 ; =0x0221053C + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + ldr r0, [r0, #0x28] + cmp r0, #4 + beq _021DF2DC + bl FUN_021DF5CC +_021DF2DC: + ldr r1, _021DF300 ; =0x0221053C + mov r0, r5 + ldr r3, [r1] + mov r1, r4 + ldr r2, [r3, #0x7c] + ldr r3, [r3, #0x78] + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DF300: .word 0x0221053C + + arm_func_start FUN_021DF304 +FUN_021DF304: ; 0x021DF304 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + mov r4, r1 + bne _021DF334 + ldr r1, _021DF36C ; =0x0221053C + mov r0, #3 + ldr r1, [r1] + str r4, [r1, #0x64] + bl FUN_021DF5CC + bl FUN_021E1ED4 + b _021DF33C +_021DF334: + mov r0, #0 + bl FUN_021DF5CC +_021DF33C: + ldr r0, _021DF36C ; =0x0221053C + ldr r0, [r0] + ldr r3, [r0, #0x70] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r0, #0x74] + mov r0, r5 + mov r1, r4 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021DF36C: .word 0x0221053C + + arm_func_start FUN_021DF370 +FUN_021DF370: ; 0x021DF370 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _021DF3F4 +_021DF38C: ; jump table + b _021DF3F4 ; case 0 + b _021DF3AC ; case 1 + b _021DF3B8 ; case 2 + b _021DF3C8 ; case 3 + b _021DF3D4 ; case 4 + b _021DF3B8 ; case 5 + b _021DF3E0 ; case 6 + b _021DF3EC ; case 7 +_021DF3AC: + mov r0, #9 + mvn r2, #0 + b _021DF3F4 +_021DF3B8: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _021DF3F4 +_021DF3C8: + mov r0, #6 + mvn r2, #9 + b _021DF3F4 +_021DF3D4: + mov r0, #6 + mvn r2, #0x1d + b _021DF3F4 +_021DF3E0: + mov r0, #6 + mvn r2, #0x45 + b _021DF3F4 +_021DF3EC: + mov r0, #6 + mvn r2, #0x4f +_021DF3F4: + cmp r0, #0 + beq _021DF408 + ldr r1, _021DF410 ; =0xFFFEFA48 + add r1, r2, r1 + bl FUN_021E0EAC +_021DF408: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DF410: .word 0xFFFEFA48 + + arm_func_start FUN_021DF414 +FUN_021DF414: ; 0x021DF414 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #4 + addls pc, pc, r6, lsl #2 + b _021DF470 +_021DF430: ; jump table + b _021DF470 ; case 0 + b _021DF444 ; case 1 + b _021DF450 ; case 2 + b _021DF45C ; case 3 + b _021DF468 ; case 4 +_021DF444: + mov r4, #9 + mvn r5, #0 + b _021DF470 +_021DF450: + mov r4, #9 + mvn r5, #1 + b _021DF470 +_021DF45C: + mov r4, #6 + mvn r5, #9 + b _021DF470 +_021DF468: + mov r4, #6 + mvn r5, #0x13 +_021DF470: + ldr r0, _021DF51C ; =0x0221053C + ldr r1, [r0] + ldr r0, [r1, #0x24] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021DF500 +_021DF488: ; jump table + b _021DF500 ; case 0 + b _021DF4A0 ; case 1 + b _021DF4B8 ; case 2 + b _021DF500 ; case 3 + b _021DF4F4 ; case 4 + b _021DF4DC ; case 5 +_021DF4A0: + ldr r1, _021DF520 ; =0xFFFF11B8 + mov r0, r4 + add r5, r5, r1 + mov r1, r5 + bl FUN_021E0EAC + b _021DF508 +_021DF4B8: + ldr r1, [r1, #0x9c] + ldr r0, _021DF520 ; =0xFFFF11B8 + cmp r1, #1 + add r5, r5, r0 + bge _021DF508 + mov r0, r4 + mov r1, r5 + bl FUN_021E0EAC + b _021DF508 +_021DF4DC: + ldr r1, _021DF524 ; =0xFFFEC398 + mov r0, r4 + add r5, r5, r1 + mov r1, r5 + bl FUN_021E8E08 + b _021DF508 +_021DF4F4: + ldr r0, _021DF528 ; =0xFFFEEAA8 + add r5, r5, r0 + b _021DF508 +_021DF500: + ldr r0, _021DF52C ; =0xFFFE9C88 + add r5, r5, r0 +_021DF508: + mov r0, r4 + mov r1, r5 + bl FUN_021E2114 + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF51C: .word 0x0221053C +_021DF520: .word 0xFFFF11B8 +_021DF524: .word 0xFFFEC398 +_021DF528: .word 0xFFFEEAA8 +_021DF52C: .word 0xFFFE9C88 + + arm_func_start FUN_021DF530 +FUN_021DF530: ; 0x021DF530 + stmdb sp!, {lr} + sub sp, sp, #4 + mov lr, #0 + mov ip, lr + cmp r1, #0 + ble _021DF560 + mov r3, #1 +_021DF54C: + ldrb r2, [r0, ip] + add ip, ip, #1 + cmp ip, r1 + orr lr, lr, r3, lsl r2 + blt _021DF54C +_021DF560: + mov r0, lr + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021DF56C +FUN_021DF56C: ; 0x021DF56C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + bl FUN_021E874C + mov r1, r0 + cmp r1, #0 + mov r0, #0 + ble _021DF5B0 + ldr r3, [sp] +_021DF594: + ldrb r2, [r3] + cmp r4, r2 + beq _021DF5B0 + add r0, r0, #1 + cmp r0, r1 + add r3, r3, #1 + blt _021DF594 +_021DF5B0: + cmp r0, r1 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021E8830 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021DF5CC +FUN_021DF5CC: ; 0x021DF5CC + ldr r1, _021DF5E8 ; =0x0221053C + ldr r3, [r1] + ldr r2, [r3, #0x24] + str r2, [r3, #0x28] + ldr r1, [r1] + str r0, [r1, #0x24] + bx lr + .align 2, 0 +_021DF5E8: .word 0x0221053C + + arm_func_start FUN_021DF5EC +FUN_021DF5EC: ; 0x021DF5EC + bx lr + + arm_func_start FUN_021DF5F0 +FUN_021DF5F0: ; 0x021DF5F0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, #0 + ldr r4, _021DF634 ; =0x02210544 +_021DF600: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _021DF620 + bl FUN_021FD3C4 + ldrb r0, [r0, #1] + cmp r6, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021DF620: + add r5, r5, #1 + cmp r5, #0x20 + blt _021DF600 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF634: .word 0x02210544 + + arm_func_start FUN_021DF638 +FUN_021DF638: ; 0x021DF638 + ldr r1, _021DF644 ; =0x022105C4 + add r0, r1, r0, lsl #3 + bx lr + .align 2, 0 +_021DF644: .word 0x022105C4 + + arm_func_start FUN_021DF648 +FUN_021DF648: ; 0x021DF648 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + mov ip, #0 + ble _021DF684 + ldr r2, _021DF6B8 ; =0x0221053C + ldr r3, [r2] +_021DF664: + add r2, r3, ip, lsl #2 + ldr r2, [r2, #0x448] + cmp r0, r2 + beq _021DF684 + add r2, ip, #1 + and ip, r2, #0xff + cmp ip, r1 + blt _021DF664 +_021DF684: + cmp ip, r1 + addge sp, sp, #4 + movge r0, #0 + ldmgeia sp!, {pc} + ldr r0, _021DF6B8 ; =0x0221053C + ldr r0, [r0] + add r0, r0, ip + ldrb r0, [r0, #0x624] + bl FUN_021DF760 + bl FUN_021DF730 + bl FUN_021DF6BC + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF6B8: .word 0x0221053C + + arm_func_start FUN_021DF6BC +FUN_021DF6BC: ; 0x021DF6BC + ldr r1, _021DF6C8 ; =0x02210544 + add r0, r1, r0, lsl #2 + bx lr + .align 2, 0 +_021DF6C8: .word 0x02210544 + + arm_func_start FUN_021DF6CC +FUN_021DF6CC: ; 0x021DF6CC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DF6FC ; =0x02210544 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + ldr r1, _021DF700 ; =0x022105C4 + mov r0, #0 + mov r2, #0x100 + bl MIi_CpuClear32 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF6FC: .word 0x02210544 +_021DF700: .word 0x022105C4 + + arm_func_start FUN_021DF704 +FUN_021DF704: ; 0x021DF704 + ldr r2, _021DF72C ; =0x02210544 + mov r0, #0 +_021DF70C: + ldr r1, [r2, r0, lsl #2] + cmp r1, #0 + bxeq lr + add r0, r0, #1 + cmp r0, #0x20 + blt _021DF70C + mvn r0, #0 + bx lr + .align 2, 0 +_021DF72C: .word 0x02210544 + + arm_func_start FUN_021DF730 +FUN_021DF730: ; 0x021DF730 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021FD3C4 + ldrb r0, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021DF748 +FUN_021DF748: ; 0x021DF748 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021FD3C4 + ldrb r0, [r0, #1] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021DF760 +FUN_021DF760: ; 0x021DF760 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _021DF7BC ; =0x0221053C + mov r6, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, _021DF7C0 ; =0x02210544 + mov r5, #0 +_021DF784: + ldr r0, [r4, r5, lsl #2] + cmp r0, #0 + beq _021DF7A8 + bl FUN_021FD3C4 + ldrb r0, [r0, #1] + cmp r6, r0 + ldreq r0, _021DF7C0 ; =0x02210544 + ldreq r0, [r0, r5, lsl #2] + ldmeqia sp!, {r4, r5, r6, pc} +_021DF7A8: + add r5, r5, #1 + cmp r5, #0x20 + blt _021DF784 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DF7BC: .word 0x0221053C +_021DF7C0: .word 0x02210544 + + arm_func_start FUN_021DF7C4 +FUN_021DF7C4: ; 0x021DF7C4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _021DF87C ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #0x4000 + bl FUN_021DE8C8 + add r0, r0, #0xc000 + mov r1, r0, lsl #0x10 + ldr r3, _021DF87C ; =0x0221053C + mov r0, #0 + mov r2, r0 + mov r1, r1, lsr #0x10 + ldr r4, [r3] + bl FUN_021FFEB0 + ldr r1, _021DF880 ; =FUN_021DEB90 + ldr r2, _021DF87C ; =0x0221053C + str r1, [sp] + mov r1, r0 + ldr r0, [r2] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl FUN_021FD71C + mov r4, r0 + bl FUN_021DF370 + cmp r0, #0 + addne sp, sp, #8 + movne r0, r4 + ldmneia sp!, {r4, pc} + ldr r0, _021DF87C ; =0x0221053C + ldr r1, _021DF884 ; =FUN_021E9204 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_021FD6C8 + ldr r0, _021DF87C ; =0x0221053C + ldr r1, _021DF888 ; =FUN_021E9464 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_021FD434 + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DF87C: .word 0x0221053C +_021DF880: .word FUN_021DEB90 +_021DF884: .word FUN_021E9204 +_021DF888: .word FUN_021E9464 + + arm_func_start FUN_021DF88C +FUN_021DF88C: ; 0x021DF88C + ldr r0, _021DF8A4 ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x24] + moveq r0, #0 + bx lr + .align 2, 0 +_021DF8A4: .word 0x0221053C + + arm_func_start FUN_021DF8A8 +FUN_021DF8A8: ; 0x021DF8A8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021DF8F0 ; =0x0221053C + ldr r2, [r1] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r1, #1 + mov r1, r1,lsl r0 + ldr r2, [r2, #0x644] + ands r1, r2, r1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl FUN_021DF5F0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF8F0: .word 0x0221053C + + arm_func_start FUN_021DF8F4 +FUN_021DF8F4: ; 0x021DF8F4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _021DF954 ; =0x0221053C + ldr r3, [r2] + cmp r3, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldr r1, _021DF958 ; =0x00000624 + add r1, r3, r1 + str r1, [r0] + ldr r2, [r2] + ldrb r1, [r2, #0x369] + cmp r1, #2 + beq _021DF93C + ldrb r1, [r2, #0x369] + cmp r1, #3 + bne _021DF948 +_021DF93C: + bl FUN_021E86A4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021DF948: + bl FUN_021E874C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF954: .word 0x0221053C +_021DF958: .word 0x00000624 + + arm_func_start FUN_021DF95C +FUN_021DF95C: ; 0x021DF95C + ldr r0, _021DF974 ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + ldrneb r0, [r0, #0x2c] + moveq r0, #0 + bx lr + .align 2, 0 +_021DF974: .word 0x0221053C + + arm_func_start FUN_021DF978 +FUN_021DF978: ; 0x021DF978 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DF9D0 ; =0x0221053C + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021DF9B0 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021DF9C0 +_021DF9B0: + bl FUN_021E87D8 + add sp, sp, #4 + add r0, r0, #1 + ldmfd sp!, {pc} +_021DF9C0: + bl FUN_021E8804 + add r0, r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DF9D0: .word 0x0221053C + + arm_func_start FUN_021DF9D4 +FUN_021DF9D4: ; 0x021DF9D4 + stmdb sp!, {r4, lr} + ldr r1, _021DFA3C ; =0x0221053C + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _021DFA14 + bl FUN_021DD6D4 + cmp r0, #0 + bne _021DFA14 + ldr r0, _021DFA3C ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #5 + beq _021DFA1C + cmp r0, #6 + beq _021DFA1C +_021DFA14: + mvn r0, #0 + ldmia sp!, {r4, pc} +_021DFA1C: + mov r0, r4 + bl FUN_021DF760 + cmp r0, #0 + mvneq r0, #1 + ldmeqia sp!, {r4, pc} + bl FUN_021FD488 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021DFA3C: .word 0x0221053C + + arm_func_start FUN_021DFA40 +FUN_021DFA40: ; 0x021DFA40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021DFAF0 ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + beq _021DFA80 + bl FUN_021DD6D4 + cmp r0, #0 + bne _021DFA80 + ldr r0, _021DFAF0 ; =0x0221053C + ldr r2, [r0] + ldr r0, [r2, #0x24] + cmp r0, #5 + beq _021DFA8C + cmp r0, #6 + beq _021DFA8C +_021DFA80: + add sp, sp, #4 + mvn r0, #0 + ldmfd sp!, {pc} +_021DFA8C: + ldrb r0, [r2, #0x361] + cmp r0, #0 + bne _021DFAC0 + ldr r1, _021DFAF4 ; =0x0220D334 + mov r0, #1 + mov r2, #0 + bl FUN_021E1E30 + bl FUN_02200D6C + mov r0, #3 + bl FUN_021DF5CC + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021DFAC0: + mov r1, #1 + ldr r0, _021DFAF0 ; =0x0221053C + strb r1, [r2, #0x2d] + ldr r0, [r0] + ldr r0, [r0] + bl FUN_021FD45C + ldr r1, _021DFAF0 ; =0x0221053C + mov r0, #0 + ldr r1, [r1] + strb r0, [r1, #0x2d] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021DFAF0: .word 0x0221053C +_021DFAF4: .word 0x0220D334 + + arm_func_start FUN_021DFAF8 +FUN_021DFAF8: ; 0x021DFAF8 + ldr r2, _021DFB1C ; =0x0221053C + ldr r3, [r2] + cmp r3, #0 + moveq r0, #0 + strne r0, [r3, #0x90] + ldrne r2, [r2] + movne r0, #1 + strne r1, [r2, #0x94] + bx lr + .align 2, 0 +_021DFB1C: .word 0x0221053C + + arm_func_start FUN_021DFB20 +FUN_021DFB20: ; 0x021DFB20 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x224 + mvn ip, #0 + mov r7, r0 + mov r6, r1 + mov r4, r2 + mov r5, r3 + str ip, [sp, #8] + bl FUN_021DD6D4 + cmp r0, #0 + bne _021DFB60 + ldr r0, _021DFD04 ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #3 + beq _021DFB6C +_021DFB60: + add sp, sp, #0x224 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFB6C: + bl FUN_021DF6CC + ldr r1, _021DFD04 ; =0x0221053C + mov r0, #5 + ldr r2, [r1] + str r6, [r2, #0x88] + ldr r1, [r1] + str r4, [r1, #0x8c] + bl FUN_021DF5CC + mov r0, r7 + bl FUN_021E1F84 + movs r4, r0 + beq _021DFBB8 + ldr r0, _021DFD04 ; =0x0221053C + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x1c + bl FUN_021F05F4 + cmp r0, #0 + bne _021DFBC0 +_021DFBB8: + mov r5, #0xb + b _021DFC8C +_021DFBC0: + ldr r0, _021DFD04 ; =0x0221053C + add r2, sp, #8 + ldr r0, [r0] + mov r1, r4 + add r0, r0, #0x1c + bl FUN_021F0664 + ldr r0, _021DFD04 ; =0x0221053C + ldr r1, [sp, #8] + ldr r0, [r0] + add r2, sp, #0x10 + add r0, r0, #0x1c + bl FUN_021F06E4 + ldr r0, [sp, #0x14] + cmp r0, #6 + movne r5, #0xb + bne _021DFC8C + ldr r0, _021DFD08 ; =0x0220D344 + mov r6, #0x30 + add r1, sp, #0xc + add r2, sp, #0x18 + mov r3, #0x2f + strb r6, [sp, #0xc] + bl FUN_021DE9F4 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + and r6, r0, #0xff + ldr r0, _021DFD0C ; =0x0220D348 + add r1, sp, #0xc + add r2, sp, #0x18 + mov r3, #0x2f + bl FUN_021DE9F4 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0xa + bl strtoul + and r0, r0, #0xff + cmp r0, r6 + moveq r5, #0xd + beq _021DFC8C + ldr r6, [sp, #0x238] + ldr r1, _021DFD10 ; =FUN_021DF12C + mov r0, r4 + mov r3, r5 + mov r2, #0 + str r6, [sp] + bl FUN_021E9FD0 + add sp, sp, #0x224 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFC8C: + mov r0, r5 + mov r1, #0 + bl FUN_021DD6B0 + ldr r0, _021DFD04 ; =0x0221053C + mov r1, #0 + ldr r4, [r0] + mov r0, r5 + str r1, [sp] + ldr r2, [r4, #0x8c] + mov r3, r1 + str r2, [sp, #4] + ldr r4, [r4, #0x88] + mov r2, #1 + blx r4 + ldr r0, _021DFD04 ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + beq _021DFCF8 + ldr r0, [r0, #0x24] + cmp r0, #5 + bne _021DFCF8 + mov r0, #3 + bl FUN_021DF5CC + ldr r1, _021DFD14 ; =0x0220D334 + mov r0, #1 + mov r2, #0 + bl FUN_021E1E30 +_021DFCF8: + mov r0, #1 + add sp, sp, #0x224 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DFD04: .word 0x0221053C +_021DFD08: .word 0x0220D344 +_021DFD0C: .word 0x0220D348 +_021DFD10: .word FUN_021DF12C +_021DFD14: .word 0x0220D334 + + arm_func_start FUN_021DFD18 +FUN_021DFD18: ; 0x021DFD18 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_021DD6D4 + cmp r0, #0 + bne _021DFD50 + ldr r0, _021DFDB4 ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #3 + beq _021DFD5C +_021DFD50: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021DFD5C: + bl FUN_021DF6CC + ldr r1, _021DFDB4 ; =0x0221053C + mov r2, #0 + ldr r3, [r1] + mov r0, #5 + str r6, [r3, #0x88] + ldr r3, [r1] + str r5, [r3, #0x8c] + ldr r1, [r1] + strb r2, [r1, #0x2c] + bl FUN_021DF5CC + sub r0, r7, #1 + ldr r5, [sp, #0x18] + ldr r1, _021DFDB8 ; =FUN_021DF12C + mov r3, r4 + and r0, r0, #0xff + mov r2, #0 + str r5, [sp] + bl FUN_021EA138 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021DFDB4: .word 0x0221053C +_021DFDB8: .word FUN_021DF12C + + arm_func_start FUN_021DFDBC +FUN_021DFDBC: ; 0x021DFDBC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_021DD6D4 + cmp r0, #0 + bne _021DFDF8 + ldr r0, _021DFE5C ; =0x0221053C + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #3 + blt _021DFDF8 + cmp r1, #4 + bne _021DFE04 +_021DFDF8: + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DFE04: + str r6, [r2, #0x78] + ldr r1, [r0] + mov r0, #4 + str r5, [r1, #0x7c] + bl FUN_021DF5CC + ldr r0, _021DFE5C ; =0x0221053C + ldr r1, [sp, #0x20] + ldr r3, [r0] + ldr r0, [sp, #0x24] + str r4, [sp] + str r1, [sp, #4] + ldr r4, [sp, #0x28] + str r0, [sp, #8] + ldr r2, _021DFE60 ; =FUN_021DF2B4 + add r0, r3, #0xe0 + add r1, r3, #0x1e0 + mov r3, #0 + str r4, [sp, #0xc] + bl FUN_021E2174 + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DFE5C: .word 0x0221053C +_021DFE60: .word FUN_021DF2B4 + + arm_func_start FUN_021DFE64 +FUN_021DFE64: ; 0x021DFE64 + stmdb sp!, {r4, r5, r6, lr} + movs r4, r0 + mov r6, r2 + mov r5, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl FUN_021DD6D4 + cmp r0, #0 + bne _021DFE9C + ldr r0, _021DFF6C ; =0x0221053C + ldr r2, [r0] + ldr r1, [r2, #0x24] + cmp r1, #0 + beq _021DFEA4 +_021DFE9C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021DFEA4: + str r6, [r2, #0x70] + ldr r1, [r0] + cmp r4, #0 + str r5, [r1, #0x74] + beq _021DFEC4 + ldrh r1, [r4] + cmp r1, #0 + bne _021DFECC +_021DFEC4: + mov r5, #0 + b _021DFF18 +_021DFECC: + ldr r1, [r0] + mov r0, #0 + add r1, r1, #0x2e + mov r2, #0x34 + bl MIi_CpuClear16 + mov r0, r4 + bl FUN_021DE89C + cmp r0, #0x19 + movhi r5, #0x19 + bhi _021DFF00 + mov r0, r4 + bl FUN_021DE89C + mov r5, r0 +_021DFF00: + ldr r1, _021DFF6C ; =0x0221053C + mov r0, r4 + ldr r1, [r1] + mov r2, r5, lsl #1 + add r1, r1, #0x2e + bl MIi_CpuCopy16 +_021DFF18: + ldr r0, _021DFF6C ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + add r0, r0, r5, lsl #1 + strh r1, [r0, #0x2e] + bl FUN_021DDC1C + cmp r0, #4 + beq _021DFF4C + ldr r1, _021DFF70 ; =0xFFFF1596 + mov r0, #2 + bl FUN_021E0EAC + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021DFF4C: + mov r0, #1 + bl FUN_021DF5CC + ldr r0, _021DFF6C ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0, #0x68] + bl FUN_021EE898 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021DFF6C: .word 0x0221053C +_021DFF70: .word 0xFFFF1596 + + arm_func_start FUN_021DFF74 +FUN_021DFF74: ; 0x021DFF74 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021DD984 + cmp r0, #0 + beq _021DFF8C + bl FUN_021DF5EC +_021DFF8C: + ldr r0, _021E01E4 ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x24] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _021E0194 +_021DFFD8: ; jump table + b _021E0194 ; case 0 + b _021DFFF4 ; case 1 + b _021E0124 ; case 2 + b _021E012C ; case 3 + b _021E012C ; case 4 + b _021E013C ; case 5 + b _021E014C ; case 6 +_021DFFF4: + bl FUN_021EE6A0 + cmp r0, #1 + beq _021E0014 + cmp r0, #2 + beq _021E00FC + cmp r0, #3 + beq _021E0110 + b _021E0194 +_021E0014: + ldr r0, _021E01E4 ; =0x0221053C + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0xa0] + add r0, r0, #0x1c + bl FUN_021F0F94 + bl FUN_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + ldr r2, _021E01E8 ; =FUN_021DF0D4 + mov r3, r1 + add r0, r0, #0x1c + bl FUN_021F0EB0 + bl FUN_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =0x0221053C + ldr r2, _021E01EC ; =FUN_021DEF6C + ldr r0, [r0] + mov r1, #3 + add r0, r0, #0x1c + mov r3, #0 + bl FUN_021F0EB0 + bl FUN_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =0x0221053C + ldr r2, _021E01F0 ; =FUN_021E20C8 + ldr r0, [r0] + mov r1, #1 + add r0, r0, #0x1c + mov r3, #0 + bl FUN_021F0EB0 + bl FUN_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E01E4 ; =0x0221053C + ldr r2, _021E01F4 ; =FUN_021E1FE4 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, #0 + bl FUN_021F0EB0 + bl FUN_021DF414 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl FUN_021DF5CC + bl FUN_021E1034 + b _021E0194 +_021E00FC: + ldr r1, _021E01F8 ; =0xFFFFB172 + mov r0, #3 + bl FUN_021E0EAC + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0110: + ldr r1, _021E01FC ; =0xFFFFB17B + mov r0, #4 + bl FUN_021E0EAC + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0124: + bl FUN_021E0F1C + b _021E0194 +_021E012C: + bl FUN_021E2228 + mov r0, #0 + bl FUN_021E9568 + b _021E0194 +_021E013C: + mov r0, #1 + bl FUN_021E9568 + bl FUN_021E2228 + b _021E0194 +_021E014C: + bl FUN_021EAA64 + bl FUN_021E2228 + ldr r0, _021E01E4 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x369] + cmp r0, #2 + beq _021E0174 + ldrb r0, [r1, #0x369] + cmp r0, #3 + bne _021E0180 +_021E0174: + mov r0, #1 + bl FUN_021E9568 + b _021E0194 +_021E0180: + ldr r0, [r1] + cmp r0, #0 + beq _021E0194 + mov r0, #0 + bl FUN_021E9568 +_021E0194: + ldr r0, _021E01E4 ; =0x0221053C + ldr r1, [r0] + ldrb r0, [r1, #0x36c] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, [r1, #0x364] + cmp r0, #0 + beq _021E01CC + bl FUN_02202280 + ldr r0, _021E01E4 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x364] +_021E01CC: + ldr r0, _021E01E4 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x36c] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E01E4: .word 0x0221053C +_021E01E8: .word FUN_021DF0D4 +_021E01EC: .word FUN_021DEF6C +_021E01F0: .word FUN_021E20C8 +_021E01F4: .word FUN_021E1FE4 +_021E01F8: .word 0xFFFFB172 +_021E01FC: .word 0xFFFFB17B + + arm_func_start FUN_021E0200 +FUN_021E0200: ; 0x021E0200 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0370 ; =0x0221053C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x364] + cmp r0, #0 + beq _021E023C + bl FUN_02202280 + ldr r0, _021E0370 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x364] +_021E023C: + ldr r0, _021E0370 ; =0x0221053C + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x36c] + ldr r0, [r0] + ldr r0, [r0, #0x438] + cmp r0, #0 + beq _021E0270 + bl FUN_02203E80 + ldr r0, _021E0370 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x438] +_021E0270: + bl FUN_02200D6C + bl FUN_021FBE7C + ldr r0, _021E0370 ; =0x0221053C + ldr ip, [r0] + ldr r0, [ip, #0x1c] + cmp r0, #0 + beq _021E0324 + mov r1, #0 + mov r2, r1 + mov r3, r1 + add r0, ip, #0x1c + bl FUN_021F0EB0 + ldr r0, _021E0370 ; =0x0221053C + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #3 + bl FUN_021F0EB0 + ldr r0, _021E0370 ; =0x0221053C + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x1c + mov r1, #1 + bl FUN_021F0EB0 + ldr r0, _021E0370 ; =0x0221053C + mov r2, #0 + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x1c + mov r3, r2 + bl FUN_021F0EB0 + ldr r0, _021E0370 ; =0x0221053C + ldr r0, [r0] + add r0, r0, #0x1c + bl FUN_021F0F18 + ldr r0, _021E0370 ; =0x0221053C + ldr r0, [r0] + add r0, r0, #0x1c + bl FUN_021F0F64 + mov r1, #0 + ldr r0, _021E0370 ; =0x0221053C + ldr r0, [r0] + str r1, [r0, #0x1c] +_021E0324: + bl FUN_021E0E48 + bl FUN_021E1D90 + bl FUN_021E854C + bl FUN_021EA9C4 + ldr r0, _021E0370 ; =0x0221053C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _021E035C + bl FUN_021FD704 + ldr r0, _021E0370 ; =0x0221053C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] +_021E035C: + ldr r0, _021E0370 ; =0x0221053C + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0370: .word 0x0221053C + + arm_func_start FUN_021E0374 +FUN_021E0374: ; 0x021E0374 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr ip, _021E05D8 ; =0x0221053C + mov r6, r1 + mov r5, r2 + mov r4, r3 + str r0, [ip] + bl FUN_021DD6F0 + ldr r0, _021E05D8 ; =0x0221053C + mov r2, #0 + ldr r1, [r0] + ldr r3, _021E05DC ; =FUN_021E8F80 + str r2, [r1] + ldr r1, [r0] + ldr r2, _021E05E0 ; =FUN_021DEF60 + str r3, [r1, #4] + ldr r1, [r0] + ldr ip, [sp, #0x24] + str r2, [r1, #8] + cmp ip, #0 + ldr r2, [r0] + ldr r3, _021E05E4 ; =FUN_021DEBE4 + ldr r1, _021E05E8 ; =FUN_021DEBD8 + str r3, [r2, #0xc] + ldr r0, [r0] + ldr r3, [sp, #0x28] + str r1, [r0, #0x10] + ldr r0, _021E05D8 ; =0x0221053C + moveq ip, #0x2000 + ldr r0, [r0] + cmp r3, #0 + str ip, [r0, #0x14] + moveq r3, #0x2000 + ldr r1, _021E05D8 ; =0x0221053C + mov r0, #0 + ldr r2, [r1] + ldr ip, _021E05EC ; =0x02210F94 + str r3, [r2, #0x18] + ldr r2, [r1] + ldr r3, _021E05F0 ; =0x02211094 + str r0, [r2, #0x1c] + ldr r2, [r1] + str r6, [r2, #0x20] + ldr r2, [r1] + str r0, [r2, #0x24] + ldr r2, [r1] + str r0, [r2, #0x28] + ldr r2, [r1] + strb r0, [r2, #0x2c] + ldr r2, [r1] + strb r0, [r2, #0x2d] + ldr r2, [r1] + str r0, [r2, #0x64] + ldr r2, [r1] + str ip, [r2, #0x68] + ldr r2, [r1] + str r3, [r2, #0x6c] + ldr r2, [r1] + str r0, [r2, #0x70] + ldr r2, [r1] + str r0, [r2, #0x74] + ldr r2, [r1] + str r0, [r2, #0x78] + ldr r2, [r1] + str r0, [r2, #0x7c] + ldr r2, [r1] + str r0, [r2, #0x80] + ldr r2, [r1] + str r0, [r2, #0x84] + ldr r2, [r1] + str r0, [r2, #0x88] + ldr r2, [r1] + str r0, [r2, #0x8c] + ldr r2, [r1] + str r0, [r2, #0x90] + ldr r1, [r1] + str r0, [r1, #0x94] + bl FUN_021DF6CC + ldr r0, _021E05D8 ; =0x0221053C + mov r3, r5 + ldr r2, [r0] + ldr r1, [r6, #0x24] + ldr r0, _021E05F4 ; =FUN_021DF304 + str r1, [sp] + add r1, r2, #0x2e + str r1, [sp, #4] + str r0, [sp, #8] + mov r5, #0 + add r0, r2, #0x98 + mov r1, r6 + add r2, r2, #0x1c + str r5, [sp, #0xc] + bl FUN_021E1074 + ldr r0, _021E05D8 ; =0x0221053C + ldr r2, [sp, #0x30] + ldr r5, [r0] + ldr r3, [sp, #0x2c] + str r2, [sp] + add r0, r5, #0x2f8 + add r1, r5, #0x1c + add r2, r5, #0x2e + bl FUN_021E234C + ldr r0, _021E05D8 ; =0x0221053C + ldr r1, _021E05EC ; =0x02210F94 + ldr r2, [r0] + ldr r0, _021E05F0 ; =0x02211094 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r2, #0x354 + add r1, r2, #0x1c + add r3, r2, #4 + bl FUN_021EA368 + ldr r1, _021E05D8 ; =0x0221053C + ldr r0, _021E05F8 ; =0x000007D8 + ldr r1, [r1] + add r0, r1, r0 + bl FUN_021EACB4 + mov r0, r4 + bl strlen + cmp r0, #0x100 + movhs r5, #0xff + bhs _021E0578 + mov r0, r4 + bl strlen + mov r5, r0 +_021E0578: + ldr r1, _021E05EC ; =0x02210F94 + mov r0, r4 + mov r2, r5 + bl MI_CpuCopy8 + ldr r0, [sp, #0x20] + ldr r1, _021E05EC ; =0x02210F94 + mov r2, #0 + strb r2, [r1, r5] + bl strlen + cmp r0, #0x100 + movhs r4, #0xff + bhs _021E05B4 + ldr r0, [sp, #0x20] + bl strlen + mov r4, r0 +_021E05B4: + ldr r0, [sp, #0x20] + ldr r1, _021E05F0 ; =0x02211094 + mov r2, r4 + bl MI_CpuCopy8 + ldr r0, _021E05F0 ; =0x02211094 + mov r1, #0 + strb r1, [r0, r4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E05D8: .word 0x0221053C +_021E05DC: .word FUN_021E8F80 +_021E05E0: .word FUN_021DEF60 +_021E05E4: .word FUN_021DEBE4 +_021E05E8: .word FUN_021DEBD8 +_021E05EC: .word 0x02210F94 +_021E05F0: .word 0x02211094 +_021E05F4: .word FUN_021DF304 +_021E05F8: .word 0x000007D8 + + arm_func_start FUN_021E05FC +FUN_021E05FC: ; 0x021E05FC + ldr r0, _021E0624 ; =0x022106C8 + ldr r0, [r0] + cmp r0, #0 + beq _021E061C + ldr r0, [r0, #4] + cmp r0, #5 + moveq r0, #1 + bxeq lr +_021E061C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0624: .word 0x022106C8 + + arm_func_start FUN_021E0628 +FUN_021E0628: ; 0x021E0628 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r4, r1 + ldr r1, [r4] + mov r5, r0 + cmp r1, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r1, _021E07CC ; =0x022106C8 + ldr r2, [r1] + ldr r1, [r2, #4] + cmp r1, #3 + bne _021E0704 + ldrsb r1, [r4, #0x8e] + cmp r1, #0 + bne _021E06DC + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #8 + add r0, r0, #4 + bl FUN_02097218 + ldr r1, _021E07D0 ; =0x00000705 + add r2, sp, #8 + mov r0, r5 + bl FUN_021F0B30 + bl FUN_021E0DB0 + cmp r0, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, _021E07CC ; =0x022106C8 + mov r3, #4 + ldr r1, [r0] + ldr r0, _021E07D4 ; =FUN_021E0628 + str r3, [r1, #4] + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl FUN_021F0B9C + bl FUN_021E0DB0 + add sp, sp, #0x4c + cmp r0, #0 + ldmia sp!, {r4, r5, pc} +_021E06DC: + bl FUN_021F0D54 + ldr r0, _021E07D8 ; =FUN_021E0C80 + mov r1, #0 + bl FUN_021E0A00 + ldr r0, _021E07CC ; =0x022106C8 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #0x4c + str r1, [r0, #4] + ldmia sp!, {r4, r5, pc} +_021E0704: + cmp r1, #4 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #0x1d + add r0, r0, #4 + bl FUN_02097218 + add r1, sp, #0x1d + add r0, r4, #0x8e + bl strcmp + cmp r0, #0 + bne _021E079C + ldr r0, _021E07CC ; =0x022106C8 + add r2, sp, #0x32 + ldr r0, [r0] + ldr r1, [r0, #0xc] + add r0, r0, #0x3c + bl FUN_02097218 + ldr r0, _021E07CC ; =0x022106C8 + ldr r2, [r4, #4] + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r1, r1, #0x3c + bl FUN_02096EC0 + mov r0, r5 + bl FUN_021F0D54 + ldr r0, _021E07CC ; =0x022106C8 + ldr r1, _021E07DC ; =0x022106C4 + ldr r4, [r0] + ldr r0, _021E07E0 ; =0x022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, r4, #0x48 + add r1, r4, #0x148 + blx r3 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} +_021E079C: + ldr r0, _021E07D4 ; =FUN_021E0628 + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl FUN_021F0B9C + bl FUN_021E0DB0 + cmp r0, #0 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E07CC: .word 0x022106C8 +_021E07D0: .word 0x00000705 +_021E07D4: .word FUN_021E0628 +_021E07D8: .word FUN_021E0C80 +_021E07DC: .word 0x022106C4 +_021E07E0: .word 0x022106CC + + arm_func_start FUN_021E07E4 +FUN_021E07E4: ; 0x021E07E4 + stmdb sp!, {lr} + sub sp, sp, #0x3d4 + bl FUN_021D988C + cmp r0, #0x15 + bne _021E08BC + add r0, sp, #0 + bl FUN_021D97F8 + ldr r0, _021E09DC ; =0x022106C8 + add r1, sp, #0x4a + ldr r0, [r0] + add r0, r0, #0x48 + bl strcpy + ldr r0, _021E09DC ; =0x022106C8 + add r1, sp, #0x100 + ldr r0, [r0] + add r1, r1, #0x77 + add r0, r0, #0x148 + bl strcpy + bl FUN_021D991C + ldr r1, _021E09DC ; =0x022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl FUN_021DD904 + ldr r0, _021E09DC ; =0x022106C8 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x24] + ldr r0, [r0] + ldr r0, [r0, #0x1c] + bl FUN_0209702C + cmp r0, #0 + beq _021E0898 + ldr r0, _021E09DC ; =0x022106C8 + ldr r1, _021E09E0 ; =0x022106C4 + ldr ip, [r0] + ldr r0, _021E09E4 ; =0x022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, ip, #0x48 + add r1, ip, #0x148 + blx r3 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0898: + ldr r0, _021E09DC ; =0x022106C8 + ldr r2, _021E09E8 ; =FUN_021E0C98 + ldr r1, [r0] + mov r3, #3 + add r0, r1, #0x48 + add r1, r1, #0x148 + bl FUN_021E0BE0 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E08BC: + bl FUN_021D988C + cmp r0, #0 + addeq sp, sp, #0x3d4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E09DC ; =0x022106C8 + ldr r2, _021E09EC ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x28] + ldr ip, [ip, #0x2c] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E09F0 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _021E0958 + add r0, sp, #0x1c4 + bl FUN_021D97F8 + bl FUN_021D991C + ldr r1, _021E09DC ; =0x022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl FUN_021DD904 + ldr r0, _021E09DC ; =0x022106C8 + mov r2, #0 + ldr r1, [r0] + mov r0, #2 + str r2, [r1, #0x24] + ldr r1, [sp, #0x1c4] + bl FUN_021E0EAC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0958: + bl FUN_021D991C + add r0, sp, #0x388 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E09DC ; =0x022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl FUN_021DE89C + ldr r1, _021E09DC ; =0x022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0x388 + bl MI_CpuCopy8 + ldr r0, _021E09DC ; =0x022106C8 + ldr r1, _021E09F4 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x3bc + add r1, r2, r1 + bl strcpy + ldr r2, _021E09F8 ; =FUN_021DD944 + ldr r0, _021E09DC ; =0x022106C8 + str r2, [sp, #0x3c8] + ldr r2, _021E09FC ; =FUN_021DD904 + ldr r1, [r0] + str r2, [sp, #0x3cc] + ldr r1, [r1, #0x24] + add r0, sp, #0x388 + bl FUN_021D9ACC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} + .align 2, 0 +_021E09DC: .word 0x022106C8 +_021E09E0: .word 0x022106C4 +_021E09E4: .word 0x022106CC +_021E09E8: .word FUN_021E0C98 +_021E09EC: .word 0x000082EA +_021E09F0: .word 0x00002710 +_021E09F4: .word 0x00000251 +_021E09F8: .word FUN_021DD944 +_021E09FC: .word FUN_021DD904 + + arm_func_start FUN_021E0A00 +FUN_021E0A00: ; 0x021E0A00 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r2, _021E0BBC ; =0x022106CC + ldr r1, _021E0BC0 ; =0x022106C4 + ldr r0, [r0] + str r5, [r2] + str r4, [r1] + ldr r0, [r0, #0x1c] + bl FUN_0209702C + cmp r0, #0 + beq _021E0A68 + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r2, r1, #0x248 + ldr r1, [r0, #0x24] + add r0, r0, #0x10 + bl FUN_02097218 + b _021E0B1C +_021E0A68: + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl FUN_0209703C + cmp r0, #0 + bne _021E0AD0 + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + add r0, r0, #4 + bl FUN_0209705C + cmp r0, #0 + beq _021E0ABC + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r3, r1, #0x3c + add r0, r0, #4 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + b _021E0B04 +_021E0ABC: + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl FUN_020970CC + b _021E0B04 +_021E0AD0: + bl OS_GetTick + ldr r2, _021E0BC4 ; =0x6C078965 + ldr r3, _021E0BC8 ; =0x5D588B65 + umull ip, r4, r0, r2 + mla r4, r0, r3, r4 + ldr r3, _021E0BB8 ; =0x022106C8 + ldr r0, _021E0BCC ; =0x00269EC3 + mla r4, r1, r2, r4 + adds r0, ip, r0 + ldr r3, [r3] + adc r1, r4, #0 + add r0, r3, #0x3c + bl FUN_02097508 +_021E0B04: + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r2, [r0] + ldr r1, [r2, #0xc] + add r0, r2, #0x3c + add r2, r2, #0x248 + bl FUN_02097218 +_021E0B1C: + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl FUN_021DE89C + ldr r1, _021E0BB8 ; =0x022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0 + bl MI_CpuCopy8 + ldr r0, _021E0BB8 ; =0x022106C8 + ldr r1, _021E0BD0 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x34 + add r1, r2, r1 + bl strcpy + ldr r4, _021E0BD4 ; =FUN_021DD944 + ldr r3, _021E0BD8 ; =FUN_021DD904 + ldr r1, _021E0BDC ; =0x00001C10 + mov r0, #0 + mov r2, #4 + str r4, [sp, #0x40] + str r3, [sp, #0x44] + bl FUN_021DD924 + ldr r1, _021E0BB8 ; =0x022106C8 + mov r4, r0 + ldr r0, [r1] + str r4, [r0, #0x24] + bl OS_GetTick + ldr r2, _021E0BB8 ; =0x022106C8 + ldr r2, [r2] + str r0, [r2, #0x28] + str r1, [r2, #0x2c] + mov r1, r4 + add r0, sp, #0 + bl FUN_021D9ACC + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E0BB8: .word 0x022106C8 +_021E0BBC: .word 0x022106CC +_021E0BC0: .word 0x022106C4 +_021E0BC4: .word 0x6C078965 +_021E0BC8: .word 0x5D588B65 +_021E0BCC: .word 0x00269EC3 +_021E0BD0: .word 0x00000251 +_021E0BD4: .word FUN_021DD944 +_021E0BD8: .word FUN_021DD904 +_021E0BDC: .word 0x00001C10 + + arm_func_start FUN_021E0BE0 +FUN_021E0BE0: ; 0x021E0BE0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r4, _021E0C7C ; =0x022106C8 + mov r6, r1 + ldr r4, [r4] + mov r1, r0 + add r0, r4, #0x48 + mov r5, r2 + mov r4, r3 + bl strcpy + ldr r0, _021E0C7C ; =0x022106C8 + mov r1, r6 + ldr r0, [r0] + add r0, r0, #0x148 + bl strcpy + ldr r0, _021E0C7C ; =0x022106C8 + ldr r6, [r0] + bl OS_GetTick + str r0, [r6, #0x34] + str r1, [r6, #0x38] + mov r3, #1 + ldr r0, _021E0C7C ; =0x022106C8 + str r3, [r6, #0x30] + ldr r2, [r0] + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, r2, #0x48 + add r2, r2, #0x148 + bl FUN_021F0D8C + bl FUN_021E0DB0 + cmp r0, #0 + ldreq r0, _021E0C7C ; =0x022106C8 + ldreq r0, [r0] + streq r4, [r0, #4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E0C7C: .word 0x022106C8 + + arm_func_start FUN_021E0C80 +FUN_021E0C80: ; 0x021E0C80 + ldr ip, _021E0C90 ; =FUN_021E0BE0 + ldr r2, _021E0C94 ; =FUN_021E0C98 + mov r3, #2 + bx ip + .align 2, 0 +_021E0C90: .word FUN_021E0BE0 +_021E0C94: .word FUN_021E0C98 + + arm_func_start FUN_021E0C98 +FUN_021E0C98: ; 0x021E0C98 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r3, _021E0DA0 ; =0x022106C8 + mov r2, #0 + ldr ip, [r3] + mov r4, r1 + str r2, [ip, #0x30] + ldr r1, [r4] + cmp r1, #0 + bne _021E0D90 + ldr ip, [r3] + ldr r1, [ip, #4] + cmp r1, #2 + bne _021E0D5C + ldr r1, [ip, #0x1c] + ldr r0, [r4, #4] + ldr r1, [r1, #0x1c] + cmp r1, r0 + bne _021E0D48 + ldr r1, _021E0DA4 ; =0x0220D34C + mov r3, #5 + mov r0, #1 + str r3, [ip, #4] + bl FUN_021E1E30 + bl FUN_021E0DB0 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, _021E0DA0 ; =0x022106C8 + ldr r1, [r4, #4] + ldr r3, [r0] + mov r0, #0 + ldr r2, [r3, #0x18] + ldr r3, [r3, #0x14] + blx r3 + bl FUN_021DF7C4 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #4] + bl FUN_021EA1E0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D48: + ldr r1, _021E0DA8 ; =0xFFFF15A0 + mov r0, #6 + bl FUN_021E0EAC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_021E0D5C: + cmp r1, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r1, _021E0DAC ; =FUN_021E0628 + mov r3, r2 + str r1, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + bl FUN_021F0B9C + bl FUN_021E0DB0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D90: + mov r0, r1 + bl FUN_021E0DB0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0DA0: .word 0x022106C8 +_021E0DA4: .word 0x0220D34C +_021E0DA8: .word 0xFFFF15A0 +_021E0DAC: .word FUN_021E0628 + + arm_func_start FUN_021E0DB0 +FUN_021E0DB0: ; 0x021E0DB0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E0E0C +_021E0DCC: ; jump table + b _021E0E0C ; case 0 + b _021E0DE0 ; case 1 + b _021E0DEC ; case 2 + b _021E0DF8 ; case 3 + b _021E0E04 ; case 4 +_021E0DE0: + mov r0, #9 + mvn r2, #0 + b _021E0E0C +_021E0DEC: + mov r0, #9 + mvn r2, #1 + b _021E0E0C +_021E0DF8: + mov r0, #6 + mvn r2, #9 + b _021E0E0C +_021E0E04: + mov r0, #6 + mvn r2, #0x13 +_021E0E0C: + ldr r1, _021E0E20 ; =0xFFFF11B8 + add r1, r2, r1 + bl FUN_021E0EAC + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0E20: .word 0xFFFF11B8 + + arm_func_start FUN_021E0E24 +FUN_021E0E24: ; 0x021E0E24 + ldr r0, _021E0E44 ; =0x022106C8 + ldr r2, [r0] + cmp r2, #0 + movne r1, #0 + strne r1, [r2, #4] + ldrne r0, [r0] + strne r1, [r0, #0x30] + bx lr + .align 2, 0 +_021E0E44: .word 0x022106C8 + + arm_func_start FUN_021E0E48 +FUN_021E0E48: ; 0x021E0E48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0EA8 ; =0x022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _021E0E94 + bl FUN_021D9974 + bl FUN_021D991C + ldr r1, _021E0EA8 ; =0x022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl FUN_021DD904 + ldr r0, _021E0EA8 ; =0x022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x24] +_021E0E94: + ldr r0, _021E0EA8 ; =0x022106C8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0EA8: .word 0x022106C8 + + arm_func_start FUN_021E0EAC +FUN_021E0EAC: ; 0x021E0EAC + stmdb sp!, {r4, lr} + ldr r2, _021E0EFC ; =0x022106C8 + mov r4, r0 + ldr r2, [r2] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021DD6B0 + ldr r0, _021E0EFC ; =0x022106C8 + ldr r0, [r0] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _021E0EF4 + ldr r2, [r0, #0x18] + mov r0, r4 + mov r1, #0 + blx r3 +_021E0EF4: + bl FUN_021E0E24 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0EFC: .word 0x022106C8 + + arm_func_start FUN_021E0F00 +FUN_021E0F00: ; 0x021E0F00 + ldr r0, _021E0F18 ; =0x022106C8 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x1c] + moveq r0, #0 + bx lr + .align 2, 0 +_021E0F18: .word 0x022106C8 + + arm_func_start FUN_021E0F1C +FUN_021E0F1C: ; 0x021E0F1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E1024 ; =0x022106C8 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E1024 ; =0x022106C8 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021E101C +_021E0F60: ; jump table + b _021E101C ; case 0 + b _021E0F78 ; case 1 + b _021E0F84 ; case 2 + b _021E0F84 ; case 3 + b _021E0F84 ; case 4 + b _021E101C ; case 5 +_021E0F78: + bl FUN_021E07E4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0F84: + ldr r0, [r1] + cmp r0, #0 + beq _021E0FA0 + ldr r1, [r0] + cmp r1, #0 + beq _021E0FA0 + bl FUN_021F0F18 +_021E0FA0: + ldr r0, _021E1024 ; =0x022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x30] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E1024 ; =0x022106C8 + ldr r2, _021E1028 ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x34] + ldr ip, [ip, #0x38] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E102C ; =0x0000EA60 + cmp r1, #0 + cmpeq r0, r2 + addls sp, sp, #4 + ldmlsia sp!, {pc} + ldr r1, _021E1030 ; =0xFFFF1172 + mov r0, #6 + bl FUN_021E0EAC + ldr r0, _021E1024 ; =0x022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x30] +_021E101C: + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1024: .word 0x022106C8 +_021E1028: .word 0x000082EA +_021E102C: .word 0x0000EA60 +_021E1030: .word 0xFFFF1172 + + arm_func_start FUN_021E1034 +FUN_021E1034: ; 0x021E1034 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E106C ; =FUN_021E0C80 + mov r1, #0 + bl FUN_021E0A00 + ldr r0, _021E1070 ; =0x022106C8 + mov r3, #1 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + str r1, [r0, #0x30] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E106C: .word FUN_021E0C80 +_021E1070: .word 0x022106C8 + + arm_func_start FUN_021E1074 +FUN_021E1074: ; 0x021E1074 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _021E10F4 ; =0x022106C8 + mov r6, r1 + mov r5, r2 + mov r1, #0 + mov r2, #0x260 + mov r4, r3 + str r0, [ip] + bl MI_CpuFill8 + ldr r0, _021E10F4 ; =0x022106C8 + mov r2, #0 + ldr r1, [r0] + ldr ip, [sp, #0x10] + str r5, [r1] + ldr r1, [r0] + ldr r5, [sp, #0x14] + str r2, [r1, #4] + ldr r1, [r0] + ldr r3, [sp, #0x18] + str r4, [r1, #8] + ldr r1, [r0] + ldr r2, [sp, #0x1c] + str ip, [r1, #0xc] + ldr r1, [r0] + str r5, [r1, #0x10] + ldr r1, [r0] + str r3, [r1, #0x14] + ldr r1, [r0] + str r2, [r1, #0x18] + ldr r0, [r0] + str r6, [r0, #0x1c] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E10F4: .word 0x022106C8 + + arm_func_start FUN_021E10F8 +FUN_021E10F8: ; 0x021E10F8 + ldr r0, _021E1108 ; =0x022106D0 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bx lr + .align 2, 0 +_021E1108: .word 0x022106D0 + + arm_func_start FUN_021E110C +FUN_021E110C: ; 0x021E110C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov sl, r1 + ldr r0, [sl] + mov r8, #0 + cmp r0, #0 + mov r0, #1 + str r0, [sp] + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _021E12B4 ; =0x022106D0 + mov sb, r8 + ldr r2, [r4] + ldr r1, [r2, #0x14] + cmp r1, #0 + ble _021E1274 + mov r7, r8 + str r0, [sp, #4] + mov fp, r8 + mov r5, r0 +_021E115C: + ldr r0, [r2, #0x18] + add r0, r0, r7 + bl FUN_02097484 + cmp r0, #1 + bne _021E11C8 + bl FUN_021E0F00 + ldr r1, [r4] + add r2, sp, #8 + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl FUN_02096C78 + add r0, sp, #8 + add r1, sl, #0x8e + bl strcmp + cmp r0, #0 + bne _021E125C + ldr r0, [r4] + ldr r1, [sl, #4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02096C90 + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097414 + mov r8, r5 + b _021E125C +_021E11C8: + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097484 + cmp r0, #3 + beq _021E11F8 + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097484 + cmp r0, #2 + bne _021E125C +_021E11F8: + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097490 + cmp r0, #1 + streq fp, [sp] + beq _021E125C + ldr r6, [sl, #4] + bl FUN_021E0F00 + ldr r1, [r4] + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl FUN_02096DA0 + cmp r6, r0 + bne _021E125C + ldr r0, [r4] + mov r1, r6 + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02096C90 + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097414 + ldr r8, [sp, #4] +_021E125C: + ldr r2, [r4] + add sb, sb, #1 + ldr r1, [r2, #0x14] + add r7, r7, #0xc + cmp sb, r1 + blt _021E115C +_021E1274: + cmp r8, #0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r2, #0x18] + ldr r2, [sl, #4] + bl FUN_021E17F0 + ldr r1, [sp] + cmp r1, #0 + beq _021E129C + bl FUN_021E1DA4 +_021E129C: + ldr r0, _021E12B4 ; =0x022106D0 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E12B4: .word 0x022106D0 + + arm_func_start FUN_021E12B8 +FUN_021E12B8: ; 0x021E12B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov sb, r1 + ldr r1, [sb] + mov sl, r0 + cmp r1, #0 + mov fp, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _021E1410 ; =0x022106D0 + mov r8, fp + ldr r1, [r4] + ldr r0, [r1, #0x14] + cmp r0, #0 + ble _021E13E4 + add r0, sb, #0x8e + mov r7, fp + mov r5, #1 + str r0, [sp] +_021E1304: + ldr r0, [r1, #0x18] + add r0, r0, r7 + bl FUN_02097484 + cmp r0, #1 + bne _021E136C + bl FUN_021E0F00 + ldr r1, [r4] + add r2, sp, #4 + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl FUN_02096C78 + ldr r1, [sp] + add r0, sp, #4 + bl strcmp + cmp r0, #0 + bne _021E13CC + ldr r1, [sb, #4] + mov r0, sl + bl FUN_021F0944 + ldr r0, [r4] + ldr r1, [sb, #4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02096C90 + mov fp, r5 + b _021E13CC +_021E136C: + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097484 + cmp r0, #3 + beq _021E139C + ldr r0, [r4] + ldr r0, [r0, #0x18] + add r0, r0, r7 + bl FUN_02097484 + cmp r0, #2 + bne _021E13CC +_021E139C: + ldr r6, [sb, #4] + bl FUN_021E0F00 + ldr r1, [r4] + ldr r1, [r1, #0x18] + add r1, r1, r7 + bl FUN_02096DA0 + cmp r6, r0 + bne _021E13CC + mov r0, sl + mov r1, r6 + bl FUN_021F0944 + mov fp, r5 +_021E13CC: + ldr r1, [r4] + add r8, r8, #1 + ldr r0, [r1, #0x14] + add r7, r7, #0xc + cmp r8, r0 + blt _021E1304 +_021E13E4: + cmp fp, #0 + beq _021E13FC + ldr r0, [sb, #4] + bl FUN_021E17BC + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E13FC: + ldr r1, [sb, #4] + mov r0, sl + bl FUN_021F0864 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E1410: .word 0x022106D0 + + arm_func_start FUN_021E1414 +FUN_021E1414: ; 0x021E1414 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sb, r1 + ldr r1, [sb] + mov sl, r0 + mov r8, r2 + cmp r1, #0 + bne _021E15FC + ldr r0, [sb, #4] + cmp r0, #0 + beq _021E15FC + mov r0, #0xc + ldr r1, _021E1670 ; =0x022106D0 + mul r6, r8, r0 + ldr r0, [r1] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl FUN_02097484 + cmp r0, #0 + beq _021E15FC + ldr r7, _021E1670 ; =0x022106D0 + ldr r1, [r7] + ldr r0, [r1] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + strb r0, [r1, #0x1d] + ldr r0, [sb, #4] + mov r5, #0 + cmp r0, #0 + ble _021E14FC + mov r4, r5 +_021E1498: + ldr r0, [r7] + ldr r1, [sb, #0xc] + ldr r0, [r0, #0x18] + ldr r2, [r1, r4] + mov r1, r8 + bl FUN_021E1900 + cmp r0, #0 + beq _021E14E8 + ldr r0, _021E1670 ; =0x022106D0 + mov r2, #1 + ldr r4, [r0] + ldr r1, _021E1674 ; =0x00000601 + ldrb r3, [r4, #0x1c] + add sp, sp, #4 + add r3, r3, #1 + strb r3, [r4, #0x1c] + ldr r0, [r0] + strb r2, [r0, #0x1e] + str r1, [sb, #8] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E14E8: + ldr r0, [sb, #4] + add r5, r5, #1 + cmp r5, r0 + add r4, r4, #0xac + blt _021E1498 +_021E14FC: + cmp r0, #0 + mov r5, #0 + ble _021E15C4 + mov r7, r5 + add fp, sp, #0 + mvn r4, #0 +_021E1514: + ldr r1, [sb, #0xc] + mov r0, sl + ldr r1, [r1, r7] + mov r2, fp + bl FUN_021F0664 + bl FUN_021E1678 + ldr r0, [sp] + cmp r0, r4 + bne _021E1548 + ldr r0, [sb, #0xc] + ldr r0, [r0, r7] + bl FUN_021E17BC + b _021E15B0 +_021E1548: + ldr r0, _021E1670 ; =0x022106D0 + ldr r1, [sb, #0xc] + ldr r0, [r0] + ldr r1, [r1] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl FUN_02096C90 + ldr r0, _021E1670 ; =0x022106D0 + ldr r0, [r0] + ldr r0, [r0, #0x18] + add r0, r0, r6 + bl FUN_02097414 + mov r0, r8 + bl FUN_021E1DA4 + ldr r0, _021E1670 ; =0x022106D0 + mov r2, #1 + ldr r4, [r0] + ldr r1, _021E1674 ; =0x00000601 + ldrb r3, [r4, #0x1c] + add sp, sp, #4 + add r3, r3, #1 + strb r3, [r4, #0x1c] + ldr r0, [r0] + strb r2, [r0, #0x1e] + str r1, [sb, #8] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E15B0: + ldr r0, [sb, #4] + add r5, r5, #1 + cmp r5, r0 + add r7, r7, #0xac + blt _021E1514 +_021E15C4: + ldr r0, [sb, #8] + cmp r0, #0x600 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _021E1670 ; =0x022106D0 + mov r1, #1 + ldr r3, [r0] + add sp, sp, #4 + ldrb r2, [r3, #0x1c] + add r2, r2, #1 + strb r2, [r3, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1e] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E15FC: + ldr r0, [sb] + cmp r0, #0 + beq _021E1618 + bl FUN_021E1678 + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E1618: + ldr r0, _021E1670 ; =0x022106D0 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #1 + beq _021E1648 + ldr r1, [r1, #0x18] + mov r0, #0xc + mla r0, r8, r0, r1 + bl FUN_02097484 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E1648: + ldr r0, _021E1670 ; =0x022106D0 + mov r1, #1 + ldr r3, [r0] + ldrb r2, [r3, #0x1c] + add r2, r2, #1 + strb r2, [r3, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1e] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E1670: .word 0x022106D0 +_021E1674: .word 0x00000601 + + arm_func_start FUN_021E1678 +FUN_021E1678: ; 0x021E1678 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E16D4 +_021E1694: ; jump table + b _021E16D4 ; case 0 + b _021E16A8 ; case 1 + b _021E16B4 ; case 2 + b _021E16C0 ; case 3 + b _021E16CC ; case 4 +_021E16A8: + mov r0, #9 + mvn r2, #0 + b _021E16D4 +_021E16B4: + mov r0, #9 + mvn r2, #1 + b _021E16D4 +_021E16C0: + mov r0, #6 + mvn r2, #9 + b _021E16D4 +_021E16CC: + mov r0, #6 + mvn r2, #0x13 +_021E16D4: + ldr r1, _021E16E8 ; =0xFFFEEAA8 + add r1, r2, r1 + bl FUN_021E2114 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E16E8: .word 0xFFFEEAA8 + + arm_func_start FUN_021E16EC +FUN_021E16EC: ; 0x021E16EC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _021E17B8 ; =0x022106D0 + mov r3, #0 + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + str r3, [sp] + cmp r2, #0 + beq _021E1720 + bl FUN_021E05FC + cmp r0, #0 + bne _021E172C +_021E1720: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E172C: + bl FUN_021E0F00 + mov r1, r5 + bl FUN_02096DA0 + mov r5, r0 + cmp r5, #0 + ble _021E176C + ldr r0, _021E17B8 ; =0x022106D0 + add r2, sp, #0 + ldr r0, [r0] + mov r1, r5 + ldr r0, [r0, #4] + bl FUN_021F0664 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} +_021E176C: + cmp r5, #0 + ble _021E1784 + ldr r1, [sp] + mvn r0, #0 + cmp r1, r0 + bne _021E1790 +_021E1784: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E1790: + ldr r0, _021E17B8 ; =0x022106D0 + mov r2, r4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_021F06E4 + cmp r0, #0 + movne r0, #0 + moveq r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E17B8: .word 0x022106D0 + + arm_func_start FUN_021E17BC +FUN_021E17BC: ; 0x021E17BC + stmdb sp!, {r4, lr} + ldr r2, _021E17E8 ; =0x022106D0 + mov r1, r0 + ldr r0, [r2] + ldr r2, _021E17EC ; =0x0220D350 + ldr r0, [r0, #4] + bl FUN_021F09B0 + mov r4, r0 + bl FUN_021E1678 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E17E8: .word 0x022106D0 +_021E17EC: .word 0x0220D350 + + arm_func_start FUN_021E17F0 +FUN_021E17F0: ; 0x021E17F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r1 + mov fp, r0 + mvn r0, #0 + str r2, [sp] + cmp sl, #0 + str r0, [sp, #4] + mov r8, #0 + ble _021E18F0 + mov r6, fp + mov r5, fp + mov r0, #1 + str r0, [sp, #8] +_021E1828: + mov r0, r8 + bl FUN_021E1F84 + movs sb, r0 + beq _021E18DC + ldr r0, [sp] + add r7, r8, #1 + cmp sb, r0 + streq r8, [sp, #4] + cmp r7, sl + bge _021E18DC + mov r0, #0xc + mla r4, r7, r0, fp +_021E1858: + mov r0, r7 + bl FUN_021E1F84 + cmp sb, r0 + bne _021E18CC + mov r0, r6 + bl FUN_02097484 + cmp r0, #2 + bne _021E1894 + mov r0, r4 + bl FUN_02097484 + cmp r0, #3 + bne _021E1894 + mov r0, r5 + mov r1, sb + bl FUN_02096C90 +_021E1894: + mov r0, r4 + bl FUN_02097490 + cmp r0, #0 + beq _021E18AC + mov r0, r5 + bl FUN_02097414 +_021E18AC: + mov r0, fp + mov r1, r7 + mov r2, r8 + bl FUN_021E19B8 + ldr r0, _021E18FC ; =0x022106D0 + ldr r1, [r0] + ldr r0, [sp, #8] + strb r0, [r1, #0x1d] +_021E18CC: + add r7, r7, #1 + cmp r7, sl + add r4, r4, #0xc + blt _021E1858 +_021E18DC: + add r8, r8, #1 + cmp r8, sl + add r6, r6, #0xc + add r5, r5, #0xc + blt _021E1828 +_021E18F0: + ldr r0, [sp, #4] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E18FC: .word 0x022106D0 + + arm_func_start FUN_021E1900 +FUN_021E1900: ; 0x021E1900 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r1 + mov r7, r0 + mov r5, r2 + cmp r6, #0 + mov r4, #0 + ble _021E19A8 +_021E1920: + mov r0, r4 + bl FUN_021E1F84 + cmp r0, #0 + beq _021E199C + cmp r0, r5 + bne _021E199C + mov r0, #0xc + mla r0, r6, r0, r7 + bl FUN_02097490 + cmp r0, #0 + beq _021E1974 + mov r0, #0xc + mla r0, r4, r0, r7 + bl FUN_02097490 + cmp r0, #0 + bne _021E1974 + mov r0, r7 + mov r1, r4 + mov r2, r6 + bl FUN_021E19B8 + b _021E1984 +_021E1974: + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl FUN_021E19B8 +_021E1984: + ldr r1, _021E19B4 ; =0x022106D0 + mov r0, #1 + ldr r1, [r1] + add sp, sp, #4 + strb r0, [r1, #0x1d] + ldmia sp!, {r4, r5, r6, r7, pc} +_021E199C: + add r4, r4, #1 + cmp r4, r6 + blt _021E1920 +_021E19A8: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E19B4: .word 0x022106D0 + + arm_func_start FUN_021E19B8 +FUN_021E19B8: ; 0x021E19B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r3, _021E1A1C ; =0x022106D0 + mov r5, r1 + ldr r1, [r3] + mov r4, r2 + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r2, #0xc + mla r0, r5, r2, r0 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _021E1A1C ; =0x022106D0 + ldr r0, [r0] + ldr r3, [r0, #0x3c] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r0, #0x40] + mov r0, r5 + mov r1, r4 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E1A1C: .word 0x022106D0 + + arm_func_start FUN_021E1A20 +FUN_021E1A20: ; 0x021E1A20 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021E1A5C ; =0x022106D0 + mov r0, #0 + ldr r3, [r1] + ldrb r1, [r3, #0x1d] + ldr r2, [r3, #0x30] + ldr r3, [r3, #0x2c] + blx r3 + ldr r0, _021E1A5C ; =0x022106D0 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1A5C: .word 0x022106D0 + + arm_func_start FUN_021E1A60 +FUN_021E1A60: ; 0x021E1A60 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24c + ldr r2, _021E1CC4 ; =0x022106D0 + mov r6, r0 + ldr r2, [r2] + mov r5, r1 + ldrb r0, [r2, #0x1e] + cmp r0, #0 + bne _021E1B8C + ldr r0, [r2, #4] + add r1, sp, #0x18 + bl FUN_021F0828 + bl FUN_021E1678 + ldr r0, [sp, #0x18] + mov fp, #0 + str fp, [sp, #0x1c] + cmp r0, #0 + ble _021E1B7C + ldr r8, _021E1CC4 ; =0x022106D0 + mov sb, #1 + mov r7, #0xc +_021E1AB4: + ldr r0, [r8] + ldr r1, [sp, #0x1c] + ldr r0, [r0, #4] + add r2, sp, #0x38 + bl FUN_021F06E4 + bl FUN_021E1678 + mov r4, fp + cmp r5, #0 + ble _021E1B30 +_021E1AD8: + mov r0, r4 + bl FUN_021E1F84 + ldr r1, [sp, #0x38] + cmp r1, r0 + bne _021E1B24 + mul sl, r4, r7 + add r0, r6, sl + bl FUN_02097490 + cmp r0, #0 + bne _021E1B30 + add sl, r6, sl + ldr r1, [sp, #0x38] + mov r0, sl + bl FUN_02096C90 + mov r0, sl + bl FUN_02097414 + ldr r0, [r8] + strb sb, [r0, #0x1d] + b _021E1B30 +_021E1B24: + add r4, r4, #1 + cmp r4, r5 + blt _021E1AD8 +_021E1B30: + cmp r4, r5 + bne _021E1B64 + ldr r0, [r8] + ldr r1, [sp, #0x38] + ldr r0, [r0, #4] + bl FUN_021F0580 + bl FUN_021E1678 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + sub r1, r1, #1 + sub r0, r0, #1 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] +_021E1B64: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r1, r1, #1 + str r1, [sp, #0x1c] + cmp r1, r0 + blt _021E1AB4 +_021E1B7C: + ldr r0, _021E1CC4 ; =0x022106D0 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1e] +_021E1B8C: + ldr sl, _021E1CC4 ; =0x022106D0 + ldr r0, [sl] + ldrb r0, [r0, #0x1c] + cmp r0, r5 + addge sp, sp, #0x24c + ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r4, sp, #0x1c + mov r8, #0xc + mvn sb, #0 +_021E1BB0: + bl FUN_021E1F84 + movs r7, r0 + beq _021E1C08 + ldr r1, [sl] + mov r0, r6 + ldrb r1, [r1, #0x1c] + mov r2, r7 + bl FUN_021E1900 + cmp r0, #0 + bne _021E1C9C + ldr r0, [sl] + mov r1, r7 + ldr r0, [r0, #4] + mov r2, r4 + bl FUN_021F0664 + bl FUN_021E1678 + ldr r0, [sp, #0x1c] + cmp r0, sb + bne _021E1C9C + mov r0, r7 + bl FUN_021E17BC + b _021E1C9C +_021E1C08: + bl FUN_021E0F00 + ldr r1, [sl] + ldrb r2, [r1, #0x1c] + mla r1, r2, r8, r6 + bl FUN_02096DA0 + cmp r0, sb + bne _021E1C9C + bl FUN_021E0F00 + ldr r2, _021E1CC4 ; =0x022106D0 + mov r1, #0xc + ldr r3, [r2] + add r2, sp, #0x20 + ldrb r3, [r3, #0x1c] + mla r1, r3, r1, r6 + bl FUN_02096C78 + ldr r0, _021E1CC4 ; =0x022106D0 + mov r1, #0 + ldr r4, [r0] + add r2, sp, #0x20 + str r1, [sp] + str r2, [sp, #4] + str r1, [sp, #8] + ldr r0, _021E1CC8 ; =FUN_021E1414 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldrb r0, [r4, #0x1c] + mov r2, r1 + mov r3, r1 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl FUN_021F0C84 + ldr r0, _021E1CC4 ; =0x022106D0 + mov r1, #2 + ldr r0, [r0] + add sp, sp, #0x24c + strb r1, [r0, #0x1e] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E1C9C: + ldr r1, [sl] + ldrb r0, [r1, #0x1c] + add r0, r0, #1 + strb r0, [r1, #0x1c] + ldr r0, [sl] + ldrb r0, [r0, #0x1c] + cmp r0, r5 + blt _021E1BB0 + add sp, sp, #0x24c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E1CC4: .word 0x022106D0 +_021E1CC8: .word FUN_021E1414 + + arm_func_start FUN_021E1CCC +FUN_021E1CCC: ; 0x021E1CCC + ldr r0, _021E1CF8 ; =0x022106D0 + ldr r1, [r0] + cmp r1, #0 + bxeq lr + mov r2, #0 + str r2, [r1] + ldr r1, [r0] + strb r2, [r1, #0x1e] + ldr r0, [r0] + strb r2, [r0, #0x1f] + bx lr + .align 2, 0 +_021E1CF8: .word 0x022106D0 + + arm_func_start FUN_021E1CFC +FUN_021E1CFC: ; 0x021E1CFC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021E1D88 ; =0x022106D0 + mov r5, #0 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0xc] + ldr r2, [r4, #0x10] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E1D8C ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, r5 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0x12c + blo _021E1D7C + ldr r1, [r4, #8] + ldr r0, _021E1D88 ; =0x022106D0 + add r1, r1, #1 + str r1, [r4, #8] + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_021F0F18 + mov r5, r0 + bl OS_GetTick + ldr r2, _021E1D88 ; =0x022106D0 + ldr r2, [r2] + str r0, [r2, #0xc] + str r1, [r2, #0x10] +_021E1D7C: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E1D88: .word 0x022106D0 +_021E1D8C: .word 0x000082EA + + arm_func_start FUN_021E1D90 +FUN_021E1D90: ; 0x021E1D90 + ldr r0, _021E1DA0 ; =0x022106D0 + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_021E1DA0: .word 0x022106D0 + + arm_func_start FUN_021E1DA4 +FUN_021E1DA4: ; 0x021E1DA4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x210 + ldr r1, _021E1E2C ; =0x022106D0 + mov r4, r0 + ldr r3, [r1] + ldr r2, [r3, #0x44] + cmp r2, #0 + beq _021E1DD8 + ldr r1, [r3] + cmp r1, #1 + beq _021E1DD8 + ldr r1, [r3, #0x48] + blx r2 +_021E1DD8: + ldr r0, _021E1E2C ; =0x022106D0 + ldr r1, [r0] + ldr r0, [r1, #0x34] + cmp r0, #0 + addeq sp, sp, #0x210 + ldmeqia sp!, {r4, pc} + ldr r1, [r1, #0x18] + mov r0, #0xc + mla r0, r4, r0, r1 + add r1, sp, #0x108 + bl FUN_021E26B8 + ldr r2, _021E1E2C ; =0x022106D0 + mov r1, r0 + ldr r0, [r2] + add r2, sp, #0x108 + ldr r3, [r0, #0x38] + ldr ip, [r0, #0x34] + mov r0, r4 + blx ip + add sp, sp, #0x210 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E1E2C: .word 0x022106D0 + + arm_func_start FUN_021E1E30 +FUN_021E1E30: ; 0x021E1E30 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _021E1ED0 ; =0x022106D0 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + beq _021E1E5C + bl FUN_021E05FC + cmp r0, #0 + bne _021E1E64 +_021E1E5C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E1E64: + mvn r0, #0 + cmp r6, r0 + ldreq r0, _021E1ED0 ; =0x022106D0 + ldreq r0, [r0] + ldreq r0, [r0, #4] + ldreq r0, [r0] + ldreq r6, [r0, #0x214] + cmp r5, #0 + ldreq r0, _021E1ED0 ; =0x022106D0 + mov r1, r6 + ldreq r0, [r0] + ldreq r0, [r0, #4] + ldreq r0, [r0] + addeq r5, r0, #0x218 + cmp r4, #0 + ldreq r0, _021E1ED0 ; =0x022106D0 + mov r2, r5 + ldreq r0, [r0] + ldreq r0, [r0, #4] + ldreq r0, [r0] + addeq r4, r0, #0x318 + ldr r0, _021E1ED0 ; =0x022106D0 + mov r3, r4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_021F034C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E1ED0: .word 0x022106D0 + + arm_func_start FUN_021E1ED4 +FUN_021E1ED4: ; 0x021E1ED4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E1F14 ; =0x022106D0 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + str r0, [r1, #8] + bl OS_GetTick + ldr r2, _021E1F14 ; =0x022106D0 + ldr r2, [r2] + str r0, [r2, #0xc] + str r1, [r2, #0x10] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1F14: .word 0x022106D0 + + arm_func_start FUN_021E1F18 +FUN_021E1F18: ; 0x021E1F18 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _021E1F80 ; =0x022106D0 + mov r6, r0 + ldr r0, [r4] + cmp r0, #0 + beq _021E1F38 + cmp r6, #0 + bne _021E1F40 +_021E1F38: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E1F40: + ldr r0, [r0, #0x14] + mov r5, #0 + cmp r0, #0 + ble _021E1F78 +_021E1F50: + mov r0, r5 + bl FUN_021E1F84 + cmp r6, r0 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r4] + add r5, r5, #1 + ldr r0, [r0, #0x14] + cmp r5, r0 + blt _021E1F50 +_021E1F78: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E1F80: .word 0x022106D0 + + arm_func_start FUN_021E1F84 +FUN_021E1F84: ; 0x021E1F84 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _021E1FE0 ; =0x022106D0 + mov r5, r0 + ldr r0, [r1] + ldr r4, [r0, #0x18] + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + bl FUN_021E0F00 + mov r1, #0xc + mla r1, r5, r1, r4 + bl FUN_02096DA0 + cmp r0, #0 + beq _021E1FD4 + mvn r1, #0 + cmp r0, r1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} +_021E1FD4: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E1FE0: .word 0x022106D0 + + arm_func_start FUN_021E1FE4 +FUN_021E1FE4: ; 0x021E1FE4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x210 + ldr r2, _021E2064 ; =0x022106D0 + mov r6, r0 + ldr r0, [r2] + mov r5, r1 + ldr r0, [r0, #0x34] + cmp r0, #0 + addeq sp, sp, #0x210 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r5] + bl FUN_021E1F18 + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + addeq sp, sp, #0x210 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5, #8] + add r2, sp, #0 + mov r0, r6 + bl FUN_021F06E4 + ldr r0, _021E2064 ; =0x022106D0 + ldr r1, [sp, #4] + ldr r0, [r0] + add r2, sp, #0x108 + ldr r3, [r0, #0x38] + ldr ip, [r0, #0x34] + mov r0, r4 + and r1, r1, #0xff + blx ip + add sp, sp, #0x210 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E2064: .word 0x022106D0 + + arm_func_start FUN_021E2068 +FUN_021E2068: ; 0x021E2068 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + ldr r0, [r4, #8] + ldr r1, _021E20C0 ; =0x0220D354 + bl strcmp + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r0, _021E20C4 ; =FUN_021E110C + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4] + mov r0, r5 + mov r3, r2 + bl FUN_021F0B9C + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E20C0: .word 0x0220D354 +_021E20C4: .word FUN_021E110C + + arm_func_start FUN_021E20C8 +FUN_021E20C8: ; 0x021E20C8 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _021E210C ; =0x022106D0 + ldr r2, [r2] + ldr r2, [r2, #0x18] + cmp r2, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {pc} + ldr r3, _021E2110 ; =FUN_021E12B8 + mov r2, #0 + str r3, [sp] + str r2, [sp, #4] + ldr r1, [r1] + mov r3, r2 + bl FUN_021F0B9C + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021E210C: .word 0x022106D0 +_021E2110: .word FUN_021E12B8 + + arm_func_start FUN_021E2114 +FUN_021E2114: ; 0x021E2114 + stmdb sp!, {r4, lr} + ldr r2, _021E2170 ; =0x022106D0 + mov r4, r0 + ldr r2, [r2] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021DD6B0 + ldr r0, _021E2170 ; =0x022106D0 + ldr r3, [r0] + ldr r0, [r3] + cmp r0, #0 + beq _021E2168 + cmp r0, #2 + beq _021E2168 + ldrb r1, [r3, #0x1d] + ldr r2, [r3, #0x30] + ldr r3, [r3, #0x2c] + mov r0, r4 + blx r3 +_021E2168: + bl FUN_021E1CCC + ldmia sp!, {r4, pc} + .align 2, 0 +_021E2170: .word 0x022106D0 + + arm_func_start FUN_021E2174 +FUN_021E2174: ; 0x021E2174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _021E2224 ; =0x022106D0 + ldr r5, [sp, #0x10] + ldr r1, [r0] + ldr r4, [sp, #0x14] + str r2, [r1, #0x2c] + ldr r1, [r0] + ldr lr, [sp, #0x18] + str r3, [r1, #0x30] + ldr r1, [r0] + ldr ip, [sp, #0x1c] + str r5, [r1, #0x34] + ldr r1, [r0] + mov r3, #0 + str r4, [r1, #0x38] + ldr r1, [r0] + mov r2, #1 + str lr, [r1, #0x3c] + ldr r1, [r0] + str ip, [r1, #0x40] + ldr r1, [r0] + strb r3, [r1, #0x1d] + ldr r1, [r0] + strb r3, [r1, #0x1e] + ldr r1, [r0] + strb r3, [r1, #0x1f] + ldr r1, [r0] + strb r3, [r1, #0x1c] + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + ldr r0, [r1, #0x18] + cmp r0, #0 + ldreqb r0, [r1, #0x1f] + addeq r0, r0, #1 + streqb r0, [r1, #0x1f] + ldr r0, _021E2224 ; =0x022106D0 + ldr r1, [r0] + ldrb r0, [r1, #0x1f] + add r0, r0, #1 + strb r0, [r1, #0x1f] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E2224: .word 0x022106D0 + + arm_func_start FUN_021E2228 +FUN_021E2228: ; 0x021E2228 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E2348 ; =0x022106D0 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x18] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl FUN_021E10F8 + cmp r0, #0 + bne _021E227C + bl FUN_021FBE5C + cmp r0, #0 + beq _021E2280 +_021E227C: + bl FUN_021FBD00 +_021E2280: + ldr r0, _021E2348 ; =0x022106D0 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021E231C + ldr r0, [r0] + cmp r0, #0 + beq _021E231C + bl FUN_021E1CFC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E2348 ; =0x022106D0 + ldr r3, [r0] + ldr r0, [r3, #0x18] + cmp r0, #0 + beq _021E231C + ldrb r2, [r3, #0x1e] + cmp r2, #3 + beq _021E231C + ldr r1, [r3, #8] + cmp r1, #7 + bls _021E231C + cmp r2, #1 + bhi _021E22EC + ldr r1, [r3, #0x14] + bl FUN_021E1A60 +_021E22EC: + ldr r0, _021E2348 ; =0x022106D0 + ldr r3, [r0] + ldrb r2, [r3, #0x1c] + ldr r1, [r3, #0x14] + cmp r2, r1 + blt _021E231C + mov r1, #3 + strb r1, [r3, #0x1e] + ldr r1, [r0] + ldrb r0, [r1, #0x1f] + add r0, r0, #1 + strb r0, [r1, #0x1f] +_021E231C: + ldr r0, _021E2348 ; =0x022106D0 + ldr r1, [r0] + ldrb r0, [r1, #0x1f] + cmp r0, #2 + addlo sp, sp, #4 + ldmloia sp!, {pc} + mov r0, #0 + strb r0, [r1, #0x1f] + bl FUN_021E1A20 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E2348: .word 0x022106D0 + + arm_func_start FUN_021E234C +FUN_021E234C: ; 0x021E234C + stmdb sp!, {r4, lr} + ldr lr, _021E2428 ; =0x022106D0 + mov ip, #0 + str r0, [lr] + str ip, [r0] + ldr r4, [lr] + ldr r0, [sp, #8] + str r1, [r4, #4] + ldr r1, [lr] + str ip, [r1, #8] + ldr r1, [lr] + str ip, [r1, #0xc] + str ip, [r1, #0x10] + str r0, [r1, #0x14] + ldr r0, [lr] + str r3, [r0, #0x18] + ldr r0, [lr] + strb ip, [r0, #0x1c] + ldr r0, [lr] + strb ip, [r0, #0x1d] + ldr r0, [lr] + strb ip, [r0, #0x1e] + ldr r0, [lr] + strb ip, [r0, #0x1f] + ldr r0, [lr] + str ip, [r0, #0x20] + ldr r0, [lr] + str ip, [r0, #0x24] + ldr r0, [lr] + str r2, [r0, #0x28] + ldr r0, [lr] + str ip, [r0, #0x2c] + ldr r0, [lr] + str ip, [r0, #0x30] + ldr r0, [lr] + str ip, [r0, #0x34] + ldr r0, [lr] + str ip, [r0, #0x38] + ldr r0, [lr] + str ip, [r0, #0x3c] + ldr r0, [lr] + str ip, [r0, #0x40] + ldr r0, [lr] + str ip, [r0, #0x44] + ldr r0, [lr] + str ip, [r0, #0x48] + ldr r0, [lr] + str ip, [r0, #0x4c] + ldr r0, [lr] + str ip, [r0, #0x50] + ldr r0, [lr] + str ip, [r0, #0x54] + ldr r0, [lr] + str ip, [r0, #0x58] + ldmia sp!, {r4, pc} + .align 2, 0 +_021E2428: .word 0x022106D0 + + arm_func_start FUN_021E242C +FUN_021E242C: ; 0x021E242C + ldr r2, _021E2450 ; =0x022106D0 + ldr r3, [r2] + cmp r3, #0 + moveq r0, #0 + strne r0, [r3, #0x44] + ldrne r2, [r2] + movne r0, #1 + strne r1, [r2, #0x48] + bx lr + .align 2, 0 +_021E2450: .word 0x022106D0 + + arm_func_start FUN_021E2454 +FUN_021E2454: ; 0x021E2454 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x104 + ldr r2, _021E24DC ; =0x022106D0 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _021E2480 + bl FUN_021E05FC + cmp r0, #0 + bne _021E248C +_021E2480: + add sp, sp, #0x104 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E248C: + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + mov r3, #0xff + bl FUN_021DD4FC + mvn r3, #0 + cmp r0, r3 + addeq sp, sp, #0x104 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + add r2, sp, #0 + mov r1, #0 + strb r1, [r2, r0] + mov r0, r3 + bl FUN_021E1E30 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E24DC: .word 0x022106D0 + + arm_func_start FUN_021E24E0 +FUN_021E24E0: ; 0x021E24E0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x100 + mov r6, r3 + add r3, sp, #0 + ldr r4, [sp, #0x110] + bl FUN_021E259C + movs r5, r0 + mvneq r1, #0 + addeq sp, sp, #0x100 + streq r1, [r4] + ldmeqia sp!, {r4, r5, r6, pc} + add r0, sp, #0 + bl strlen + mov r2, #0 + mov r1, r0 + add r0, sp, #0 + mov r3, r2 + bl FUN_021DD36C + str r0, [r4] + cmp r6, #0 + beq _021E2544 + ldr r4, [r4] + mvn r0, #0 + cmp r4, r0 + bne _021E2550 +_021E2544: + add sp, sp, #0x100 + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} +_021E2550: + add r0, sp, #0 + bl strlen + mov r1, r0 + add r0, sp, #0 + mov r2, r6 + mov r3, r4 + bl FUN_021DD36C + mov r0, r5 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E2578 +FUN_021E2578: ; 0x021E2578 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r3, r1 + mov r1, #0 + str r2, [sp] + mov r2, r1 + bl FUN_021E24E0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E259C +FUN_021E259C: ; 0x021E259C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x218 + mov r6, r1 + add r1, sp, #4 + mov r4, r2 + mov r5, r3 + bl FUN_021E16EC + cmp r0, #0 + beq _021E268C + ldr r0, [sp, #8] + cmp r0, #6 + bne _021E2650 + cmp r6, #0 + beq _021E260C + ldr r0, _021E26B0 ; =0x0220D38C + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl FUN_021DE9F4 + cmp r0, #0 + movle r0, #0 + strleb r0, [r6] + ble _021E260C + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + strb r0, [r6] +_021E260C: + cmp r4, #0 + beq _021E2668 + ldr r0, _021E26B4 ; =0x0220D390 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl FUN_021DE9F4 + cmp r0, #0 + movle r0, #0 + strleb r0, [r4] + ble _021E2668 + add r0, sp, #0 + mov r1, #0 + mov r2, #0xa + bl strtoul + strb r0, [r4] + b _021E2668 +_021E2650: + cmp r6, #0 + movne r0, #0 + strneb r0, [r6] + cmp r4, #0 + movne r0, #0 + strneb r0, [r4] +_021E2668: + cmp r5, #0 + beq _021E267C + add r1, sp, #0x10c + mov r0, r5 + bl strcpy +_021E267C: + ldr r0, [sp, #8] + add sp, sp, #0x218 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} +_021E268C: + cmp r6, #0 + movne r0, #0 + strneb r0, [r6] + cmp r4, #0 + movne r0, #0 + strneb r0, [r4] + mov r0, #0 + add sp, sp, #0x218 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E26B0: .word 0x0220D38C +_021E26B4: .word 0x0220D390 + + arm_func_start FUN_021E26B8 +FUN_021E26B8: ; 0x021E26B8 + ldr ip, _021E26CC ; =FUN_021E259C + mov r3, r1 + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_021E26CC: .word FUN_021E259C + + arm_func_start FUN_021E26D0 +FUN_021E26D0: ; 0x021E26D0 + ldr r1, _021E26E0 ; =0x022106D8 + ldr r1, [r1] + str r0, [r1, #0x1a0] + bx lr + .align 2, 0 +_021E26E0: .word 0x022106D8 + + arm_func_start FUN_021E26E4 +FUN_021E26E4: ; 0x021E26E4 + ldr r0, _021E26F0 ; =0x022106D8 + ldr r0, [r0] + bx lr + .align 2, 0 +_021E26F0: .word 0x022106D8 + + arm_func_start FUN_021E26F4 +FUN_021E26F4: ; 0x021E26F4 + ldr r1, _021E2700 ; =0x022106D8 + str r0, [r1] + bx lr + .align 2, 0 +_021E2700: .word 0x022106D8 + + arm_func_start FUN_021E2704 +FUN_021E2704: ; 0x021E2704 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E273C + bl FUN_021E26E4 + ldrb r1, [r0, #0x17d] + add r1, r1, #1 + strb r1, [r0, #0x17d] +_021E273C: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E275C + bl FUN_021E26E4 + ldrb r0, [r0, #0x17d] + cmp r0, #5 + blo _021E2774 +_021E275C: + ldr r1, _021E2780 ; =0xFFFEAE6C + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021E2774: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E2780: .word 0xFFFEAE6C + + arm_func_start FUN_021E2784 +FUN_021E2784: ; 0x021E2784 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + mov r5, r0 + mov r6, r2 + mov r4, r3 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E27BC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} +_021E27BC: + cmp r4, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r5, #0 + bne _021E29B8 + mov r0, #0 + str r0, [r4, #8] + bl FUN_021E26E4 + ldrb r1, [r0, #0x14] + add r1, r1, #1 + strb r1, [r0, #0x14] + bl FUN_021E26E4 + ldrb r1, [r4] + ldrb r5, [r0, #0x14] + cmp r1, #0 + beq _021E2950 + bl FUN_021E26E4 + ldr r1, [r6, #4] + add r0, r0, r5, lsl #2 + str r1, [r0, #0x210] + ldrh r4, [r6, #2] + bl FUN_021E26E4 + mov r2, r4, asr #8 + mov r1, r4, lsl #8 + add r0, r0, r5, lsl #1 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r0, #0x200 + strh r1, [r0, #0x90] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x180] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + bne _021E2878 + mov r0, #0xc + bl FUN_021E26D0 + b _021E2880 +_021E2878: + mov r0, #7 + bl FUN_021E26D0 +_021E2880: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xc] + bl FUN_021E26E4 + ldr r3, [r0, #0x200] + ldr r2, _021E2B58 ; =0x0220D394 + add r0, sp, #0x10 + mov r1, #0xc + bl OS_SNPrintf + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + add r1, r6, r5, lsl #2 + mov r2, r0 + ldr r0, [r1, #0x210] + add r1, r2, r5, lsl #1 + add r1, r1, #0x200 + ldrh r1, [r1, #0x90] + mov r2, #0 + bl FUN_021FFEB0 + mov r6, r0 + bl FUN_021E26E4 + mvn r1, #0 + str r1, [sp] + ldr r3, _021E2B5C ; =0x00001388 + mov r1, #0 + str r3, [sp, #4] + ldr r0, [r0, #8] + mov r2, r6 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #4] + add r3, sp, #0x10 + ldr r0, [r0] + bl FUN_021FD52C + cmp r0, #1 + bne _021E2928 + bl FUN_021E36B0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} +_021E2928: + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + bl FUN_021E26E4 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + add sp, sp, #0x20 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E2950: + cmp r6, #0 + beq _021E2994 + sub r4, r5, #1 + bl FUN_021E26E4 + ldr r1, [r6, #4] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x210] + ldrh r5, [r6, #2] + bl FUN_021E26E4 + mov r2, r5, asr #8 + mov r1, r5, lsl #8 + add r0, r0, r4, lsl #1 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r0, #0x200 + strh r1, [r0, #0x90] +_021E2994: + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x18c] + mov r0, #7 + str r1, [r4, #0x190] + bl FUN_021E26D0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} +_021E29B8: + ldr r0, [r4, #8] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl FUN_021E3754 + mov r6, r0 + cmp r6, #2 + beq _021E29E8 + cmp r6, #1 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} +_021E29E8: + ldrb r0, [r4] + cmp r0, #0 + bne _021E2A74 + cmp r6, #1 + beq _021E2A10 + cmp r6, #2 + bne _021E2A50 + ldrb r0, [r4, #1] + cmp r0, #1 + blo _021E2A50 +_021E2A10: + mov r0, #0 + str r0, [r4, #8] + bl FUN_021E2704 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E5908 + add sp, sp, #0x20 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E2A50: + ldrb r1, [r4, #1] + mov r0, r4 + add r1, r1, #1 + strb r1, [r4, #1] + bl FUN_021E7A44 + bl FUN_021E37A4 + add sp, sp, #0x20 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E2A74: + bl FUN_021E26E4 + mov r5, r0 + bl OS_GetTick + str r0, [r5, #0x184] + str r1, [r5, #0x188] + cmp r6, #1 + beq _021E2AB0 + cmp r6, #2 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x17c] + cmp r0, #1 + addlo sp, sp, #0x20 + ldmloia sp!, {r4, r5, r6, pc} +_021E2AB0: + mov r0, #0 + str r0, [r4, #8] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E2AD8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E2AF0 +_021E2AD8: + mov r0, #1 + bl FUN_021E2704 + cmp r0, #0 + bne _021E2B04 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} +_021E2AF0: + mov r0, #0 + bl FUN_021E2704 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, pc} +_021E2B04: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x180] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + cmp r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E2B58: .word 0x0220D394 +_021E2B5C: .word 0x00001388 + + arm_func_start FUN_021E2B60 +FUN_021E2B60: ; 0x021E2B60 + bx lr + + arm_func_start FUN_021E2B64 +FUN_021E2B64: ; 0x021E2B64 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x9c + mov sl, r0 + mov sb, r1 + mov r8, #0 + bl FUN_021DF88C + cmp r0, #5 + beq _021E2BB8 + bl FUN_021DF88C + cmp r0, #6 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E2BB8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E2BB8: + cmp sb, #0x14 + addlo sp, sp, #0x9c + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r4, sp, #0x1c + add fp, sp, #8 + add r5, sl, #0x14 + mov r7, #0x14 + mov r6, #4 +_021E2BD8: + mov r0, sl + mov r1, fp + mov r2, r7 + bl MI_CpuCopy8 + ldr r1, _021E2C74 ; =0x0220D398 + mov r0, fp + mov r2, r6 + bl strncmp + cmp r0, #0 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0xc] + cmp r0, #3 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sp, #0x11] + mov r0, r5 + mov r1, r4 + bl MI_CpuCopy8 + str r4, [sp] + ldrb r0, [sp, #0x11] + mov r0, r0, asr #2 + str r0, [sp, #4] + ldrb r0, [sp, #0x10] + ldrh r3, [sp, #0x12] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + bl FUN_021E6730 + cmp r0, #0 + addeq sp, sp, #0x9c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sp, #0x11] + add r0, r0, #0x14 + add r8, r8, r0 + add r0, r8, #0x14 + cmp r0, sb + bls _021E2BD8 + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E2C74: .word 0x0220D398 + + arm_func_start FUN_021E2C78 +FUN_021E2C78: ; 0x021E2C78 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E2C9C + mov r0, #6 + bl FUN_021E26D0 + b _021E2CBC +_021E2C9C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E2CBC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + ldmneia sp!, {r4, pc} +_021E2CBC: + bl FUN_021E26E4 + ldr r0, [r0, #0x180] + cmp r4, r0 + bne _021E2CE0 + bl FUN_021E26E4 + ldrb r1, [r0, #0x17c] + add r1, r1, #1 + strb r1, [r0, #0x17c] + b _021E2CF4 +_021E2CE0: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl FUN_021E26E4 + str r4, [r0, #0x180] +_021E2CF4: + bl FUN_021E26E4 + mov r2, #0 + str r2, [r0, #0x184] + str r2, [r0, #0x188] + mov r1, r4 + mov r0, #1 + bl FUN_021E7B04 + bl FUN_021E37A4 + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl FUN_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E2D2C +FUN_021E2D2C: ; 0x021E2D2C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl FUN_021E26E4 + str r5, [r0, #0x1c] + bl FUN_021E26E4 + strh r4, [r0, #0x1a] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021E2D54 +FUN_021E2D54: ; 0x021E2D54 + ldr ip, _021E2D5C ; =FUN_021E3800 + bx ip + .align 2, 0 +_021E2D5C: .word FUN_021E3800 + + arm_func_start FUN_021E2D60 +FUN_021E2D60: ; 0x021E2D60 + mov r0, #0 + bx lr + + arm_func_start FUN_021E2D68 +FUN_021E2D68: ; 0x021E2D68 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + cmp r0, #0 + beq _021E2D88 + cmp r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021E2D88: + mov r0, r6 + mov r1, #8 + bl FUN_02202254 + mov r0, r6 + mov r1, #0xa + bl FUN_02202254 + mov r0, r6 + mov r1, #0x32 + bl FUN_02202254 + mov r0, r6 + mov r1, #0x33 + bl FUN_02202254 + mov r0, r6 + mov r1, #0x34 + bl FUN_02202254 + mov r0, r6 + mov r1, #0x35 + bl FUN_02202254 + mov r0, r6 + mov r1, #0x36 + bl FUN_02202254 + ldr r4, _021E2E0C ; =0x02210704 + mov r5, #0 +_021E2DE4: + ldrb r1, [r4] + cmp r1, #0 + beq _021E2DF8 + mov r0, r6 + bl FUN_02202254 +_021E2DF8: + add r5, r5, #1 + cmp r5, #0x9a + add r4, r4, #0xc + blt _021E2DE4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E2E0C: .word 0x02210704 + + arm_func_start FUN_021E2E10 +FUN_021E2E10: ; 0x021E2E10 + bx lr + + arm_func_start FUN_021E2E14 +FUN_021E2E14: ; 0x021E2E14 + bx lr + + arm_func_start FUN_021E2E18 +FUN_021E2E18: ; 0x021E2E18 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0x32 + bgt _021E2E54 + cmp r0, #0x32 + bge _021E2E9C + cmp r0, #0xa + bgt _021E2EF8 + cmp r0, #8 + blt _021E2EF8 + cmp r0, #8 + beq _021E2E74 + cmp r0, #0xa + beq _021E2E88 + b _021E2EF8 +_021E2E54: + sub r1, r0, #0x33 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _021E2EF8 +_021E2E64: ; jump table + b _021E2EB0 ; case 0 + b _021E2EC4 ; case 1 + b _021E2ED8 ; case 2 + b _021E2EE8 ; case 3 +_021E2E74: + bl FUN_021E26E4 + ldrb r1, [r0, #0x14] + mov r0, r4 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2E88: + bl FUN_021E26E4 + ldrb r1, [r0, #0x16] + mov r0, r4 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2E9C: + bl FUN_021E26E4 + ldr r1, [r0, #0x200] + mov r0, r4 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2EB0: + bl FUN_021E26E4 + ldrb r1, [r0, #0x15] + mov r0, r4 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2EC4: + bl FUN_021E26E4 + ldr r1, [r0, #0x20] + mov r0, r4 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2ED8: + mov r0, r4 + mov r1, #3 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2EE8: + mov r0, r4 + mov r1, #1 + bl FUN_02202220 + ldmia sp!, {r4, pc} +_021E2EF8: + subs r1, r0, #0x64 + ldmmiia sp!, {r4, pc} + cmp r1, #0x9a + ldmgeia sp!, {r4, pc} + mov r0, #0xc + mul r2, r1, r0 + ldr r0, _021E2F5C ; =0x02210704 + ldrb r0, [r0, r2] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _021E2F60 ; =0x02210705 + ldrb r0, [r0, r2] + cmp r0, #0 + beq _021E2F44 + ldr r1, _021E2F64 ; =0x0221070C + mov r0, r4 + ldr r1, [r1, r2] + bl FUN_022021C0 + ldmia sp!, {r4, pc} +_021E2F44: + ldr r1, _021E2F64 ; =0x0221070C + mov r0, r4 + ldr r1, [r1, r2] + ldr r1, [r1] + bl FUN_02202220 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E2F5C: .word 0x02210704 +_021E2F60: .word 0x02210705 +_021E2F64: .word 0x0221070C + + arm_func_start FUN_021E2F68 +FUN_021E2F68: ; 0x021E2F68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov r8, #0 + mov r7, r8 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r0, #1 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov sb, r8 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r0, #0 + ble _021E2FF8 + ldr r4, _021E30D8 ; =0x0220BAC4 + ldr r6, _021E30DC ; =0x0220D3A0 + mvn r5, #0 +_021E2FB4: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, sb + bl FUN_02203BF4 + mov r1, r6 + mov r2, r5 + bl FUN_0220394C + cmp r0, r8 + movgt r8, r0 + ldr r0, [r4, sb, lsl #2] + add sb, sb, #1 + add r7, r7, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp sb, r0 + blt _021E2FB4 +_021E2FF8: + mov r0, #0x64 + bl FUN_021DE8C8 + mov sb, r0 + mov r6, #0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r0, #0 + ble _021E3090 + add r5, sp, #0 + mov fp, r6 + mov r4, #0x64 +_021E3028: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + sub r0, r0, #1 + cmp r6, r0 + beq _021E3090 + cmp r6, #0 + subgt r0, r6, #1 + ldrgt sl, [r5, r0, lsl #2] + ldr r0, _021E30D8 ; =0x0220BAC4 + movle sl, fp + ldr r2, [r0, r6, lsl #2] + mov r1, r7 + mul r0, r2, r4 + bl _s32_div_f + add r0, r0, sl + str r0, [r5, r6, lsl #2] + ldr r0, [r5, r6, lsl #2] + cmp sb, r0 + blo _021E3090 + add r6, r6, #1 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r6, r0 + blt _021E3028 +_021E3090: + mvn r0, #0x80000000 + cmp r8, r0 + addlt r8, r8, #1 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r6 + bl FUN_02203BF4 + ldr r1, _021E30DC ; =0x0220D3A0 + mov r2, r8 + bl FUN_02203A48 + bl FUN_021E26E4 + mov r1, #0 + ldr r0, [r0, #0xe4] + ldr r2, _021E30DC ; =0x0220D3A0 + mov r3, r1 + bl FUN_02203BD4 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E30D8: .word 0x0220BAC4 +_021E30DC: .word 0x0220D3A0 + + arm_func_start FUN_021E30E0 +FUN_021E30E0: ; 0x021E30E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r1, #0 + str r1, [sp, #4] + str r0, [sp] + mov r8, r1 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r0, #0 + ble _021E3268 + mov r0, #0x80 + mov r4, #1 + mov r5, r8 + str r0, [sp, #8] + mov fp, #0x100 +_021E3120: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r8 + bl FUN_02203BF4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E31BC + ldr r1, _021E32D4 ; =0x0220D3AC + mov r0, r6 + mov r2, r5 + bl FUN_0220394C + mov sb, r0 + mov sl, r5 + mov r7, r4 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E31B4 +_021E3170: + bl FUN_021E26E4 + add r0, r0, r7, lsl #2 + ldr r0, [r0, #0xf4] + cmp sb, r0 + bne _021E31A0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r6 + bl FUN_02203C50 + mov sl, r4 + sub r8, r8, #1 + b _021E31B4 +_021E31A0: + add r7, r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E3170 +_021E31B4: + cmp sl, #0 + bne _021E3250 +_021E31BC: + bl FUN_021E26E4 + ldr r0, [r0, #0x474] + cmp r0, #0 + beq _021E3238 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + ldr r1, [r0, #0x478] + ldr r2, [r7, #0x474] + mov r0, r8 + blx r2 + mov r7, r0 + cmp r7, #0 + ble _021E321C + ldr r0, _021E32D8 ; =0x007FFFFF + cmp r7, r0 + movgt r7, r0 + mov r0, fp + bl FUN_021DE8C8 + orr r2, r0, r7, lsl #8 + ldr r1, _021E32DC ; =0x0220D3A0 + mov r0, r6 + bl FUN_02203A48 + b _021E3250 +_021E321C: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, r6 + bl FUN_02203C50 + str r4, [sp, #4] + sub r8, r8, #1 + b _021E3250 +_021E3238: + ldr r0, [sp, #8] + bl FUN_021DE8C8 + mov r2, r0 + ldr r1, _021E32DC ; =0x0220D3A0 + mov r0, r6 + bl FUN_02203A48 +_021E3250: + add r8, r8, #1 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r8, r0 + blt _021E3120 +_021E3268: + ldr r0, [sp] + cmp r0, #0 + beq _021E32A0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r0, #0 + beq _021E32A0 + bl FUN_021E26E4 + mov r1, #0 + ldr r0, [r0, #0xe4] + ldr r2, _021E32DC ; =0x0220D3A0 + mov r3, r1 + bl FUN_02203BD4 +_021E32A0: + ldr r0, [sp, #4] + cmp r0, #0 + beq _021E32C8 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BE4 + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E32C8: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E32D4: .word 0x0220D3AC +_021E32D8: .word 0x007FFFFF +_021E32DC: .word 0x0220D3A0 + + arm_func_start FUN_021E32E0 +FUN_021E32E0: ; 0x021E32E0 + bx lr + + arm_func_start FUN_021E32E4 +FUN_021E32E4: ; 0x021E32E4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + cmp r1, #0 + beq _021E330C + cmp r1, #4 + beq _021E331C + add sp, sp, #4 + cmp r1, #5 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E330C: + mov r0, r2 + bl FUN_021E32E0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E331C: + mov r5, #0 + bl FUN_02203BE4 + cmp r0, #0 + ble _021E336C +_021E332C: + mov r0, r6 + mov r1, r5 + bl FUN_02203BF4 + mov r4, r0 + bl FUN_021E3F98 + cmp r0, #0 + bne _021E3358 + mov r0, r6 + mov r1, r4 + bl FUN_02203C50 + sub r5, r5, #1 +_021E3358: + mov r0, r6 + add r5, r5, #1 + bl FUN_02203BE4 + cmp r5, r0 + blt _021E332C +_021E336C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #2 + beq _021E3394 + cmp r0, #3 + beq _021E348C + cmp r0, #5 + beq _021E3508 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3394: + mov r0, r6 + mov r5, #0 + bl FUN_02203BE4 + cmp r0, #0 + ble _021E3424 +_021E33A8: + mov r0, r6 + mov r1, r5 + bl FUN_02203BF4 + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _021E3410 + bl FUN_021E26E4 + mov r7, r0 + mov r0, r4 + bl FUN_02203908 + ldr r1, [r7, #0x1c] + cmp r1, r0 + bne _021E3410 + bl FUN_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _021E3410 + bl FUN_021E26E4 + mov r7, r0 + mov r0, r4 + bl FUN_022038E4 + ldrh r1, [r7, #0x1a] + cmp r1, r0 + beq _021E3424 +_021E3410: + mov r0, r6 + add r5, r5, #1 + bl FUN_02203BE4 + cmp r5, r0 + blt _021E33A8 +_021E3424: + mov r0, r6 + bl FUN_02203BE4 + cmp r5, r0 + bge _021E3464 + mov r0, #3 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + bl FUN_021E7E5C + bl FUN_021E38E8 + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3464: + bl FUN_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #4 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, pc} +_021E348C: + mov r0, #1 + bl FUN_021E30E0 + bl FUN_021E2F68 + mov r0, r6 + bl FUN_02203BE4 + cmp r0, #0 + beq _021E34E0 + mov r0, #0 + mov r1, r0 + bl FUN_021E6038 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #4 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0xe8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E34E0: + bl FUN_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #4 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3508: + mov r0, r6 + bl FUN_02203BE4 + cmp r0, #0 + beq _021E3580 + mov r4, #0 +_021E351C: + mov r0, r6 + mov r1, r4 + bl FUN_02203BF4 + mov r5, r0 + bl FUN_02203908 + mov r7, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x1b8] + cmp r7, r0 + bne _021E3564 + mov r0, r5 + bl FUN_022038E4 + mov r7, r0 + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb4] + cmp r7, r0 + beq _021E3580 +_021E3564: + mov r0, r6 + mov r1, r5 + bl FUN_02203C50 + mov r0, r6 + bl FUN_02203BE4 + cmp r0, #0 + bne _021E351C +_021E3580: + mov r0, r6 + bl FUN_02203BE4 + cmp r0, #0 + beq _021E3684 + mov r0, r6 + mov r1, #0 + bl FUN_02203BF4 + ldr r1, _021E36AC ; =0x0220D3AC + mov r2, #0 + bl FUN_0220394C + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E3650 + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + cmp r4, r0 + bne _021E3650 + mov r0, #0 + bl FUN_021E30E0 + cmp r0, #0 + beq _021E3604 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E3650 + bl FUN_021E5824 + bl FUN_021E61EC + cmp r0, #0 + beq _021E3650 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3604: + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5BF0 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #4 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, r0 + mov r0, #0 + ldr r2, [r1, #0xf4] + mov r1, r0 + bl FUN_021E5D30 + bl FUN_021E61EC + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3650: + mov r0, #6 + bl FUN_021E26D0 + mov r0, r6 + mov r1, #0 + bl FUN_02203BF4 + mov r2, r0 + mov r0, #0 + mov r1, r0 + bl FUN_021E7B04 + bl FUN_021E37A4 + add sp, sp, #4 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E3684: + bl FUN_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E36AC: .word 0x0220D3AC + + arm_func_start FUN_021E36B0 +FUN_021E36B0: ; 0x021E36B0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _021E3734 +_021E36CC: ; jump table + b _021E3734 ; case 0 + b _021E36EC ; case 1 + b _021E36F8 ; case 2 + b _021E3708 ; case 3 + b _021E3714 ; case 4 + b _021E36F8 ; case 5 + b _021E3720 ; case 6 + b _021E372C ; case 7 +_021E36EC: + mov r0, #9 + mvn r2, #0 + b _021E3734 +_021E36F8: + mov r0, #0 + mov r2, r0 + mov r4, r0 + b _021E3734 +_021E3708: + mov r0, #6 + mvn r2, #9 + b _021E3734 +_021E3714: + mov r0, #6 + mvn r2, #0x1d + b _021E3734 +_021E3720: + mov r0, #6 + mvn r2, #0x45 + b _021E3734 +_021E372C: + mov r0, #6 + mvn r2, #0x4f +_021E3734: + cmp r0, #0 + beq _021E3748 + ldr r1, _021E3750 ; =0xFFFEAC28 + add r1, r2, r1 + bl FUN_021E8E08 +_021E3748: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E3750: .word 0xFFFEAC28 + + arm_func_start FUN_021E3754 +FUN_021E3754: ; 0x021E3754 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #1 + beq _021E3778 + cmp r4, #2 + beq _021E3780 + b _021E3788 +_021E3778: + mov r0, #1 + ldmia sp!, {r4, pc} +_021E3780: + mov r0, #2 + ldmia sp!, {r4, pc} +_021E3788: + movs r0, #6 + beq _021E3798 + ldr r1, _021E37A0 ; =0xFFFEB007 + bl FUN_021E8E08 +_021E3798: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E37A0: .word 0xFFFEB007 + + arm_func_start FUN_021E37A4 +FUN_021E37A4: ; 0x021E37A4 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #1 + beq _021E37D4 + cmp r4, #2 + beq _021E37E0 + cmp r4, #3 + moveq r0, #6 + mvneq r2, #0x1d + b _021E37E8 +_021E37D4: + mov r0, #9 + mvn r2, #0 + b _021E37E8 +_021E37E0: + mov r0, #6 + mvn r2, #0x31 +_021E37E8: + ldr r1, _021E37FC ; =0xFFFEB010 + add r1, r2, r1 + bl FUN_021E8E08 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E37FC: .word 0xFFFEB010 + + arm_func_start FUN_021E3800 +FUN_021E3800: ; 0x021E3800 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #5 + addls pc, pc, r6, lsl #2 + b _021E386C +_021E381C: ; jump table + b _021E386C ; case 0 + b _021E3834 ; case 1 + b _021E3840 ; case 2 + b _021E384C ; case 3 + b _021E3858 ; case 4 + b _021E3864 ; case 5 +_021E3834: + mov r4, #6 + mvn r5, #0x31 + b _021E386C +_021E3840: + mov r4, #6 + mvn r5, #0x3b + b _021E386C +_021E384C: + mov r4, #6 + mvn r5, #0x1d + b _021E386C +_021E3858: + mov r4, #6 + mvn r5, #0x4f + b _021E386C +_021E3864: + mov r4, #6 + mvn r5, #0x13 +_021E386C: + bl FUN_021DF88C + cmp r0, #2 + beq _021E388C + cmp r0, #4 + beq _021E389C + cmp r0, #5 + beq _021E38B0 + b _021E38C4 +_021E388C: + mov r0, r4 + sub r1, r5, #0xfa00 + bl FUN_021E0EAC + b _021E38D4 +_021E389C: + ldr r1, _021E38DC ; =0xFFFEDEF0 + mov r0, r4 + add r1, r5, r1 + bl FUN_021E2114 + b _021E38D4 +_021E38B0: + ldr r1, _021E38E0 ; =0xFFFEB7E0 + mov r0, r4 + add r1, r5, r1 + bl FUN_021E8E08 + b _021E38D4 +_021E38C4: + ldr r1, _021E38E4 ; =0xFFFE90D0 + mov r0, r4 + add r1, r5, r1 + bl FUN_021DD6B0 +_021E38D4: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E38DC: .word 0xFFFEDEF0 +_021E38E0: .word 0xFFFEB7E0 +_021E38E4: .word 0xFFFE90D0 + + arm_func_start FUN_021E38E8 +FUN_021E38E8: ; 0x021E38E8 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #6 + addls pc, pc, r4, lsl #2 + b _021E3964 +_021E3904: ; jump table + b _021E3964 ; case 0 + b _021E3920 ; case 1 + b _021E392C ; case 2 + b _021E3938 ; case 3 + b _021E3944 ; case 4 + b _021E3950 ; case 5 + b _021E395C ; case 6 +_021E3920: + mov r0, #6 + mvn r2, #0x31 + b _021E3964 +_021E392C: + mov r0, #6 + mvn r2, #0x1d + b _021E3964 +_021E3938: + mov r0, #6 + mvn r2, #0x13 + b _021E3964 +_021E3944: + mov r0, #6 + mvn r2, #0x27 + b _021E3964 +_021E3950: + mov r0, #9 + mvn r2, #0 + b _021E3964 +_021E395C: + mov r0, #9 + mvn r2, #1 +_021E3964: + ldr r1, _021E3978 ; =0xFFFEB3F8 + add r1, r2, r1 + bl FUN_021E8E08 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E3978: .word 0xFFFEB3F8 + + arm_func_start FUN_021E397C +FUN_021E397C: ; 0x021E397C + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E39D8 +_021E3998: ; jump table + b _021E39D8 ; case 0 + b _021E39AC ; case 1 + b _021E39B8 ; case 2 + b _021E39C4 ; case 3 + b _021E39D0 ; case 4 +_021E39AC: + mov r0, #9 + mvn r2, #0 + b _021E39D8 +_021E39B8: + mov r0, #9 + mvn r2, #1 + b _021E39D8 +_021E39C4: + mov r0, #6 + mvn r2, #9 + b _021E39D8 +_021E39D0: + mov r0, #6 + mvn r2, #0x13 +_021E39D8: + ldr r1, _021E39EC ; =0xFFFEC398 + add r1, r2, r1 + bl FUN_021E8E08 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E39EC: .word 0xFFFEC398 + + arm_func_start FUN_021E39F0 +FUN_021E39F0: ; 0x021E39F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r0, _021E3E1C ; =0x022106D4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [r0] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x13 + bne _021E3C58 + mov r0, #0 + bl FUN_021E3EC4 + ldr r1, _021E3E1C ; =0x022106D4 + ldr r5, [r1] + ldr r1, [r5, #8] + cmp r1, r0 + bne _021E3B2C + ldr r1, [r5, #0xc] + cmp r1, r0 + bne _021E3AB8 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, #0 + sub r1, r1, #1 + strb r1, [r4, #0x1a4] + bl FUN_021E51C0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3AB8: + bl OS_GetTick + str r0, [r5, #0x18] + str r1, [r5, #0x1c] + mov r0, #0 + str r0, [r5, #8] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E3B0C + mov r0, #3 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + add sp, sp, #8 + str r1, [r4, #0xf0] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3B0C: + mov r0, #4 + bl FUN_021E26D0 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl FUN_021E5D30 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3B2C: + ldrb r4, [r5, #2] + bl OS_GetTick + ldr r3, [r5, #0x18] + ldr r2, [r5, #0x1c] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E3E20 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E3E24 ; =0x00001770 + mul r2, r4, r2 + cmp r1, r2, asr #31 + cmpeq r0, r2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r4, #5 + bls _021E3B98 + mov r0, #1 + bl FUN_021E3E28 + bl FUN_021E4B40 + mov r0, #1 + bl FUN_021E4CF8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3B98: + mov r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E3C3C + ldr r8, _021E3E1C ; =0x022106D4 + mov r5, #0 + mov r4, #0x11 + mov r6, r7 +_021E3BBC: + bl FUN_021E26E4 + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + ldr r1, [r8] + mov r0, r6,lsl r0 + ldr r1, [r1, #8] + ands r0, r1, r0 + bne _021E3C28 + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + mov sb, r0 + bl FUN_021E26E4 + str r5, [sp] + str r5, [sp, #4] + add r0, r0, r7, lsl #1 + add r1, sl, r7, lsl #2 + add r2, sb, r7, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r4 + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3C28: + add r7, r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E3BBC +_021E3C3C: + ldr r0, _021E3E1C ; =0x022106D4 + add sp, sp, #8 + ldr r1, [r0] + ldrb r0, [r1, #2] + add r0, r0, #1 + strb r0, [r1, #2] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3C58: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + beq _021E3C7C + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3C7C: + ldr r0, _021E3E1C ; =0x022106D4 + ldr r4, [r0] + bl FUN_021E26E4 + ldrb r1, [r4, #1] + ldrb r2, [r0, #0xd] + sub r0, r1, #1 + cmp r2, r0 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [r4, #2] + cmp r0, #0 + bne _021E3CF0 + ldr r0, _021E3E1C ; =0x022106D4 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E3E20 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2 + bhs _021E3D48 +_021E3CF0: + ldrb r0, [r4, #2] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _021E3E1C ; =0x022106D4 + ldr r4, [r0] + bl OS_GetTick + ldr r3, [r4, #0x18] + ldr r2, [r4, #0x1c] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E3E20 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2, lsr #2 + addlo sp, sp, #8 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3D48: + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _021E3D74 + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + bl FUN_021E5BF0 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E3D74: + mov r0, #0x13 + bl FUN_021E26D0 + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E3DF8 + mov r6, #0 + mov r5, #0x11 +_021E3D98: + bl FUN_021E26E4 + mov r8, r0 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + str r6, [sp] + str r6, [sp, #4] + add r0, r0, r4, lsl #1 + add r1, r8, r4, lsl #2 + add r2, r7, r4, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r5 + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E3D98 +_021E3DF8: + ldr r0, _021E3E1C ; =0x022106D4 + ldr r4, [r0] + bl OS_GetTick + str r0, [r4, #0x18] + str r1, [r4, #0x1c] + mov r0, #1 + strb r0, [r4, #2] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E3E1C: .word 0x022106D4 +_021E3E20: .word 0x000082EA +_021E3E24: .word 0x00001770 + + arm_func_start FUN_021E3E28 +FUN_021E3E28: ; 0x021E3E28 + stmdb sp!, {r4, lr} + ldr r1, _021E3E98 ; =0x022106D4 + mov r4, r0 + ldr r3, [r1] + cmp r3, #0 + ldmeqia sp!, {r4, pc} + ldrb r0, [r3] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #0 + str r2, [r3, #8] + ldr r0, [r1] + str r2, [r0, #0xc] + ldr r0, [r1] + strb r2, [r0, #2] + bl OS_GetTick + ldr r2, _021E3E98 ; =0x022106D4 + cmp r4, #0 + ldr r2, [r2] + str r0, [r2, #0x18] + str r1, [r2, #0x1c] + ldmneia sp!, {r4, pc} + bl OS_GetTick + ldr r2, _021E3E98 ; =0x022106D4 + ldr r2, [r2] + str r0, [r2, #0x10] + str r1, [r2, #0x14] + ldmia sp!, {r4, pc} + .align 2, 0 +_021E3E98: .word 0x022106D4 + + arm_func_start FUN_021E3E9C +FUN_021E3E9C: ; 0x021E3E9C + stmdb sp!, {r4, lr} + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ad] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1f8] + str r1, [r4, #0x1fc] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E3EC4 +FUN_021E3EC4: ; 0x021E3EC4 + stmdb sp!, {r4, r5, r6, lr} + cmp r0, #0 + mov r6, #0 + beq _021E3EE4 + bl FUN_021E26E4 + ldr r0, [r0, #0x2f0] + bic r0, r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021E3EE4: + mov r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E3F20 + mov r4, r5 +_021E3EFC: + bl FUN_021E26E4 + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + add r5, r5, #1 + orr r6, r6, r4, lsl r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E3EFC +_021E3F20: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E3F28 +FUN_021E3F28: ; 0x021E3F28 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + cmp r1, #0 + moveq r4, #1 + mov r5, r0 + movne r4, #0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + bgt _021E3F8C +_021E3F50: + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r5, r0 + bne _021E3F78 + bl FUN_021E26E4 + add r0, r0, r4 + add sp, sp, #4 + ldrb r0, [r0, #0x2d0] + ldmia sp!, {r4, r5, pc} +_021E3F78: + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E3F50 +_021E3F8C: + mov r0, #0xff + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021E3F98 +FUN_021E3F98: ; 0x021E3F98 + stmdb sp!, {r4, lr} + ldr r1, _021E405C ; =0x0220D3B4 + mvn r2, #0 + mov r4, r0 + bl FUN_0220394C + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4060 ; =0x0220D3C0 + mov r0, r4 + bl FUN_0220394C + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4064 ; =0x0220D3CC + mov r0, r4 + bl FUN_0220394C + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4068 ; =0x0220D3D8 + mov r0, r4 + bl FUN_0220394C + mvn r1, #0 + cmp r0, r1 + bne _021E4028 + ldr r1, _021E4068 ; =0x0220D3D8 + mov r0, r4 + mov r2, #0 + bl FUN_0220394C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_021E4028: + ldr r1, _021E406C ; =0x0220D3E4 + mov r0, r4 + mvn r2, #0 + bl FUN_0220394C + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021E4070 ; =0x0220D3AC + mov r0, r4 + mov r2, #0 + bl FUN_0220394C + ldmia sp!, {r4, pc} + .align 2, 0 +_021E405C: .word 0x0220D3B4 +_021E4060: .word 0x0220D3C0 +_021E4064: .word 0x0220D3CC +_021E4068: .word 0x0220D3D8 +_021E406C: .word 0x0220D3E4 +_021E4070: .word 0x0220D3AC + + arm_func_start FUN_021E4074 +FUN_021E4074: ; 0x021E4074 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x2fc] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r4, #0 + bl FUN_021E26E4 + ldr r0, [r0, #0x344] + cmp r0, #0 + ble _021E40E8 +_021E40AC: + bl FUN_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x304] + bl FUN_021E1F84 + cmp r0, #0 + ble _021E40D4 + cmp r0, r5 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} +_021E40D4: + add r4, r4, #1 + bl FUN_021E26E4 + ldr r0, [r0, #0x344] + cmp r4, r0 + blt _021E40AC +_021E40E8: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021E40F4 +FUN_021E40F4: ; 0x021E40F4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_021E4100: + mov r5, r4 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r0, #0 + blt _021E413C +_021E4114: + bl FUN_021E26E4 + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + cmp r6, r0 + beq _021E413C + add r5, r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r5, r0 + ble _021E4114 +_021E413C: + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r5, r0 + bgt _021E415C + add r0, r6, #1 + and r6, r0, #0xff + cmp r6, #0x20 + blo _021E4100 +_021E415C: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E4164 +FUN_021E4164: ; 0x021E4164 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r6, _021E41BC ; =0x02210704 + mov r7, #0 + mov r4, r7 + mov r5, #4 +_021E417C: + ldr r1, [r6, #4] + cmp r1, #0 + beq _021E4194 + mov r0, r5 + mov r2, r4 + bl FUN_021DD904 +_021E4194: + add r7, r7, #1 + cmp r7, #0x9a + add r6, r6, #0xc + blt _021E417C + ldr r1, _021E41BC ; =0x02210704 + ldr r2, _021E41C0 ; =0x00000738 + mov r0, #0 + bl MIi_CpuClear32 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E41BC: .word 0x02210704 +_021E41C0: .word 0x00000738 + + arm_func_start FUN_021E41C4 +FUN_021E41C4: ; 0x021E41C4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _021E41FC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xe + beq _021E41FC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xf + bne _021E4240 +_021E41FC: + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E43D8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r4, r0 + mov r5, r1 + b _021E424C +_021E4240: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E424C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _021E4270 + cmp r0, #0xe + beq _021E42A4 + cmp r0, #0xf + beq _021E43AC + b _021E43CC +_021E4270: + ldr r0, _021E43DC ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E43CC + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0xe + bl FUN_021E4604 + cmp r0, #0 + bne _021E43CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E42A4: + ldr r0, _021E43DC ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E43CC + bl FUN_021E26E4 + ldrb r1, [r0, #0x1ac] + add r1, r1, #1 + strb r1, [r0, #0x1ac] + bl FUN_021E26E4 + ldrb r0, [r0, #0x1ac] + cmp r0, #5 + bls _021E4330 + bl FUN_021E26E4 + ldr r0, [r0, #0x1d8] + bl FUN_021E4A00 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E4324 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ac] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e8] + str r1, [r4, #0x1ec] + b _021E43CC +_021E4324: + mov r0, #2 + bl FUN_021E4CF8 + b _021E43CC +_021E4330: + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E43CC + mov r5, #0xd + mov r6, r4 +_021E434C: + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldr r1, [r7, #0x1d8] + mov r0, r6,lsl r0 + ands r0, r1, r0 + bne _021E4394 + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r5 + bl FUN_021E4604 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021E4394: + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E434C + b _021E43CC +_021E43AC: + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb2] + cmp r5, r0, asr #31 + cmpeq r4, r0 + bls _021E43CC + mov r0, #2 + bl FUN_021E4CF8 +_021E43CC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E43D8: .word 0x000082EA +_021E43DC: .word 0x00001770 + + arm_func_start FUN_021E43E0 +FUN_021E43E0: ; 0x021E43E0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_021DF88C + cmp r0, #6 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + cmp r5, #0xd + beq _021E441C + cmp r5, #0xe + beq _021E4458 + cmp r5, #0xf + beq _021E45E0 + b _021E45F8 +_021E441C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + beq _021E443C + mov r0, #8 + bl FUN_021E26D0 + mov r0, r4 + bl FUN_021E4B78 +_021E443C: + mov r0, r6 + mov r1, #0xe + bl FUN_021E4604 + cmp r0, #0 + bne _021E45F8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E4458: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xe + bne _021E45C4 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E4600 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r2, r0, lsr #1 + mov r0, r1, lsr #1 + cmp r0, #0 + orr r2, r2, r1, lsl #31 + cmpeq r2, #0x12c + bls _021E4524 + bl FUN_021E26E4 + ldr r1, [r0, #0x1e8] + ldr r0, [r0, #0x1ec] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E4600 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r3, r0, lsr #1 + mov r0, #0x12c + orr r3, r3, r1, lsl #31 + rsb r0, r0, #0 + mvn r2, #0 + adds r5, r3, r0 + adc r4, r2, r1, lsr #1 + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb2] + cmp r4, r0, asr #31 + cmpeq r5, r0 + bls _021E4524 + bl FUN_021E26E4 + add r0, r0, #0x100 + strh r5, [r0, #0xb2] +_021E4524: + mov r0, r6 + mov r1, #0 + bl FUN_021E3F28 + mov r4, r0 + cmp r4, #0xff + beq _021E4550 + bl FUN_021E26E4 + ldr r2, [r0, #0x1d8] + mov r1, #1 + orr r1, r2, r1, lsl r4 + str r1, [r0, #0x1d8] +_021E4550: + mov r0, #1 + bl FUN_021E3EC4 + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x1d8] + cmp r4, r0 + bne _021E45F8 + mov r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E45B8 + mov r4, #0xf +_021E4584: + bl FUN_021E26E4 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r4 + bl FUN_021E4604 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E4584 +_021E45B8: + mov r0, #0xf + bl FUN_021E26D0 + b _021E45F8 +_021E45C4: + mov r0, r6 + mov r1, #0xf + bl FUN_021E4604 + cmp r0, #0 + bne _021E45F8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E45E0: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #8 + bne _021E45F8 + mov r0, #2 + bl FUN_021E4CF8 +_021E45F8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E4600: .word 0x000082EA + + arm_func_start FUN_021E4604 +FUN_021E4604: ; 0x021E4604 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r1 + cmp r5, #0xd + mov r6, r0 + movne r4, #0 + bne _021E4630 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + mov r4, #1 + str r0, [sp, #8] +_021E4630: + add r0, sp, #8 + str r0, [sp] + mov r2, #0 + mov r0, r5 + mov r1, r6 + mov r3, r2 + str r4, [sp, #4] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e8] + str r1, [r4, #0x1ec] + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E4684 +FUN_021E4684: ; 0x021E4684 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #9 + beq _021E46BC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + beq _021E46BC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x11 + bne _021E4700 +_021E46BC: + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x1e0] + ldr r0, [r0, #0x1e4] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E4908 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + mov r4, r0 + mov r5, r1 + b _021E470C +_021E4700: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E470C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #9 + beq _021E4730 + cmp r0, #0x10 + beq _021E47A0 + cmp r0, #0x11 + beq _021E48DC + b _021E48FC +_021E4730: + ldr r0, _021E490C ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E48FC + bl FUN_021DF88C + cmp r0, #5 + bne _021E477C + bl FUN_021E26E4 + ldrb r0, [r0, #0x1ad] + cmp r0, #5 + blo _021E477C + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5908 + cmp r0, #0 + bne _021E48FC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E477C: + bl FUN_021E26E4 + ldrb r1, [r0, #0x1ad] + add r1, r1, #1 + strb r1, [r0, #0x1ad] + bl FUN_021E26E4 + ldrb r0, [r0, #0x2d0] + mov r1, #3 + bl FUN_021E4910 + b _021E48FC +_021E47A0: + ldr r0, _021E490C ; =0x00001770 + cmp r5, #0 + cmpeq r4, r0 + bls _021E48FC + bl FUN_021E26E4 + ldrb r1, [r0, #0x1ab] + add r1, r1, #1 + strb r1, [r0, #0x1ab] + bl FUN_021E26E4 + ldrb r0, [r0, #0x1ab] + cmp r0, #5 + bls _021E4870 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E47F0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E4800 +_021E47F0: + bl FUN_021E4B40 + mov r0, #1 + bl FUN_021E4CF8 + b _021E48FC +_021E4800: + bl FUN_021E26E4 + ldr r0, [r0, #0x1d4] + bl FUN_021E4A00 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E4850 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ab] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e0] + str r1, [r4, #0x1e4] + b _021E48FC +_021E4850: + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + bl FUN_021E59D4 + cmp r0, #0 + bne _021E48FC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E4870: + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E48FC + mov r5, #2 + mov r6, r4 +_021E488C: + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + ldr r1, [r7, #0x1d4] + mov r0, r6,lsl r0 + ands r0, r1, r0 + bne _021E48C4 + bl FUN_021E26E4 + add r0, r0, r4 + ldrb r0, [r0, #0x2d0] + mov r1, r5 + bl FUN_021E4910 +_021E48C4: + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E488C + b _021E48FC +_021E48DC: + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + cmp r5, r0, asr #31 + cmpeq r4, r0 + bls _021E48FC + mov r0, #4 + bl FUN_021E51C0 +_021E48FC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4908: .word 0x000082EA +_021E490C: .word 0x00001770 + + arm_func_start FUN_021E4910 +FUN_021E4910: ; 0x021E4910 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r1 + mov r5, r0 + cmp r4, #2 + beq _021E4934 + cmp r4, #3 + beq _021E49AC + b _021E49D0 +_021E4934: + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r6, r0 + ldrb r0, [r0, #0x2d0] + mov r6, #1 + cmp r5, r0 + moveq r0, #1 + streqb r0, [sp] + movne r0, #0 + strneb r0, [sp] + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blo _021E49D0 +_021E4974: + bl FUN_021E26E4 + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + cmp r5, r0 + streqb r6, [sp, #1] + streqb r5, [sp, #2] + beq _021E49D0 + add r0, r6, #1 + and r6, r0, #0xff + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r6, r0 + bls _021E4974 + b _021E49D0 +_021E49AC: + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + strb r0, [sp] + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + mov r0, r0, asr #8 + strb r0, [sp, #1] +_021E49D0: + add r2, sp, #0 + mov r0, r4 + mov r1, r5 + mov r3, #4 + bl FUN_021EAF20 + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1e0] + str r1, [r4, #0x1e4] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E4A00 +FUN_021E4A00: ; 0x021E4A00 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x108 + mov sb, #0 + mov sl, r0 + mov r8, sb + mov r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E4A8C + add r4, sp, #8 + add r5, sp, #0x88 + mov r6, r7 +_021E4A34: + bl FUN_021E26E4 + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + mov r0, r6,lsl r0 + ands r0, sl, r0 + beq _021E4A64 + bl FUN_021E26E4 + add r0, r0, r7, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r5, r8, lsl #2] + add r8, r8, #1 + b _021E4A78 +_021E4A64: + bl FUN_021E26E4 + add r0, r0, r7, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r4, sb, lsl #2] + add sb, sb, #1 +_021E4A78: + add r7, r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E4A34 +_021E4A8C: + cmp r8, #0 + mov sl, #0 + ble _021E4AE4 + add r7, sp, #8 + add r5, sp, #0x88 + mov r4, sl + mov r6, #0x10 +_021E4AA8: + str r7, [sp] + str sb, [sp, #4] + ldr r1, [r5, sl, lsl #2] + mov r0, r6 + mov r2, r4 + mov r3, r4 + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x108 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add sl, sl, #1 + cmp sl, r8 + blt _021E4AA8 +_021E4AE4: + bl FUN_021E26E4 + mov r1, #2 + strb r1, [r0, #0x1a8] + cmp sb, #0 + mov r6, #0 + ble _021E4B28 + add r5, sp, #8 + mov r4, r6 +_021E4B04: + ldr r0, [r5, r6, lsl #2] + mov r1, r4 + bl FUN_021E3F28 + cmp r0, #0xff + beq _021E4B1C + bl FUN_021DF9D4 +_021E4B1C: + add r6, r6, #1 + cmp r6, sb + blt _021E4B04 +_021E4B28: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, #1 + add sp, sp, #0x108 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + + arm_func_start FUN_021E4B40 +FUN_021E4B40: ; 0x021E4B40 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + mov r1, #2 + strb r1, [r0, #0x1a8] + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E4B78 +FUN_021E4B78: ; 0x021E4B78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021E26E4 + str r5, [r0, #0x20c] + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, r5 + add r1, r1, #1 + bl FUN_021DF648 + movs r4, r0 + beq _021E4BD4 + bl FUN_021E26E4 + mov r1, #2 + strb r1, [r0, #0x1a8] + ldr r0, [r4] + bl FUN_021FD488 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_021E4BD4: + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, r5 + add r1, r1, #1 + bl FUN_021E89EC + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021E4BF4 +FUN_021E4BF4: ; 0x021E4BF4 + stmdb sp!, {r4, lr} + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _021E4CA4 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E4C64 + mov r0, #3 + bl FUN_021E26D0 + mov r0, #0 + bl FUN_021E7E5C + mov r4, r0 + bl FUN_021E38E8 + cmp r0, #0 + beq _021E4CAC + mov r0, r4 + ldmia sp!, {r4, pc} +_021E4C64: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E4CAC + mov r0, #4 + bl FUN_021E26D0 + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + mov r1, #0 + bl FUN_021E6038 + mov r4, r0 + bl FUN_021E61EC + cmp r0, #0 + beq _021E4CAC + mov r0, r4 + ldmia sp!, {r4, pc} +_021E4CA4: + mov r0, #1 + bl FUN_021E4CF8 +_021E4CAC: + mov r0, #0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E4CB4 +FUN_021E4CB4: ; 0x021E4CB4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021E4B40 + mov r0, #1 + bl FUN_021E4CF8 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E4CF8 +FUN_021E4CF8: ; 0x021E4CF8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r4, r0 + bne _021E4D14 + bl FUN_021E4ED4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021E4D14: + bl FUN_021E8174 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E4D38 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E4D94 +_021E4D38: + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r6, #1 + movne r6, #0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + bl FUN_021E1F18 + mov r4, r0 + bl FUN_021E26E4 + str r4, [sp] + ldr r1, [r0, #0x468] + mov r0, #0 + str r1, [sp, #4] + ldr ip, [r5, #0x464] + mov r2, r6 + mov r1, #1 + mov r3, r0 + blx ip + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021E4D94: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E4DC8 + cmp r4, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + bl FUN_021E7E5C + bl FUN_021E38E8 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E4DC8: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r0 + mov r2, r0 + bl FUN_021E5D30 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E4E00 +FUN_021E4E00: ; 0x021E4E00 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r4, #0 + str r4, [sp, #8] + bl FUN_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E4EC8 + bl FUN_021E26E4 + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _021E4EC8 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r1, [r5, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + beq _021E4EC8 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + add r2, sp, #8 + mov r1, #1 + str r2, [sp] + str r1, [sp, #4] + ldrb r3, [r0, #0xd] + ldrb r2, [r6, #0xd] + ldr r1, [r7, #0x20] + add r3, r3, #1 + add r2, r2, #1 + add r3, r4, r3, lsl #1 + add r2, r5, r2, lsl #2 + ldrh r3, [r3, #0xa4] + ldr r2, [r2, #0x24] + mov r0, #0xc + bl FUN_021E7884 + mov r4, r0 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] +_021E4EC8: + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021E4ED4 +FUN_021E4ED4: ; 0x021E4ED4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _021E4F90 ; =0x0220D3F0 + mov r0, #1 + mov r2, #0 + bl FUN_021E1E30 + bl FUN_021E397C + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E8034 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + movne r6, #1 + bne _021E4F28 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r6, #1 + movne r6, #0 +_021E4F28: + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r7, #1 + movne r7, #0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + bl FUN_021E1F18 + mov r4, r0 + bl FUN_021E26E4 + str r4, [sp] + ldr r1, [r0, #0x468] + mov r2, r7 + str r1, [sp, #4] + ldr ip, [r5, #0x464] + mov r3, r6 + mov r0, #0 + mov r1, #1 + blx ip + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a9] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4F90: .word 0x0220D3F0 + + arm_func_start FUN_021E4F94 +FUN_021E4F94: ; 0x021E4F94 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #2 + bne _021E4FC4 + bl FUN_021E4ED4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E4FC4: + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a9] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E5038 + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a9] + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E5010 + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C + b _021E502C +_021E5010: + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5BF0 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_021E502C: + bl FUN_021E4ED4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E5038: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + beq _021E5098 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #5 + beq _021E5098 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E5098 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #7 + beq _021E5098 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _021E5098 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _021E50D8 +_021E5098: + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _021E50C4 + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5BF0 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_021E50C4: + bl FUN_021E4E00 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_021E50D8: + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E5100 + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + bl FUN_022006B4 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E5100: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E512C + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a9] + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C +_021E512C: + bl FUN_021E4ED4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E5138 +FUN_021E5138: ; 0x021E5138 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _021E5168 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021E5168: + cmp r5, #0 + mov r4, #0 + bls _021E51B8 +_021E5174: + ldr r0, [r6, r4, lsl #2] + bl FUN_021E4074 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _021E51AC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_021E51AC: + add r4, r4, #1 + cmp r4, r5 + blo _021E5174 +_021E51B8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E51C0 +FUN_021E51C0: ; 0x021E51C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + cmp r0, #4 + mov r5, #3 + mov r4, #0 + addls pc, pc, r0, lsl #2 + b _021E57E8 +_021E51DC: ; jump table + b _021E51F0 ; case 0 + b _021E5594 ; case 1 + b _021E55D8 ; case 2 + b _021E569C ; case 3 + b _021E56BC ; case 4 +_021E51F0: + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + ldrb r1, [r6, #0x1a4] + sub r0, r0, #1 + cmp r1, r0 + bge _021E52B0 + mov r0, #0xd + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [sp, #8] + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + str r0, [sp, #0xc] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r5, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0x10] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a4] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + ldr r0, [r0, #0x24] + str r0, [sp, #0x14] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a4] + mov r5, #5 + add r0, r0, #1 + add r0, r6, r0, lsl #1 + ldrh r0, [r0, #0xa4] + str r0, [sp, #0x18] + b _021E54FC +_021E52B0: + bl FUN_021E26E4 + mov r1, r4 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r1, r4 + str r1, [r0, #0x20] + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E52F0 + mov r0, r5 + bl FUN_021E26D0 + b _021E5314 +_021E52F0: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E530C + mov r0, #4 + bl FUN_021E26D0 + b _021E5314 +_021E530C: + mov r0, #0xa + bl FUN_021E26D0 +_021E5314: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a4] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E534C + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r1, [r6, #0xd] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _021E53FC +_021E534C: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E5384 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r7, #0x20c] + b _021E53A4 +_021E5384: + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r6, #0xf4] +_021E53A4: + mov r0, #0x10 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1d4] + mov r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E54EC + mov r6, #2 +_021E53D0: + bl FUN_021E26E4 + add r0, r0, r7 + ldrb r0, [r0, #0x2d0] + mov r1, r6 + bl FUN_021E4910 + add r7, r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r7, r0 + ble _021E53D0 + b _021E54EC +_021E53FC: + mov r0, #0 + str r0, [sp, #8] + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + str r0, [sp, #0xc] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r6, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0x10] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E5460 + bl FUN_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r6, r0 + bl OS_GetTick + str r0, [r6, #0xec] + str r1, [r6, #0xf0] + b _021E54EC +_021E5460: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E54EC + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl FUN_021E5D30 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _021E54EC + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #2 + blo _021E54EC + bl FUN_021E26E4 + mov r8, r0 + mov r0, #0 + bl FUN_021E3EC4 + mov r6, r0 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + mov r1, #1 + ldr r2, [r8, #0x1dc] + add r0, r7, r0 + ldrb r0, [r0, #0x2d0] + mvn r0, r1, lsl r0 + and r0, r6, r0 + cmp r2, r0 + beq _021E54EC + bl FUN_021E4CB4 + b _021E57E8 +_021E54EC: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + movne r4, #1 +_021E54FC: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + beq _021E57E8 + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + mov sb, r0 + bl FUN_021E26E4 + mov r8, r0 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + add r1, sp, #8 + str r1, [sp] + str r5, [sp, #4] + mov ip, r0 + ldrb r3, [sb, #0xd] + ldrb r2, [r7, #0xd] + ldrb r1, [ip, #0xd] + add r5, sl, r3, lsl #2 + add r2, r8, r2, lsl #2 + add r3, r6, r1, lsl #1 + ldrh r3, [r3, #0xa4] + ldr r1, [r5, #0xf4] + ldr r2, [r2, #0x24] + mov r0, #8 + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x3cd] + b _021E57E8 +_021E5594: + mov r0, #1 + bl FUN_021E26D0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E55D0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r5, #0x20c] +_021E55D0: + mov r4, #1 + b _021E57E8 +_021E55D8: + mov r0, #1 + bl FUN_021E26D0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E5600 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5620 +_021E5600: + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r5, #0x20] +_021E5620: + bl FUN_021E3E9C + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + bls _021E57E8 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r8, r0 + bl FUN_021E26E4 + add r3, r8, #0xf4 + ldrb r2, [r0, #0xd] + mov r1, #1 + mov r0, #9 + sub r2, r2, #1 + add r2, r3, r2, lsl #2 + str r2, [sp] + str r1, [sp, #4] + ldr r1, [r7, #0xf4] + ldr r2, [r6, #0x24] + ldrh r3, [r5, #0xa4] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E57E8 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E569C: + mov r0, #1 + bl FUN_021E26D0 + bl FUN_021E3E9C + bl FUN_021E26E4 + mov r1, r4 + str r1, [r0, #0x20c] + mov r4, #1 + b _021E57E8 +_021E56BC: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + beq _021E56DC + ldr r1, _021E581C ; =0x0220D3F0 + mov r0, #2 + mov r2, r4 + bl FUN_021E1E30 +_021E56DC: + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r7, #1 + movne r7, #0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + bl FUN_021E1F18 + mov r5, r0 + bl FUN_021E26E4 + str r5, [sp] + ldr r1, [r0, #0x468] + mov r0, #0 + str r1, [sp, #4] + ldr r5, [r6, #0x464] + mov r2, r7 + mov r1, r0 + mov r3, r0 + blx r5 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E5750 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5758 +_021E5750: + bl FUN_021E8034 + b _021E57DC +_021E5758: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _021E5780 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203E80 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0xe4] +_021E5780: + bl FUN_02200D6C + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E57C8 + bl FUN_021E85D4 + bl FUN_021E397C + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _021E5820 ; =0x022106DC + ldrb r1, [r0] + cmp r1, #1 + moveq r1, #1 + streqb r1, [r0, #1] + mov r0, #0xa + bl FUN_021E26D0 + b _021E57D0 +_021E57C8: + mov r0, #1 + bl FUN_021E26D0 +_021E57D0: + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] +_021E57DC: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a9] +_021E57E8: + cmp r4, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203C04 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E581C: .word 0x0220D3F0 +_021E5820: .word 0x022106DC + + arm_func_start FUN_021E5824 +FUN_021E5824: ; 0x021E5824 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E58BC + mov r5, #0xa +_021E5844: + bl FUN_021E26E4 + mov sb, r0 + bl FUN_021E26E4 + mov r8, r0 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + add r1, r6, #0x348 + str r1, [sp] + ldr ip, [r0, #0x348] + add r3, r7, r4, lsl #1 + add ip, ip, #1 + str ip, [sp, #4] + add r1, sb, r4, lsl #2 + add r2, r8, r4, lsl #2 + ldrh r3, [r3, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r5 + bl FUN_021E7884 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E5844 +_021E58BC: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x1a8] + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + mov r0, r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021E5908 +FUN_021E5908: ; 0x021E5908 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E5950 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E5938 + bl FUN_021E4B40 +_021E5938: + ldr r1, _021E59D0 ; =0xFFFEC5D2 + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5950: + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r5, #0x14] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E5998 + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + bl FUN_022006B4 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E5998: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E59B0 + bl FUN_021E4CB4 + b _021E59C4 +_021E59B0: + mov r0, #4 + bl FUN_021E26D0 + mov r0, #0 + bl FUN_021E5C44 + mov r4, r0 +_021E59C4: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E59D0: .word 0xFFFEC5D2 + + arm_func_start FUN_021E59D4 +FUN_021E59D4: ; 0x021E59D4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E5A0C + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r1, [r4, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + moveq r4, #0 + beq _021E5A10 +_021E5A0C: + mov r4, #1 +_021E5A10: + cmp r4, #0 + beq _021E5A3C + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 +_021E5A3C: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0x1f + bhs _021E5A6C + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + mov r1, #0 + add r0, r0, #1 + add r0, r6, r0, lsl #2 + str r1, [r0, #0xf4] +_021E5A6C: + bl FUN_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E5AA0 + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + bl FUN_022006B4 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E5AA0: + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r6, #0x14] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + cmp r4, #0 + bne _021E5AE0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E5BE8 + bl FUN_021E4CB4 + b _021E5BE8 +_021E5AE0: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E5B1C + mov r0, #3 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #2 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + b _021E5BE8 +_021E5B1C: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5B48 + mov r0, #4 + bl FUN_021E26D0 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl FUN_021E5D30 + b _021E5BE8 +_021E5B48: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E5BE8 + mov r0, #0xe + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1d8] + bl FUN_021E26E4 + add r1, r0, #0x100 + mov r2, #0 + mov r0, r5 + strh r2, [r1, #0xb2] + bl FUN_021E4B78 + mov r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E5BD0 + mov r4, #0xd +_021E5B9C: + bl FUN_021E26E4 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + mov r1, r4 + bl FUN_021E4604 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E5B9C +_021E5BD0: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + bne _021E5BE8 + mov r0, #2 + bl FUN_021E4CF8 +_021E5BE8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E5BF0 +FUN_021E5BF0: ; 0x021E5BF0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r2, [r4, #0x24] + mov r1, r5 + mov r0, #5 + bl FUN_021E7884 + mov r4, r0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021E5C44 +FUN_021E5C44: ; 0x021E5C44 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E5CC0 + mov r0, #3 + bl FUN_021E26D0 + mov r0, #0 + bl FUN_021E7E5C + bl FUN_021E38E8 + cmp r0, #0 + beq _021E5D20 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5CC0: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E5CF8 + mov r0, #0 + mov r1, r0 + mov r2, r5 + bl FUN_021E5D30 + bl FUN_021E61EC + cmp r0, #0 + beq _021E5D20 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5CF8: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E5D20 + ldr r1, _021E5D2C ; =0xFFFEC5E6 + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021E5D20: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E5D2C: .word 0xFFFEC5E6 + + arm_func_start FUN_021E5D30 +FUN_021E5D30: ; 0x021E5D30 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x23c + movs r4, r1 + str r0, [sp] + str r2, [sp, #4] + beq _021E5D58 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a5] + str r0, [sp, #0xc] + b _021E5D90 +_021E5D58: + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x344] + ldrb r1, [r5, #0x1a5] + sub r0, r0, #1 + cmp r1, r0 + movge r0, #0 + strge r0, [sp, #0xc] + bge _021E5D90 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a5] + add r0, r0, #1 + str r0, [sp, #0xc] +_021E5D90: + cmp r4, #0 + moveq r0, #1 + mov sb, #0 + streq r0, [sp, #8] + strne sb, [sp, #8] + mov r7, #1 + mov r8, #0 + mov r5, #0x2f + mov r4, #0xa +_021E5DB4: + ldr r0, [sp, #8] + cmp r0, #0 + bne _021E5DC8 + cmp sb, #0 + beq _021E5DFC +_021E5DC8: + bl FUN_021E26E4 + ldrb r1, [r0, #0x1a5] + add r1, r1, #1 + strb r1, [r0, #0x1a5] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r1, [r6, #0x1a5] + ldr r0, [r0, #0x344] + cmp r1, r0 + blt _021E5DFC + bl FUN_021E26E4 + strb r8, [r0, #0x1a5] +_021E5DFC: + cmp sb, #0 + beq _021E5E50 + bl FUN_021E26E4 + ldrb r1, [r0, #0x1a5] + ldr r0, [sp, #0xc] + cmp r0, r1 + bne _021E5E50 + bl FUN_021E26E4 + ldr r1, _021E6028 ; =0x00000BB8 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + add sp, sp, #0x23c + mov r0, r1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021E5E50: + mov sb, r7 + bl FUN_021E0F00 + mov fp, r0 + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r1, r0 + ldrb r2, [r1, #0x1a5] + ldr r3, [sl, #0x2fc] + mov r1, #0xc + add r2, r6, r2 + ldrb r2, [r2, #0x304] + mov r0, fp + mla r1, r2, r1, r3 + bl FUN_02096DA0 + movs sl, r0 + beq _021E5DB4 + mvn r0, #0 + cmp sl, r0 + beq _021E5DB4 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov fp, r0 + bl FUN_021E26E4 + ldr r2, [r6, #0x2fc] + ldrb r1, [r0, #0x1a5] + mov r0, #0xc + add r1, fp, r1 + ldrb r1, [r1, #0x304] + mla r0, r1, r0, r2 + bl FUN_02097000 + cmp r0, #0 + beq _021E5DB4 + mov r6, r7 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E5F1C +_021E5EF4: + bl FUN_021E26E4 + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0xf4] + cmp sl, r0 + beq _021E5F1C + add r6, r6, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r6, r0 + ble _021E5EF4 +_021E5F1C: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r6, r0 + ble _021E5DB4 + bl FUN_021E26E4 + ldr r0, [r0] + mov r1, sl + add r2, sp, #0x18 + bl FUN_021F0664 + mov r6, r0 + bl FUN_021E26E4 + ldr r0, [r0] + ldr r1, [sp, #0x18] + add r2, sp, #0x28 + bl FUN_021F06E4 + orrs r0, r6, r0 + bne _021E5DB4 + ldr r0, [sp, #0x2c] + cmp r0, #4 + bne _021E5DB4 + ldr r0, _021E602C ; =0x0220D3F4 + add r1, sp, #0x1c + add r2, sp, #0x30 + mov r3, r5 + bl FUN_021DE9F4 + mov r6, r0 + ldr r0, _021E6030 ; =0x0220D3F8 + add r1, sp, #0x12 + add r2, sp, #0x30 + mov r3, r5 + bl FUN_021DE9F4 + mov fp, r0 + ldr r0, _021E6034 ; =0x0220D3FC + add r1, sp, #0x10 + add r2, sp, #0x30 + mov r3, r5 + bl FUN_021DE9F4 + cmp r6, #0 + ble _021E5DB4 + cmp fp, #0 + ble _021E5DB4 + cmp r0, #0 + ble _021E5DB4 + add r0, sp, #0x1c + mov r1, r8 + mov r2, r4 + bl strtoul + cmp r0, #3 + bne _021E5DB4 + add r0, sp, #0x12 + mov r1, r8 + mov r2, r4 + bl strtoul + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x16] + cmp r6, r0 + bne _021E5DB4 + ldr r0, [sp, #4] + cmp sl, r0 + moveq r0, #1 + streq r0, [sp] + ldr r1, [sp] + mov r0, sl + bl FUN_021E6038 + add sp, sp, #0x23c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E6028: .word 0x00000BB8 +_021E602C: .word 0x0220D3F4 +_021E6030: .word 0x0220D3F8 +_021E6034: .word 0x0220D3FC + + arm_func_start FUN_021E6038 +FUN_021E6038: ; 0x021E6038 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r5, r0 + cmp r1, #0 + bne _021E606C + bl FUN_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _021E60A0 + bl FUN_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + bne _021E60A0 +_021E606C: + bl FUN_021E26E4 + mov r1, #1 + str r1, [r0, #0x1bc] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1c0] + str r1, [r4, #0x1c4] + bl FUN_021E26E4 + str r5, [r0, #0xf4] + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E60A0: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6124 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, #0 + bl FUN_02203BF4 + mov r6, r0 + bl FUN_021E26E4 + mov r4, r0 + ldr r1, _021E61E4 ; =0x0220D3AC + mov r0, r6 + mov r2, #0 + bl FUN_0220394C + str r0, [r4, #0xf4] + bl FUN_021E26E4 + mov r4, r0 + mov r0, r6 + bl FUN_02203908 + str r0, [r4, #0x24] + bl FUN_021E26E4 + mov r4, r0 + mov r0, r6 + bl FUN_022038E4 + strh r0, [r4, #0xa4] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + mov r4, #1 + str r0, [r6, #0x204] + b _021E6160 +_021E6124: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E613C + bl FUN_021E26E4 + str r5, [r0, #0xf4] +_021E613C: + bl FUN_021E26E4 + str r5, [r0, #0x204] + bl FUN_021E26E4 + ldr r0, [r0, #0x1c] + str r0, [sp, #0xc] + bl FUN_021E26E4 + ldrh r0, [r0, #0x1a] + mov r4, #3 + str r0, [sp, #0x10] +_021E6160: + bl FUN_021E26E4 + ldr r1, _021E61E8 ; =0x00001770 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + mov r6, r0 + bl OS_GetTick + str r0, [r6, #0x1cc] + str r1, [r6, #0x1d0] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + movne r7, #0xb + moveq r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + str r0, [sp, #8] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + add r2, sp, #8 + str r2, [sp] + mov r3, r0 + str r4, [sp, #4] + ldrh r3, [r3, #0xa4] + ldr r2, [r6, #0x24] + mov r1, r5 + mov r0, r7 + bl FUN_021E7884 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E61E4: .word 0x0220D3AC +_021E61E8: .word 0x00001770 + + arm_func_start FUN_021E61EC +FUN_021E61EC: ; 0x021E61EC + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6210 + mov r0, r4 + bl FUN_021E38E8 + ldmia sp!, {r4, pc} +_021E6210: + mov r0, r4 + bl FUN_021E397C + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E621C +FUN_021E621C: ; 0x021E621C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r1, [r5] + mov r6, r0 + add r4, r1, #2 + cmp r4, #2 + bls _021E6250 + bl FUN_021E26E4 + sub r2, r4, #2 + add r1, r0, #0x350 + add r0, r5, #4 + mov r2, r2, lsl #2 + bl MIi_CpuCopy32 +_021E6250: + bl FUN_021E26E4 + sub r1, r4, #1 + str r1, [r0, #0x348] + bl FUN_021E26E4 + str r6, [r0, #0x34c] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E6268 +FUN_021E6268: ; 0x021E6268 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E62A4 + bl FUN_021E26E4 + ldr r0, [r0, #0x20] + cmp r6, r0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E62A4: + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + str r6, [r0, #0x20] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #2 + str r6, [r0, #0xf4] + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #2 + str r5, [r0, #0x24] + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r7, r0, lsl #1 + strh r4, [r0, #0xa4] + bl FUN_021E26E4 + str r5, [r0, #0x1b8] + bl FUN_021E26E4 + add r0, r0, #0x100 + strh r4, [r0, #0xb4] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E40F4 + ldrb r1, [r4, #0x14] + add r1, r1, #1 + add r1, r5, r1 + strb r0, [r1, #0x2d0] + str r6, [sp, #8] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + mov r7, #1 + add r0, r0, #1 + add r0, r4, r0 + ldrb r0, [r0, #0x2d0] + str r0, [sp, #0xc] + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r0, #1 + blt _021E6414 + add r6, sp, #8 + mov r5, #2 + mov r4, #7 +_021E63B8: + bl FUN_021E26E4 + mov sb, r0 + bl FUN_021E26E4 + mov r8, r0 + bl FUN_021E26E4 + str r6, [sp] + str r5, [sp, #4] + add r0, r0, r7, lsl #1 + add r1, sb, r7, lsl #2 + add r2, r8, r7, lsl #2 + ldrh r3, [r0, #0xa4] + ldr r1, [r1, #0xf4] + ldr r2, [r2, #0x24] + mov r0, r4 + bl FUN_021E7884 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r7, r7, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r7, r0 + ble _021E63B8 +_021E6414: + mov r0, #1 + bl FUN_021E3E28 + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021E6428 +FUN_021E6428: ; 0x021E6428 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r8, r3 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E6490 + cmp r0, #1 + beq _021E6460 + cmp r0, #2 + beq _021E6670 + b _021E6724 +_021E6460: + bl FUN_021E26E4 + ldr r0, [r0] + mov r1, r7 + bl FUN_021F05F4 + cmp r0, #0 + moveq r4, #0xff + beq _021E6724 + mov r0, r7 + bl FUN_021E4074 + cmp r0, #0 + moveq r4, #3 + beq _021E6724 +_021E6490: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r8, r0 + bne _021E64F8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + bne _021E64F8 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r1, [r4, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + beq _021E64F8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E655C + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r1, [r4, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + bne _021E655C +_021E64F8: + mov r4, #3 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6724 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + ldr r0, [r0, #0xb4] + cmp r0, #0 + bne _021E6724 + bl FUN_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E6724 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r1, [r5, #0x20] + ldr r0, [r0, #0x200] + cmp r1, r0 + bne _021E6724 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + b _021E6724 +_021E655C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #3 + beq _021E657C + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E65AC +_021E657C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _021E659C + bl FUN_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _021E65AC +_021E659C: + cmp r6, #0 + bne _021E65B4 + cmp r5, #0 + bne _021E65B4 +_021E65AC: + mov r4, #4 + b _021E6724 +_021E65B4: + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r0, #0 + beq _021E6668 + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r7, r0 + bne _021E6610 + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021E6600 + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + cmp r0, r7 + bge _021E6608 + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r7, r0 + beq _021E6608 +_021E6600: + mov r4, #2 + b _021E6724 +_021E6608: + mov r4, #0xff + b _021E6724 +_021E6610: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021E663C + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + cmp r0, r7 + bge _021E6660 + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + bne _021E6660 +_021E663C: + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + bl FUN_021E5BF0 + bl FUN_021E61EC + cmp r0, #0 + movne r0, #0xff + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, #2 + b _021E6724 +_021E6660: + mov r4, #3 + b _021E6724 +_021E6668: + mov r4, #2 + b _021E6724 +_021E6670: + bl FUN_021E26E4 + ldr r0, [r0] + mov r1, r7 + bl FUN_021F05F4 + cmp r0, #0 + moveq r4, #0xff + beq _021E6724 + cmp r8, #3 + bne _021E66B0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r1, [r4, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _021E66B8 +_021E66B0: + mov r4, #3 + b _021E6724 +_021E66B8: + ldr r0, _021E672C ; =0x022106DC + ldrb r1, [r0] + cmp r1, #1 + bne _021E66D8 + ldrb r0, [r0, #1] + cmp r0, #1 + moveq r4, #0x13 + beq _021E6724 +_021E66D8: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xa + bne _021E6718 + bl FUN_021E26E4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _021E6708 + bl FUN_021E26E4 + ldrh r0, [r0, #0x1a] + cmp r0, #0 + beq _021E6718 +_021E6708: + cmp r6, #0 + bne _021E6720 + cmp r5, #0 + bne _021E6720 +_021E6718: + mov r4, #4 + b _021E6724 +_021E6720: + mov r4, #2 +_021E6724: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E672C: .word 0x022106DC + + arm_func_start FUN_021E6730 +FUN_021E6730: ; 0x021E6730 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x118 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov sl, r3 + ldr r6, [sp, #0x138] + ldr r5, [sp, #0x13c] + mov r4, #0 + bl FUN_021E26E4 + cmp r0, #0 + beq _021E6770 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0 + bne _021E677C +_021E6770: + add sp, sp, #0x118 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E677C: + bl FUN_021DF88C + cmp r0, #5 + bne _021E67AC + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E67AC + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E67AC + bl FUN_021E3E9C +_021E67AC: + cmp sb, #0x40 + bgt _021E684C + cmp sb, #0x40 + bge _021E7594 + cmp sb, #0x20 + addls pc, pc, sb, lsl #2 + b _021E7608 +_021E67C8: ; jump table + b _021E7608 ; case 0 + b _021E6854 ; case 1 + b _021E6A20 ; case 2 + b _021E6BF8 ; case 3 + b _021E6C58 ; case 4 + b _021E6D78 ; case 5 + b _021E6DF4 ; case 6 + b _021E6F04 ; case 7 + b _021E701C ; case 8 + b _021E719C ; case 9 + b _021E71F0 ; case 10 + b _021E6854 ; case 11 + b _021E7298 ; case 12 + b _021E730C ; case 13 + b _021E730C ; case 14 + b _021E730C ; case 15 + b _021E7330 ; case 16 + b _021E7380 ; case 17 + b _021E7424 ; case 18 + b _021E7480 ; case 19 + b _021E7608 ; case 20 + b _021E7608 ; case 21 + b _021E7608 ; case 22 + b _021E7608 ; case 23 + b _021E7608 ; case 24 + b _021E7608 ; case 25 + b _021E7608 ; case 26 + b _021E7608 ; case 27 + b _021E7608 ; case 28 + b _021E7608 ; case 29 + b _021E7608 ; case 30 + b _021E7608 ; case 31 + b _021E7498 ; case 32 +_021E684C: + cmp sb, #0x41 + b _021E7608 +_021E6854: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + ldrne r0, [r6, #8] + ldrne r7, [r6, #4] + movne r0, r0, lsl #0x10 + movne sl, r0, lsr #0x10 + cmp sb, #0xb + moveq r0, #1 + movne r0, #0 + str r0, [sp] + ldr r3, [r6] + mov r0, r8 + mov r1, r7 + mov r2, sl + bl FUN_021E6428 + mov r5, r0 + cmp r5, #2 + bne _021E6994 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1dc] + mov r0, r8 + mov r1, r7 + mov r2, sl + bl FUN_021E6268 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E6918 + bl FUN_021E26E4 + ldr r0, [r0, #0x46c] + cmp r0, #0 + beq _021E6918 + bl FUN_021E26E4 + mov r6, r0 + mov r0, r8 + bl FUN_021E1F18 + mov r4, r0 + bl FUN_021E26E4 + ldr r1, [r0, #0x470] + ldr r2, [r6, #0x46c] + mov r0, r4 + blx r2 +_021E6918: + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + mov r4, #1 + str r0, [sp, #0x14] + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r0, #1 + blt _021E6960 + add r6, sp, #0x14 +_021E693C: + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r6, r4, lsl #2] + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + cmp r4, r0 + ble _021E693C +_021E6960: + bl FUN_021E26E4 + ldr r1, [r0, #0x1c] + add r0, sp, #0x14 + str r1, [r0, r4, lsl #2] + bl FUN_021E26E4 + ldrh r2, [r0, #0x1a] + add r3, r4, #1 + add r1, sp, #0x14 + mov r0, #0xb + str r2, [r1, r3, lsl #2] + add r4, r4, #2 + bl FUN_021E26D0 + b _021E69E0 +_021E6994: + cmp r5, #3 + bne _021E69E0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _021E69E0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r1, [r6, #0x14] + ldrb r0, [r0, #0x16] + cmp r1, r0 + bne _021E69E0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r0, #0x10 + streq r0, [sp, #0x14] + moveq r4, #1 +_021E69E0: + cmp r5, #0xff + beq _021E7608 + add r1, sp, #0x14 + str r1, [sp] + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, sl + str r4, [sp, #4] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6A20: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E7608 + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _021E7608 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl FUN_021E26E4 + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #4] + str r1, [r0, #0x24] + bl FUN_021E26E4 + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #8] + strh r1, [r0, #0xa4] + bl FUN_021E26E4 + ldr r1, [r6] + add r1, r6, r1, lsl #2 + ldr r1, [r1, #4] + str r1, [r0, #0x1b8] + bl FUN_021E26E4 + ldr r1, [r6] + add r0, r0, #0x100 + add r1, r6, r1, lsl #2 + ldr r1, [r1, #8] + strh r1, [r0, #0xb4] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E6B4C + ldr r1, [r6] + add r0, r6, #4 + bl FUN_021E5138 + cmp r0, #0 + beq _021E6B08 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E6B4C + mov r0, r8 + mov r1, r6 + bl FUN_021E621C + b _021E6B4C +_021E6B08: + mov r0, r8 + bl FUN_021E5BF0 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, #0 + mov r1, r0 + mov r2, r8 + bl FUN_021E5D30 + bl FUN_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6B4C: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6BD0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E6B90 + mov r0, r8 + mov r1, r6 + bl FUN_021E621C + bl FUN_021E5824 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6B90: + mov r0, #6 + bl FUN_021E26D0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + mov r1, #0 + bl FUN_02203BF4 + mov r2, r0 + mov r0, #0 + mov r1, r0 + bl FUN_021E7B04 + bl FUN_021E37A4 + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6BD0: + mov r0, #5 + bl FUN_021E26D0 + mov r0, r8 + bl FUN_021E7E5C + bl FUN_021E38E8 + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6BF8: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E7608 + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _021E7608 + cmp r5, #0 + ble _021E6C44 + ldr r0, [r6] + cmp r0, #0x10 + bne _021E6C44 + mov r0, #0xd + mov r1, #0 + bl FUN_021E8E08 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6C44: + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + bl FUN_021E5C44 + add sp, sp, #0x118 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6C58: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #4 + bne _021E7608 + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + cmp r8, r0 + bne _021E7608 + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1cc] + str r1, [r4, #0x1d0] + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _021E6CAC + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a7] + cmp r0, #0x10 + blo _021E6CBC +_021E6CAC: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E6D00 +_021E6CBC: + bl FUN_021E26E4 + mov r1, #1 + str r1, [r0, #0x1bc] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1c0] + str r1, [r4, #0x1c4] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E7608 + bl FUN_021E26E4 + ldrb r1, [r0, #0x1a7] + add r1, r1, #1 + strb r1, [r0, #0x1a7] + b _021E7608 +_021E6D00: + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E6D54 + mov r0, #3 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #1 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xec] + str r1, [r4, #0xf0] + b _021E7608 +_021E6D54: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E7608 + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl FUN_021E5D30 + b _021E7608 +_021E6D78: + bl FUN_021E26E4 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _021E7608 + bl FUN_021E26E4 + ldr r0, [r0, #0x20] + cmp r8, r0 + bne _021E7608 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E6DD8 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + bne _021E6DD8 + bl FUN_021E26E4 + ldr r0, [r0, #0xf8] + cmp r8, r0 + bne _021E6DD8 + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C +_021E6DD8: + mov r0, r8 + bl FUN_021E59D4 + cmp r0, #0 + bne _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6DF4: + ldr r0, [r6, #4] + ldr r4, [r6] + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E6E20 + mov r0, #6 + bl FUN_021E26D0 + b _021E6E50 +_021E6E20: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + beq _021E6E40 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + bne _021E7608 +_021E6E40: + bl FUN_021E26E4 + ldr r0, [r0, #0x20] + cmp r8, r0 + bne _021E7608 +_021E6E50: + bl FUN_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + beq _021E6E9C + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r6, r0, lsl #2 + str r8, [r0, #0xf4] +_021E6E9C: + mov r1, r5, asr #8 + mov r0, r5, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + str r4, [sp, #0x10] + strh r0, [sp, #0xe] + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x194] + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD43C + mov r4, r0 + bl FUN_021E26E4 + add r3, r0, #0x194 + mov r1, r4 + mov r0, #0 + add r2, sp, #0xc + bl FUN_021E2784 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + b _021E7608 +_021E6F04: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E7608 + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E7608 + ldr r0, [r6] + str r0, [sp, #8] + ldr r0, [r6, #4] + and r4, r0, #0xff + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E6F98 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _021E6F98 + ldr r0, [sp, #8] + bl FUN_021E4074 + str r0, [sp, #0x14] + add r0, sp, #0x14 + str r0, [sp] + mov r5, #1 + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x20 + str r5, [sp, #4] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E6F98: + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + ldr r1, [sp, #8] + add r0, r0, #1 + add r0, r5, r0, lsl #2 + str r1, [r0, #0xf4] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r0, #1 + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + bl FUN_021E26E4 + ldr r0, [r0, #0x46c] + cmp r0, #0 + beq _021E7608 + bl FUN_021E26E4 + mov r5, r0 + ldr r0, [sp, #8] + bl FUN_021E1F18 + mov r4, r0 + bl FUN_021E26E4 + ldr r1, [r0, #0x470] + ldr r2, [r5, #0x46c] + mov r0, r4 + blx r2 + b _021E7608 +_021E701C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E7608 + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E7608 + ldr r0, [r6] + str r0, [sp, #8] + cmp r0, #0 + bne _021E7084 + ldr r5, [r6, #4] + ldr r4, [r6, #8] + bl FUN_021E26E4 + add r0, r5, r0 + strb r4, [r0, #0x2d0] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r2, [r0, #0x200] + add r1, r4, r5, lsl #2 + mov r0, #3 + str r2, [r1, #0xf4] + bl FUN_021E51C0 + b _021E7608 +_021E7084: + ldr r0, [r6, #8] + ldr r4, [r6, #4] + and r5, r0, #0xff + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r1, [sp, #8] + ldr r0, [r0, #0xf4] + cmp r1, r0 + bne _021E7104 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + sub r0, r0, #1 + cmp r4, r0 + bne _021E7104 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + add r1, sp, #8 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r2, [r4, #0x24] + mov r1, r8 + mov r0, #9 + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7104: + bl FUN_021E26E4 + ldr r1, [sp, #8] + add r0, r0, r4, lsl #2 + str r1, [r0, #0xf4] + bl FUN_021E26E4 + add r0, r4, r0 + strb r5, [r0, #0x2d0] + bl FUN_021E26E4 + ldr r1, [r6, #0xc] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x24] + bl FUN_021E26E4 + ldr r1, [r6, #0x10] + add r0, r0, r4, lsl #1 + strh r1, [r0, #0xa4] + bl FUN_021E26E4 + ldr r1, [r6, #0xc] + str r1, [r0, #0x1b8] + bl FUN_021E26E4 + add r1, r0, #0x100 + ldr r2, [r6, #0x10] + mov r0, #5 + strh r2, [r1, #0xb4] + bl FUN_021E26D0 + ldr r0, [sp, #8] + bl FUN_021E7E5C + bl FUN_021E38E8 + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + b _021E7608 +_021E719C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xd + bne _021E7608 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a4] + ldr r1, [r6] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r1, r0 + bne _021E7608 + bl FUN_021E26E4 + ldrb r1, [r0, #0x1a4] + add r1, r1, #1 + strb r1, [r0, #0x1a4] + mov r0, #0 + bl FUN_021E51C0 + b _021E7608 +_021E71F0: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + beq _021E7210 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x12 + bne _021E7608 +_021E7210: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E7234 + ldr r1, [r6] + add r0, r6, #4 + bl FUN_021E5138 + cmp r0, #0 + beq _021E7250 +_021E7234: + bl FUN_021E26E4 + ldr r1, [r6, #4] + str r1, [r0, #0x208] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + b _021E725C +_021E7250: + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] +_021E725C: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E7280 + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C + b _021E7608 +_021E7280: + bl FUN_021E4BF4 + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7298: + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E7608 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E72C8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E72E4 +_021E72C8: + mov r0, r8 + bl FUN_021E5908 + cmp r0, #0 + bne _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E72E4: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E7608 + bl FUN_021E26E4 + str r8, [r0, #0x20c] + bl FUN_021E4B40 + mov r0, #0 + bl FUN_021E4CF8 + b _021E7608 +_021E730C: + ldr r2, [r6] + mov r0, r8 + mov r1, sb + bl FUN_021E43E0 + cmp r0, #0 + bne _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7330: + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + cmp r8, r0 + addne sp, sp, #0x118 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r5, #0 + mov r7, #0 + ble _021E7608 + mov r4, r7 +_021E7358: + ldr r0, [r6, r7, lsl #2] + mov r1, r4 + bl FUN_021E3F28 + cmp r0, #0xff + beq _021E7370 + bl FUN_021DF9D4 +_021E7370: + add r7, r7, #1 + cmp r7, r5 + blt _021E7358 + b _021E7608 +_021E7380: + ldr r0, _021E7614 ; =0x022106D4 + ldr r4, [r0] + cmp r4, #0 + beq _021E73E0 + ldrb r0, [r4] + cmp r0, #0 + beq _021E73E0 + bl OS_GetTick + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021E7618 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, [r4, #4] + cmp r1, #0 + cmpeq r0, r2 + movhs r0, #1 + strhs r0, [sp, #0x14] + bhs _021E73E8 +_021E73E0: + mov r0, #0 + str r0, [sp, #0x14] +_021E73E8: + add r0, sp, #0x14 + str r0, [sp] + mov r4, #1 + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x12 + str r4, [sp, #4] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7424: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x13 + bne _021E7608 + mov r0, r8 + mov r1, #0 + bl FUN_021E3F28 + cmp r0, #0xff + beq _021E7608 + ldr r1, _021E7614 ; =0x022106D4 + mov r4, #1 + ldr r3, [r1] + mov r5, r4,lsl r0 + ldr r2, [r3, #8] + orr r0, r2, r4, lsl r0 + str r0, [r3, #8] + ldr r0, [r6] + cmp r0, #0 + ldrne r1, [r1] + ldrne r0, [r1, #0xc] + orrne r0, r0, r5 + strne r0, [r1, #0xc] + b _021E7608 +_021E7480: + mov r0, #0xc + mov r1, #0 + bl FUN_021E8E08 + add sp, sp, #0x118 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7498: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E7608 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + bne _021E7608 + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E7608 +_021E74CC: + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E757C + ldr r0, [r6] + cmp r0, #0 + bne _021E7554 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _021E750C + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _021E7524 +_021E750C: + bl FUN_021E4E00 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0x118 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E7524: + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E754C + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + bl FUN_022006B4 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E754C: + bl FUN_021E4CB4 + b _021E7608 +_021E7554: + bl FUN_021E26E4 + mov r4, r0 + mov r0, r8 + mov r1, #0 + bl FUN_021E3F28 + ldr r2, [r4, #0x1dc] + mov r1, #1 + orr r0, r2, r1, lsl r0 + str r0, [r4, #0x1dc] + b _021E7608 +_021E757C: + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E74CC + b _021E7608 +_021E7594: + mov r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E7608 +_021E75A8: + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r8, r0 + bne _021E75F4 + mov r4, #0 + str r4, [sp] + mov r1, r8 + mov r2, r7 + mov r3, sl + mov r0, #0x41 + str r4, [sp, #4] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E7608 + add sp, sp, #0x118 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021E75F4: + add r4, r4, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r4, r0 + ble _021E75A8 +_021E7608: + mov r0, #1 + add sp, sp, #0x118 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E7614: .word 0x022106D4 +_021E7618: .word 0x000082EA + + arm_func_start FUN_021E761C +FUN_021E761C: ; 0x021E761C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r1 + mov r4, r0 + mov r8, r2 + mov r0, sb + mov r1, #0 + bl strchr + mov r7, r0 + cmp r8, #0 + mov r6, #0 + ble _021E767C + mov r5, #0x2f +_021E7650: + mov r0, sb + mov r1, r5 + bl strchr + cmp r0, #0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r6, r6, #1 + cmp r6, r8 + add sb, r0, #1 + blt _021E7650 +_021E767C: + mov r0, sb + mov r1, #0x2f + bl strchr + cmp r0, #0 + moveq r0, r7 + cmp sb, r0 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + sub r5, r0, sb + mov r0, sb + mov r1, r4 + mov r2, r5 + bl MI_CpuCopy8 + mov r1, #0 + mov r0, r5 + strb r1, [r4, r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021E76C8 +FUN_021E76C8: ; 0x021E76C8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x208 + mov r7, r0 + mov r5, r2 + mov r4, r3 + mov r0, #3 + mov r6, r1 + str r0, [sp] + ldr ip, _021E7760 ; =0x0220D410 + ldr r2, _021E7764 ; =0x0220D400 + ldr r3, _021E7768 ; =0x0220D408 + add r0, sp, #8 + mov r1, #0x200 + str ip, [sp, #4] + bl OS_SNPrintf + add r1, sp, #8 + add r2, sp, #9 + strb r6, [r1, r0] + mov r1, #0 + strb r1, [r2, r0] + cmp r4, #0 + add r8, r2, r0 + beq _021E7748 + mov r0, r4 + bl strlen + mov r6, r0 + mov r0, r4 + mov r1, r8 + mov r2, r6 + bl MI_CpuCopy8 + mov r0, #0 + strb r0, [r8, r6] +_021E7748: + add r2, sp, #8 + mov r0, r7 + mov r1, r5 + bl FUN_021F02B8 + add sp, sp, #0x208 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E7760: .word 0x0220D410 +_021E7764: .word 0x0220D400 +_021E7768: .word 0x0220D408 + + arm_func_start FUN_021E776C +FUN_021E776C: ; 0x021E776C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x9c + mov r5, r0 + mov r8, r1 + mov r7, r2 + cmp r3, #0 + ldr r4, [sp, #0xb8] + beq _021E77A8 + cmp r4, #0 + beq _021E77A8 + add r1, sp, #0x18 + mov r0, r3 + mov r2, r4, lsl #2 + bl MIi_CpuCopy32 + b _021E77AC +_021E77A8: + mov r4, #0 +_021E77AC: + ldr r6, _021E7880 ; =0x0220D398 + add sb, sp, #4 + ldrb r3, [r6] + ldrb r2, [r6, #1] + mov r0, r4, lsl #2 + mov r1, #3 + strb r3, [sb] + strb r2, [sb, #1] + ldrb r3, [r6, #2] + ldrb r2, [r6, #3] + strb r3, [sb, #2] + strb r2, [sb, #3] + ldrb r2, [r6, #4] + strb r2, [sb, #4] + str r1, [sp, #8] + strb r5, [sp, #0xc] + strb r0, [sp, #0xd] + bl FUN_021E26E4 + ldrh r0, [r0, #0x1a] + strh r0, [sp, #0xe] + bl FUN_021E26E4 + ldr r0, [r0, #0x1c] + str r0, [sp, #0x10] + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + mov r6, #0 + str r0, [sp, #0x14] + mov r4, r6 +_021E781C: + bl FUN_021E26E4 + mov r5, r0 + mov r0, r8 + mov r1, r4 + mov r2, r4 + bl FUN_021FFEB0 + mov r1, r0 + ldrb r0, [sp, #0xd] + mov r2, r7 + mov r3, sb + add r0, r0, #0x14 + str r0, [sp] + ldr r0, [r5, #0xe4] + bl FUN_02203CC4 + cmp r0, #0 + addeq sp, sp, #0x9c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + cmp r0, #2 + addne sp, sp, #0x9c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r6, r6, #1 + cmp r6, #5 + blt _021E781C + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021E7880: .word 0x0220D398 + + arm_func_start FUN_021E7884 +FUN_021E7884: ; 0x021E7884 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x224 + mov fp, r0 + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr sl, [sp, #0x248] + ldr sb, [sp, #0x24c] + mov r8, #0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E78E0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + beq _021E78D8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a6] + cmp r0, #0 + beq _021E7900 +_021E78D8: + cmp fp, #6 + bne _021E7900 +_021E78E0: + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + mov r0, fp + mov r3, sl + str sb, [sp] + bl FUN_021E776C + mov r4, r0 + b _021E79A0 +_021E7900: + cmp sl, #0 + beq _021E7978 + cmp sb, #0 + beq _021E7978 + ldr r3, [sl] + ldr r2, _021E7A3C ; =0x0220D394 + add r0, sp, #0x20 + mov r1, #0x200 + bl OS_SNPrintf + mov r8, r0 + cmp sb, #1 + mov r7, #1 + ble _021E7978 + add r6, sp, #0x10 + mov r5, #0x10 +_021E793C: + ldr r3, [sl, r7, lsl #2] + ldr r2, _021E7A40 ; =0x0220D414 + mov r0, r6 + mov r1, r5 + bl OS_SNPrintf + mov r4, r0 + add r1, sp, #0x20 + mov r0, r6 + add r1, r1, r8 + mov r2, r4 + bl MI_CpuCopy8 + add r7, r7, #1 + add r8, r8, r4 + cmp r7, sb + blt _021E793C +_021E7978: + add r0, sp, #0x20 + mov r1, #0 + strb r1, [r0, r8] + bl FUN_021E26E4 + ldr r0, [r0] + ldr r2, [sp, #4] + add r3, sp, #0x20 + mov r1, fp + bl FUN_021E76C8 + mov r4, r0 +_021E79A0: + cmp fp, #2 + beq _021E79C0 + cmp fp, #6 + beq _021E79C0 + add r0, fp, #0xf8 + and r0, r0, #0xff + cmp r0, #1 + bhi _021E7A30 +_021E79C0: + bl FUN_021E26E4 + strb fp, [r0, #0x3cc] + bl FUN_021E26E4 + add r1, r0, #0x300 + ldr r0, [sp, #0xc] + strh r0, [r1, #0xce] + bl FUN_021E26E4 + ldr r1, [sp, #8] + str r1, [r0, #0x3d0] + bl FUN_021E26E4 + ldr r1, [sp, #4] + str r1, [r0, #0x454] + bl FUN_021E26E4 + str sb, [r0, #0x458] + bl FUN_021E26E4 + mov r5, r0 + bl OS_GetTick + str r0, [r5, #0x45c] + str r1, [r5, #0x460] + cmp sl, #0 + beq _021E7A30 + cmp sb, #0 + beq _021E7A30 + bl FUN_021E26E4 + add r1, r0, #0x3d4 + mov r0, sl + mov r2, sb, lsl #2 + bl MIi_CpuCopy32 +_021E7A30: + mov r0, r4 + add sp, sp, #0x224 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021E7A3C: .word 0x0220D394 +_021E7A40: .word 0x0220D414 + + arm_func_start FUN_021E7A44 +FUN_021E7A44: ; 0x021E7A44 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r0 + ldrb r0, [r7] + cmp r0, #0 + bne _021E7A9C + bl FUN_021E26E4 + mov r4, r0 + mov r1, #0 + ldr r0, [r7, #4] + mov r2, r1 + bl FUN_021FFEB0 + mov r1, r0 + ldrh r2, [r7, #2] + ldr r0, [r4, #0xe4] + ldr r3, [r7, #8] + bl FUN_02203C7C + bl FUN_021E38E8 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, pc} +_021E7A9C: + ldr r5, _021E7AFC ; =FUN_021E2784 + ldr r4, _021E7B00 ; =FUN_021E2B60 + mov r6, #0 +_021E7AA8: + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD43C + str r5, [sp] + str r7, [sp, #4] + ldrb r2, [r7] + ldr r1, [r7, #8] + mov r3, r4 + bl FUN_022006EC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r0, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + add r6, r6, #1 + cmp r6, #5 + blt _021E7AA8 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E7AFC: .word FUN_021E2784 +_021E7B00: .word FUN_021E2B60 + + arm_func_start FUN_021E7B04 +FUN_021E7B04: ; 0x021E7B04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r8, r1 + mov r7, r2 + bl FUN_021E26E4 + cmp r4, #0 + ldrb r6, [r0, #0x14] + mov r4, #0 + bne _021E7D48 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + add r1, r0, #0x100 + ldr r2, [r5, #0x200] + ldr r0, _021E7DEC ; =0x0000FFFF + ldrh r1, [r1, #0x7e] + and r2, r2, r0 + mov r0, r7 + orr r8, r2, r1, lsl #16 + bl FUN_022038C4 + cmp r0, #0 + beq _021E7BC0 + mov r0, r7 + bl FUN_02203908 + mov r5, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203BCC + cmp r5, r0 + movne r5, #1 + bne _021E7C48 + bl FUN_021E26E4 + mov r5, r0 + mov r0, r7 + bl FUN_022038BC + add r1, r5, r6, lsl #2 + str r0, [r1, #0x210] + bl FUN_021E26E4 + mov r5, r0 + mov r0, r7 + bl FUN_02203898 + add r1, r5, r6, lsl #1 + add r1, r1, #0x200 + strh r0, [r1, #0x90] + mov r5, r4 + b _021E7C48 +_021E7BC0: + bl FUN_0209A60C + mov r0, r0, lsl #0x10 + ldr r1, _021E7DEC ; =0x0000FFFF + ldr r2, _021E7DF0 ; =0x0000A8C0 + and r1, r1, r0, lsr #16 + cmp r1, r2 + mov r0, r0, lsr #0x10 + beq _021E7C08 + and r1, r0, #0xff + cmp r1, #0xac + bne _021E7C00 + and r0, r0, #0xff00 + cmp r0, #0x1000 + blo _021E7C00 + cmp r0, #0x1f00 + bls _021E7C08 +_021E7C00: + cmp r1, #0x10 + bne _021E7C10 +_021E7C08: + mov r5, #1 + b _021E7C48 +_021E7C10: + bl FUN_021E26E4 + mov r5, r0 + mov r0, r7 + bl FUN_02203908 + add r1, r5, r6, lsl #2 + str r0, [r1, #0x210] + bl FUN_021E26E4 + mov r5, r0 + mov r0, r7 + bl FUN_022038E4 + add r1, r5, r6, lsl #1 + add r1, r1, #0x200 + strh r0, [r1, #0x90] + mov r5, #0 +_021E7C48: + cmp r5, #0 + beq _021E7C74 + bl FUN_021E26E4 + mov r6, r0 + mov r0, #0x10000 + bl FUN_021DE8C8 + add r1, r6, #0x100 + strh r0, [r1, #0x7e] + bl FUN_021E26E4 + str r8, [r0, #0x19c] + b _021E7D00 +_021E7C74: + bl FUN_0209A60C + str r0, [sp, #8] + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD454 + str r0, [sp, #0xc] + bl FUN_021E26E4 + mov sb, r0 + mov r0, r7 + bl FUN_02203908 + mov r8, r0 + mov r0, r7 + bl FUN_022038E4 + add r1, sb, r6, lsl #2 + add r6, sp, #8 + mov r3, r0 + mov r0, #2 + str r6, [sp] + str r0, [sp, #4] + ldr r1, [r1, #0xf4] + mov r2, r8 + mov r0, #6 + bl FUN_021E7884 + mov r6, r0 + bl FUN_021E26E4 + mov r1, #0 + cmp r6, #0 + strb r1, [r0, #0x3cd] + addne sp, sp, #0x14 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E7D00: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x194] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x195] + bl FUN_021E26E4 + mov r6, r0 + mov r0, r7 + bl FUN_022038E4 + add r1, r6, #0x100 + strh r0, [r1, #0x96] + bl FUN_021E26E4 + mov r6, r0 + mov r0, r7 + bl FUN_02203908 + str r0, [r6, #0x198] + b _021E7D88 +_021E7D48: + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x194] + bl FUN_021E26E4 + mov r1, r4 + strb r1, [r0, #0x195] + bl FUN_021E26E4 + add r0, r0, #0x100 + mov r1, r4 + strh r1, [r0, #0x96] + bl FUN_021E26E4 + mov r1, r4 + str r1, [r0, #0x198] + bl FUN_021E26E4 + str r8, [r0, #0x19c] + mov r5, #1 +_021E7D88: + cmp r5, #0 + beq _021E7DA4 + bl FUN_021E26E4 + add r0, r0, #0x194 + bl FUN_021E7A44 + mov r4, r0 + b _021E7DE0 +_021E7DA4: + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD43C + mov r5, r0 + bl FUN_021E26E4 + add r3, r0, #0x194 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl FUN_021E2784 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] +_021E7DE0: + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021E7DEC: .word 0x0000FFFF +_021E7DF0: .word 0x0000A8C0 + + arm_func_start FUN_021E7DF4 +FUN_021E7DF4: ; 0x021E7DF4 + stmdb sp!, {lr} + sub sp, sp, #0x24 + mov lr, #3 + ldr ip, _021E7E48 ; =0x0220D3AC + str lr, [sp] + str ip, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, _021E7E4C ; =0x0220D3CC + ldr r1, _021E7E50 ; =0x0220D3D8 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + str r1, [sp, #0x1c] + ldr r2, _021E7E54 ; =0x0220D418 + ldr r3, _021E7E58 ; =0x0220D3E4 + mov r1, #0x100 + str ip, [sp, #0x20] + bl OS_SNPrintf + add sp, sp, #0x24 + ldmfd sp!, {pc} + .align 2, 0 +_021E7E48: .word 0x0220D3AC +_021E7E4C: .word 0x0220D3CC +_021E7E50: .word 0x0220D3D8 +_021E7E54: .word 0x0220D418 +_021E7E58: .word 0x0220D3E4 + + arm_func_start FUN_021E7E5C +FUN_021E7E5C: ; 0x021E7E5C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x1b0 + mov r7, #8 + mov r6, #0xa + mov r5, #0x32 + mov r4, #0x33 + mov r3, #0x34 + mov r2, #0x35 + mov r1, #0x36 + strb r7, [sp, #0x10c] + strb r6, [sp, #0x10d] + strb r5, [sp, #0x10e] + strb r4, [sp, #0x10f] + strb r3, [sp, #0x110] + strb r2, [sp, #0x111] + strb r1, [sp, #0x112] + mov r5, r0 + mov r4, #7 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E7EC4 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E7EF4 +_021E7EC4: + add r1, sp, #0x100 + ldr r2, _021E8020 ; =0x02210704 + add r1, r1, #0x13 + mov r3, #0 +_021E7ED4: + ldrb r0, [r2] + add r3, r3, #1 + add r2, r2, #0xc + cmp r0, #0 + strneb r0, [r1], #1 + addne r4, r4, #1 + cmp r3, #0x9a + blt _021E7ED4 +_021E7EF4: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021E7FAC +_021E7F08: ; jump table + b _021E7FAC ; case 0 + b _021E7FAC ; case 1 + b _021E7F8C ; case 2 + b _021E7F20 ; case 3 + b _021E7F8C ; case 4 + b _021E7F8C ; case 5 +_021E7F20: + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + bne _021E7F84 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldr r1, [r6, #0x200] + ldrb r2, [r5, #0x16] + ldrb r3, [r0, #0x15] + add r0, sp, #0xc + bl FUN_021E7DF4 + ldr r0, _021E8024 ; =0x022106E0 + ldr r5, [r0] + cmp r5, #0 + beq _021E7FAC + add r0, sp, #0xc + ldr r2, _021E8028 ; =0x0220D470 + mov r3, r0 + mov r1, #0x100 + str r5, [sp] + bl OS_SNPrintf + b _021E7FAC +_021E7F84: + bl FUN_021E26E4 + ldr r5, [r0, #0x208] +_021E7F8C: + ldr r2, _021E802C ; =0x0220D47C + ldr r3, _021E8030 ; =0x0220D3AC + add r0, sp, #0xc + mov r1, #0x100 + str r5, [sp] + bl OS_SNPrintf + bl FUN_021E26E4 + str r5, [r0, #0x204] +_021E7FAC: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203C04 + mov sl, #0 + add sb, sp, #0xc + add r5, sp, #0x10c + mov r6, sl + mov r8, #6 + mov r7, #1 +_021E7FD0: + bl FUN_021E26E4 + str r4, [sp] + str sb, [sp, #4] + str r8, [sp, #8] + ldr r0, [r0, #0xe4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl FUN_02203D1C + cmp r0, #0 + addeq sp, sp, #0x1b0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r0, #2 + addne sp, sp, #0x1b0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add sl, sl, #1 + cmp sl, #5 + blt _021E7FD0 + add sp, sp, #0x1b0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021E8020: .word 0x02210704 +_021E8024: .word 0x022106E0 +_021E8028: .word 0x0220D470 +_021E802C: .word 0x0220D47C +_021E8030: .word 0x0220D3AC + + arm_func_start FUN_021E8034 +FUN_021E8034: ; 0x021E8034 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _021E8074 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203E80 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0xe4] +_021E8074: + bl FUN_02200D6C + mov r0, #0 + bl FUN_021E26D0 + ldr r0, _021E80C0 ; =0x022106E0 + ldr r1, [r0] + cmp r1, #0 + beq _021E80A8 + mov r0, #4 + mov r2, #0 + bl FUN_021DD904 + ldr r0, _021E80C0 ; =0x022106E0 + mov r1, #0 + str r1, [r0] +_021E80A8: + bl FUN_021E4164 + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x18] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E80C0: .word 0x022106E0 + + arm_func_start FUN_021E80C4 +FUN_021E80C4: ; 0x021E80C4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r0, #0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_021E8174 + bl FUN_021E26E4 + strb r7, [r0, #0x15] + bl FUN_021E26E4 + strb r6, [r0, #0x16] + bl FUN_021E26E4 + str r5, [r0, #0x464] + bl FUN_021E26E4 + str r4, [r0, #0x468] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17d] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x2d0] + mov r0, #0x32 + ldr r1, _021E8160 ; =0x0220D3AC + bl FUN_0220277C + mov r0, #0x33 + ldr r1, _021E8164 ; =0x0220D3CC + bl FUN_0220277C + mov r0, #0x34 + ldr r1, _021E8168 ; =0x0220D3D8 + bl FUN_0220277C + mov r0, #0x35 + ldr r1, _021E816C ; =0x0220D3E4 + bl FUN_0220277C + mov r0, #0x36 + ldr r1, _021E8170 ; =0x0220D3A0 + bl FUN_0220277C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E8160: .word 0x0220D3AC +_021E8164: .word 0x0220D3CC +_021E8168: .word 0x0220D3D8 +_021E816C: .word 0x0220D3E4 +_021E8170: .word 0x0220D3A0 + + arm_func_start FUN_021E8174 +FUN_021E8174: ; 0x021E8174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xc] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17c] + bl FUN_021E26E4 + mov r5, r0 + mov r0, #0x10000 + bl FUN_021DE8C8 + add r1, r5, #0x100 + strh r0, [r1, #0x7e] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x180] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x184] + str r1, [r0, #0x188] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a4] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a9] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1aa] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ab] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ac] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a7] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a8] + bl FUN_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb2] + bl FUN_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb4] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1b8] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1e0] + str r1, [r0, #0x1e4] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1f0] + str r1, [r0, #0x1f4] + bl FUN_021E26E4 + add r1, r0, #0x3cc + mov r0, #0 + mov r2, #0x98 + bl MIi_CpuClear32 + cmp r4, #2 + bne _021E82F0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x14] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E82CC + mov r0, #1 + bl FUN_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E82CC: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0xa + bl FUN_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E82F0: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xd] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xe] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x14] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0xe8] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a5] + bl FUN_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb0] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1bc] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c0] + str r1, [r0, #0x1c4] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1cc] + str r1, [r0, #0x1d0] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1d4] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x204] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x208] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x2f0] + bl FUN_021E26E4 + add r1, r0, #0x24 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + bl FUN_021E26E4 + add r1, r0, #0xa4 + mov r0, #0 + mov r2, #0x40 + bl MIi_CpuClear16 + bl FUN_021E26E4 + add r1, r0, #0xf4 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + bl FUN_021E26E4 + add r1, r0, #0x194 + mov r0, #0 + mov r2, #0xc + bl MIi_CpuClear32 + bl FUN_021E26E4 + add r1, r0, #0x210 + mov r0, #0 + mov r2, #0x80 + bl MIi_CpuClear32 + bl FUN_021E26E4 + add r1, r0, #0x290 + mov r0, #0 + mov r2, #0x40 + bl MIi_CpuClear16 + bl FUN_021E26E4 + add r0, r0, #0x2d0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + bl FUN_021E26E4 + add r1, r0, #0x348 + mov r0, #0 + mov r2, #0x84 + bl MIi_CpuClear32 + cmp r4, #1 + bne _021E84A8 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E8484 + mov r0, #3 + bl FUN_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E8484: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #4 + bl FUN_021E26D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021E84A8: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x15] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x16] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x18] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1a6] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ae] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ad] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1f8] + str r1, [r0, #0x1fc] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x46c] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x470] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021E852C +FUN_021E852C: ; 0x021E852C + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E854C +FUN_021E854C: ; 0x021E854C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl FUN_021E26F4 + ldr r0, _021E85C8 ; =0x022106E0 + ldr r1, [r0] + cmp r1, #0 + beq _021E8584 + mov r0, #4 + mov r2, #0 + bl FUN_021DD904 + ldr r0, _021E85C8 ; =0x022106E0 + mov r1, #0 + str r1, [r0] +_021E8584: + bl FUN_021E4164 + ldr r0, _021E85CC ; =0x022106D4 + ldr r1, [r0] + cmp r1, #0 + beq _021E85B0 + mov r0, #4 + mov r2, #0 + bl FUN_021DD904 + ldr r0, _021E85CC ; =0x022106D4 + mov r1, #0 + str r1, [r0] +_021E85B0: + ldr r0, _021E85D0 ; =0x022106DC + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E85C8: .word 0x022106E0 +_021E85CC: .word 0x022106D4 +_021E85D0: .word 0x022106DC + + arm_func_start FUN_021E85D4 +FUN_021E85D4: ; 0x021E85D4 + stmdb sp!, {lr} + sub sp, sp, #0x2c + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addne sp, sp, #0x2c + movne r0, #0 + ldmneia sp!, {pc} + bl FUN_021E26E4 + ldrb r1, [r0, #0x16] + ldr r2, _021E8694 ; =0x0220D394 + add r0, sp, #0 + add r3, r1, #1 + mov r1, #0xc + bl OS_SNPrintf + ldr r0, _021E8698 ; =0x0220D484 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl FUN_021DEB54 + bl FUN_021E26E4 + ldrb r2, [r0, #0xd] + add r0, sp, #0 + mov r1, #0xc + add r3, r2, #1 + ldr r2, _021E8694 ; =0x0220D394 + bl OS_SNPrintf + ldr r0, _021E869C ; =0x0220D488 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl FUN_021DEB0C + ldr r2, _021E8694 ; =0x0220D394 + add r0, sp, #0 + mov r1, #0xc + mov r3, #3 + bl OS_SNPrintf + ldr r0, _021E86A0 ; =0x0220D3F4 + add r1, sp, #0 + add r2, sp, #0xc + mov r3, #0x2f + bl FUN_021DEB0C + mov r0, #6 + add r1, sp, #0xc + mov r2, #0 + bl FUN_021E1E30 + add sp, sp, #0x2c + ldmfd sp!, {pc} + .align 2, 0 +_021E8694: .word 0x0220D394 +_021E8698: .word 0x0220D484 +_021E869C: .word 0x0220D488 +_021E86A0: .word 0x0220D3F4 + + arm_func_start FUN_021E86A4 +FUN_021E86A4: ; 0x021E86A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + bl FUN_021E26E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _021E8748 ; =0x022106E4 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + mov r6, #0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xe] + cmp r0, #0 + blt _021E8730 + ldr r5, _021E8748 ; =0x022106E4 + mov r4, #1 +_021E86E8: + bl FUN_021E26E4 + mov r8, r0 + bl FUN_021E26E4 + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + ldr r1, [r8, #0x2f0] + mov r0, r4,lsl r0 + ands r0, r1, r0 + beq _021E8730 + bl FUN_021E26E4 + add r0, r0, r6 + ldrb r0, [r0, #0x2d0] + add r6, r6, #1 + strb r0, [r5], #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xe] + cmp r6, r0 + ble _021E86E8 +_021E8730: + ldr r0, _021E8748 ; =0x022106E4 + str r0, [r7] + bl FUN_021E26E4 + ldrb r0, [r0, #0xe] + add r0, r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E8748: .word 0x022106E4 + + arm_func_start FUN_021E874C +FUN_021E874C: ; 0x021E874C + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021E26E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021E26E4 + add r0, r0, #0x2d0 + str r0, [r4] + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E8780 +FUN_021E8780: ; 0x021E8780 + stmdb sp!, {r4, r5, r6, lr} + mvn r6, #0 + mov r5, #0 + mov r4, #1 +_021E8790: + bl FUN_021E26E4 + mov r1, r4,lsl r5 + ldr r0, [r0, #0x2f0] + add r5, r5, #1 + ands r0, r1, r0 + addne r6, r6, #1 + cmp r5, #0x20 + blt _021E8790 + mvn r0, #0 + cmp r6, r0 + bne _021E87CC + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xe] + ldmia sp!, {r4, r5, r6, pc} +_021E87CC: + bl FUN_021E26E4 + strb r6, [r0, #0xe] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E87D8 +FUN_021E87D8: ; 0x021E87D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0xe] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E8804 +FUN_021E8804: ; 0x021E8804 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E8830 +FUN_021E8830: ; 0x021E8830 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_021E26E4 + add r0, r0, sb, lsl #2 + ldr fp, [r0, #0xf4] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + add r0, r0, sb + ldrb r0, [r0, #0x2d0] + mov r1, #1 + ldr r2, [r4, #0x2f0] + mvn r0, r1, lsl r0 + and r0, r2, r0 + str r0, [r4, #0x2f0] + bl FUN_021E8780 + sub r0, r8, #1 + cmp sb, r0 + bge _021E8970 + sub r0, r8, sb + sub r6, r0, #1 + cmp r6, #0 + mov r7, #0 + ble _021E8970 +_021E88AC: + add r4, sb, r7 + add r5, r4, #1 + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x24] + add r0, sl, r4, lsl #2 + str r1, [r0, #0x24] + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + add r0, r0, r5, lsl #1 + ldrh r1, [r0, #0xa4] + add r0, sl, r4, lsl #1 + strh r1, [r0, #0xa4] + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + add r1, sl, r4, lsl #2 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xf4] + str r0, [r1, #0xf4] + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + add r1, sl, r4, lsl #2 + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x210] + str r0, [r1, #0x210] + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + add r1, sl, r4, lsl #1 + add r1, r1, #0x200 + add r0, r0, r5, lsl #1 + add r0, r0, #0x200 + ldrh r0, [r0, #0x90] + strh r0, [r1, #0x90] + bl FUN_021E26E4 + mov sl, r0 + bl FUN_021E26E4 + add r1, r0, r5 + add r0, sl, r4 + ldrb r1, [r1, #0x2d0] + add r7, r7, #1 + cmp r7, r6 + strb r1, [r0, #0x2d0] + blt _021E88AC +_021E8970: + cmp r8, #0 + ble _021E89E0 + sub r4, r8, #1 + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0x24] + bl FUN_021E26E4 + add r0, r0, r4, lsl #1 + mov r1, #0 + strh r1, [r0, #0xa4] + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0xf4] + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + mov r1, #0 + str r1, [r0, #0x210] + bl FUN_021E26E4 + add r0, r0, r4, lsl #1 + add r0, r0, #0x200 + mov r1, #0 + strh r1, [r0, #0x90] + bl FUN_021E26E4 + add r0, r0, r4 + mov r1, #0 + strb r1, [r0, #0x2d0] +_021E89E0: + mov r0, fp + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_021E89EC +FUN_021E89EC: ; 0x021E89EC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl FUN_021E26E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r5, #0 + mov r4, #0 + ble _021E8A48 +_021E8A14: + bl FUN_021E26E4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xf4] + cmp r6, r0 + bne _021E8A3C + mov r0, r4 + mov r1, r5 + bl FUN_021E8830 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021E8A3C: + add r4, r4, #1 + cmp r4, r5 + blt _021E8A14 +_021E8A48: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E8A50 +FUN_021E8A50: ; 0x021E8A50 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #2 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl FUN_021E59D4 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E8A74 +FUN_021E8A74: ; 0x021E8A74 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl FUN_021DF88C + cmp r0, #5 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + cmp r5, #0 + beq _021E8AD4 + ldr r1, _021E8C00 ; =0xFFFEC780 + mov r0, r5 + add r1, r4, r1 + bl FUN_021E8E08 + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_021E8AD4: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x2d0] + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #1 + beq _021E8B10 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #1 + beq _021E8B10 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #2 + bne _021E8B1C +_021E8B10: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_021E8B1C: + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + cmp r0, #0 + beq _021E8B44 + bl FUN_021E26E4 + ldr r0, [r0, #0x19c] + bl FUN_022006B4 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x19c] +_021E8B44: + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _021E8B84 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a8] + cmp r0, #0 + bne _021E8BF4 + bl FUN_021E26E4 + mov r1, #3 + strb r1, [r0, #0x1a8] + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD45C + b _021E8BF4 +_021E8B84: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E8BA4 + ldr r1, _021E8C04 ; =0xFFFEC5D2 + mov r0, #6 + bl FUN_021E8E08 + b _021E8BF4 +_021E8BA4: + bl FUN_021E26E4 + ldr r0, [r0, #0x208] + cmp r0, #0 + beq _021E8BBC + bl FUN_021E4BF4 + b _021E8BF4 +_021E8BBC: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E8BEC + mov r0, #0x12 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0x1f0] + str r1, [r4, #0x1f4] + b _021E8BF4 +_021E8BEC: + mov r0, #1 + bl FUN_021E4CF8 +_021E8BF4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E8C00: .word 0xFFFEC780 +_021E8C04: .word 0xFFFEC5D2 + + arm_func_start FUN_021E8C08 +FUN_021E8C08: ; 0x021E8C08 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r2 + cmp r1, #2 + beq _021E8C30 + cmp r1, #3 + beq _021E8CDC + cmp r1, #4 + beq _021E8DA4 + ldmia sp!, {r4, r5, r6, pc} +_021E8C30: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #1 + bne _021E8CCC + ldrb r0, [r4] + cmp r0, #1 + bne _021E8C58 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x20c] +_021E8C58: + ldrb r6, [r4, #1] + bl FUN_021E26E4 + ldrb r1, [r4, #2] + add r0, r0, r6 + strb r1, [r0, #0x2d0] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r1, [r0, #0x200] + add r0, r4, r6, lsl #2 + str r1, [r0, #0xf4] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E8CA4 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _021E8CB8 +_021E8CA4: + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] +_021E8CB8: + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ad] + mov r0, #9 + bl FUN_021E26D0 +_021E8CCC: + mov r0, r5 + mov r1, #3 + bl FUN_021E4910 + ldmia sp!, {r4, r5, r6, pc} +_021E8CDC: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x10 + bne _021E8D94 + bl FUN_021E26E4 + ldr r2, [r0, #0x1d4] + mov r1, #1 + orr r1, r2, r1, lsl r5 + str r1, [r0, #0x1d4] + ldrb r1, [r4] + ldrb r0, [r4, #1] + orr r4, r1, r0, lsl #8 + bl FUN_021E26E4 + add r0, r0, #0x100 + ldrh r0, [r0, #0xb0] + cmp r4, r0 + ble _021E8D2C + bl FUN_021E26E4 + add r0, r0, #0x100 + strh r4, [r0, #0xb0] +_021E8D2C: + mov r0, #0 + bl FUN_021E3EC4 + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x1d4] + cmp r4, r0 + ldmneia sp!, {r4, r5, r6, pc} + mov r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #1 + blt _021E8D88 + mov r4, #4 +_021E8D60: + bl FUN_021E26E4 + add r0, r0, r5 + ldrb r0, [r0, #0x2d0] + mov r1, r4 + bl FUN_021E4910 + add r5, r5, #1 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r5, r0 + ble _021E8D60 +_021E8D88: + mov r0, #0x11 + bl FUN_021E26D0 + ldmia sp!, {r4, r5, r6, pc} +_021E8D94: + mov r0, r5 + mov r1, #4 + bl FUN_021E4910 + ldmia sp!, {r4, r5, r6, pc} +_021E8DA4: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #9 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #4 + bl FUN_021E51C0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021E8DC0 +FUN_021E8DC0: ; 0x021E8DC0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x14] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x16] + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E8E08 +FUN_021E8E08: ; 0x021E8E08 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r4, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl FUN_021E4B40 + mov r0, r4 + mov r1, r5 + bl FUN_021DD6B0 + ldr r1, _021E8EC8 ; =0x0220D3F0 + mov r0, #1 + mov r2, #0 + bl FUN_021E1E30 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + moveq r7, #1 + movne r7, #0 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + cmp r0, #0 + moveq r8, #1 + movne r8, #0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x20c] + bl FUN_021E1F18 + mov r5, r0 + bl FUN_021E26E4 + str r5, [sp] + ldr r1, [r0, #0x468] + mov r0, r4 + str r1, [sp, #4] + ldr r4, [r6, #0x464] + mov r2, r8 + mov r3, r7 + mov r1, #0 + blx r4 + bl FUN_021E8034 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021E8EC8: .word 0x0220D3F0 + + arm_func_start FUN_021E8ECC +FUN_021E8ECC: ; 0x021E8ECC + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021E26E4 + mov r1, #0xff + strb r1, [r0, #0x3cc] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x3cd] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021E8EF4 +FUN_021E8EF4: ; 0x021E8EF4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x21c + mov fp, r2 + mov sl, #0 + str r1, [sp, #8] + add sb, sp, #0xc + add r5, sp, #0x1c + mov r7, sl + add r8, fp, #1 + mov r6, #0xa + mvn r4, #0 +_021E8F20: + mov r0, sb + mov r1, r8 + mov r2, sl + bl FUN_021E761C + cmp r0, r4 + beq _021E8F58 + mov r0, sb + mov r1, r7 + mov r2, r6 + bl strtoul + str r0, [r5, sl, lsl #2] + add sl, sl, #1 + cmp sl, #0x80 + blt _021E8F20 +_021E8F58: + add r0, sp, #0x1c + str r0, [sp] + str sl, [sp, #4] + ldrb r0, [fp] + mov r2, #0 + ldr r1, [sp, #8] + mov r3, r2 + bl FUN_021E6730 + add sp, sp, #0x21c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_021E8F80 +FUN_021E8F80: ; 0x021E8F80 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r6, r0 + mov r4, r1 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #7 + beq _021E8FC4 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, pc} +_021E8FC4: + cmp r4, #0 + beq _021E9140 + cmp r4, #5 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #6 + bne _021E9114 + bl FUN_021E26E4 + ldrb r1, [r0, #0xc] + add r1, r1, #1 + strb r1, [r0, #0xc] + bl FUN_021E26E4 + ldrb r0, [r0, #0xc] + cmp r0, #5 + bls _021E9030 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xc] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9030: + bl FUN_021E26E4 + ldr r3, [r0, #0x200] + ldr r2, _021E91F8 ; =0x0220D394 + add r0, sp, #0x10 + mov r1, #0xc + bl OS_SNPrintf + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r2, [r6, #0x14] + ldrb r1, [r0, #0x14] + add r0, r7, r2, lsl #2 + add r1, r5, r1, lsl #1 + add r1, r1, #0x200 + ldrh r1, [r1, #0x90] + ldr r0, [r0, #0x210] + mov r2, #0 + bl FUN_021FFEB0 + mov r5, r0 + bl FUN_021E26E4 + mvn r1, #0 + str r1, [sp] + ldr r3, _021E91FC ; =0x00001388 + mov r1, #0 + str r3, [sp, #4] + ldr r0, [r0, #8] + mov r2, r5 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r4, #4] + add r3, sp, #0x10 + ldr r0, [r0] + bl FUN_021FD52C + cmp r0, #1 + bne _021E90E0 + bl FUN_021E36B0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E90E0: + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x14] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9114: + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + add sp, sp, #0x1c + cmp r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9140: + bl FUN_021DF704 + mov r5, r0 + mvn r1, #0 + cmp r5, r1 + bne _021E9168 + ldr r1, _021E9200 ; =0xFFFEABC4 + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9168: + bl FUN_021DF6BC + mov r4, r0 + mov r0, r5 + bl FUN_021DF638 + str r6, [r4] + mov r4, r0 + bl FUN_021E26E4 + ldrb r2, [r0, #0xd] + mov r1, #0 + add r2, r2, #1 + strb r2, [r0, #0xd] + strb r5, [r4] + strh r1, [r4, #2] + str r1, [r4, #4] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r2, [r0, #0xd] + mov r0, r6 + mov r1, r4 + add r2, r5, r2 + ldrb r2, [r2, #0x2d0] + strb r2, [r4, #1] + bl FUN_021FD3F8 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xc + bne _021E91E8 + mov r0, #0 + bl FUN_021E51C0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021E91E8: + mov r0, #1 + bl FUN_021E51C0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E91F8: .word 0x0220D394 +_021E91FC: .word 0x00001388 +_021E9200: .word 0xFFFEABC4 + + arm_func_start FUN_021E9204 +FUN_021E9204: ; 0x021E9204 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl FUN_021E26E4 + cmp r0, #0 + beq _021E9244 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #7 + bne _021E9244 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + beq _021E925C +_021E9244: + ldr r1, _021E944C ; =0x0220D48C + mov r0, r8 + mvn r2, #0 + bl FUN_021FD6B0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E925C: + bl FUN_021DF704 + mov r5, r0 + mvn r2, #0 + cmp r5, r2 + bne _021E9290 + ldr r1, _021E9450 ; =0x0220D498 + mov r0, r8 + bl FUN_021FD6B0 + ldr r1, _021E9454 ; =0xFFFEABC4 + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E9290: + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0x210] + cmp r7, r0 + bne _021E92D4 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #1 + add r0, r0, #0x200 + ldrh r0, [r0, #0x90] + cmp r6, r0 + beq _021E9364 +_021E92D4: + ldr r0, [sp, #0x24] + ldrb r1, [r0] + cmp r1, #0 + beq _021E934C + mov r1, #0 + mov r2, #0xa + bl strtoul + mov r4, r0 + bl FUN_021E26E4 + mov sb, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, sb, r0, lsl #2 + ldr r0, [r0, #0xf4] + cmp r4, r0 + bne _021E934C + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + str r7, [r0, #0x210] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #1 + add r0, r0, #0x200 + strh r6, [r0, #0x90] + b _021E9364 +_021E934C: + ldr r1, _021E9458 ; =0x0220D4A4 + mov r0, r8 + mvn r2, #0 + bl FUN_021FD6B0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E9364: + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl FUN_021E26E4 + ldr r1, [r0, #8] + mov r0, r8 + bl FUN_021FD6BC + cmp r0, #0 + bne _021E93A0 + ldr r1, _021E945C ; =0xFFFEC5E6 + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021E93A0: + bl FUN_021E8ECC + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + cmp r0, #0 + bne _021E93D4 + ldr r1, [sp, #0x20] + ldr r0, _021E9460 ; =0x0000FFFF + mov r4, r1, asr #1 + cmp r4, r0 + movge r4, r0 + bl FUN_021E26E4 + add r0, r0, #0x100 + strh r4, [r0, #0xb0] +_021E93D4: + mov r0, r5 + bl FUN_021DF6BC + mov r4, r0 + mov r0, r5 + bl FUN_021DF638 + str r8, [r4] + mov r4, r0 + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + add r1, r1, #1 + strb r1, [r0, #0xd] + strb r5, [r4] + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + mov r0, r8 + mov r2, #0 + sub r1, r1, #1 + add r1, r5, r1 + ldrb r3, [r1, #0x2d0] + mov r1, r4 + strb r3, [r4, #1] + strh r2, [r4, #2] + str r2, [r4, #4] + bl FUN_021FD3F8 + mov r0, #2 + bl FUN_021E51C0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021E944C: .word 0x0220D48C +_021E9450: .word 0x0220D498 +_021E9454: .word 0xFFFEABC4 +_021E9458: .word 0x0220D4A4 +_021E945C: .word 0xFFFEC5E6 +_021E9460: .word 0x0000FFFF + + arm_func_start FUN_021E9464 +FUN_021E9464: ; 0x021E9464 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r0, [sp, #0x18] + mov r5, r1 + mov r6, r2 + mov r4, r3 + cmp r0, #0 + beq _021E948C + cmp r4, #0 + bne _021E9498 +_021E948C: + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E9498: + add r1, sp, #0 + mov r0, #0 + mov r2, #8 + bl MIi_CpuClear32 + mov r1, r6, asr #8 + mov r0, r6, lsl #8 + mov r2, #2 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strb r2, [sp, #1] + strh r0, [sp, #2] + str r5, [sp, #4] + ldrb r5, [r4] + cmp r5, #0xfe + bne _021E94E4 + ldrb r0, [r4, #1] + cmp r0, #0xfd + beq _021E94EC +_021E94E4: + cmp r5, #0x5c + bne _021E9518 +_021E94EC: + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021E9558 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + ldr r2, [sp, #0x18] + add r3, sp, #0 + mov r1, r4 + bl FUN_022011A8 + b _021E9558 +_021E9518: + ldr r1, _021E9564 ; =0x0220F018 + mov r0, r4 + mov r2, #6 + bl memcmp + cmp r0, #0 + bne _021E9544 + ldr r1, [sp, #0x18] + add r2, sp, #0 + mov r0, r4 + bl FUN_021FFF78 + b _021E9558 +_021E9544: + cmp r5, #0xfe + moveq r0, #0 + add sp, sp, #8 + movne r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021E9558: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E9564: .word 0x0220F018 + + arm_func_start FUN_021E9568 +FUN_021E9568: ; 0x021E9568 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r4, r0 + bl FUN_021E26E4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + bne _021E95E4 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021E95B8 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202534 +_021E95B8: + bl FUN_021E26E4 + ldr r0, [r0, #4] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD6D4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E95E4: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _021E9D04 +_021E960C: ; jump table + b _021E9D04 ; case 0 + b _021E9C0C ; case 1 + b _021E97B8 ; case 2 + b _021E97B8 ; case 3 + b _021E9644 ; case 4 + b _021E97B8 ; case 5 + b _021E9D04 ; case 6 + b _021E9870 ; case 7 + b _021E9D04 ; case 8 + b _021E9D04 ; case 9 + b _021E9D04 ; case 10 + b _021E99F8 ; case 11 + b _021E9D04 ; case 12 + b _021E9AEC ; case 13 +_021E9644: + bl FUN_021E26E4 + ldr r0, [r0, #0x1c8] + cmp r0, #0 + beq _021E9730 + bl OS_GetTick + mov r6, r0 + mov r7, r1 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + ldr r1, [r5, #0x1cc] + ldr r0, [r5, #0x1d0] + subs r2, r6, r1 + sbc r0, r7, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + ldr r1, [r4, #0x1c8] + cmpeq r0, r1 + bls _021E9730 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c8] + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #3 + bne _021E971C + bl FUN_021E26E4 + ldrb r1, [r0, #0x1aa] + add r1, r1, #1 + strb r1, [r0, #0x1aa] + bl FUN_021E26E4 + ldrb r0, [r0, #0x1aa] + cmp r0, #5 + bls _021E96F8 + ldr r1, _021E9EFC ; =0xFFFEC5D2 + mov r0, #6 + bl FUN_021E8E08 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E96F8: + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0 + bl FUN_021E6038 + bl FUN_021E61EC + cmp r0, #0 + beq _021E9730 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E971C: + mov r0, #0 + bl FUN_021E5C44 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021E9730: + bl FUN_021E26E4 + ldr r0, [r0, #0x1bc] + cmp r0, #0 + beq _021E9D04 + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + ldr r0, _021E9F00 ; =0x00000BB8 + mla r5, r1, r0, r0 + bl OS_GetTick + mov r4, r0 + mov r6, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x1c0] + ldr r0, [r0, #0x1c4] + subs r2, r4, r1 + sbc r0, r6, r0 + mov r1, r0, lsl #6 + orr r1, r1, r2, lsr #26 + mov r0, r2, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r5 + blo _021E9D04 + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0 + bl FUN_021E6038 + bl FUN_021E61EC + cmp r0, #0 + beq _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E97B8: + bl FUN_021E26E4 + ldr r0, [r0, #0xe8] + cmp r0, #0 + ble _021E9D04 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #3 + bne _021E97EC + bl FUN_021E26E4 + ldrb r1, [r0, #0xd] + ldr r0, _021E9F00 ; =0x00000BB8 + mla r5, r1, r0, r0 + b _021E9800 +_021E97EC: + bl FUN_021E26E4 + ldr r0, [r0, #0xe8] + cmp r0, #1 + moveq r5, #0x3e8 + ldrne r5, _021E9F00 ; =0x00000BB8 +_021E9800: + bl OS_GetTick + mov r4, r0 + mov r6, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0xec] + ldr r0, [r0, #0xf0] + subs r3, r4, r1 + sbc r0, r6, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, r5 + bls _021E9D04 + bl FUN_021E26E4 + ldr r0, [r0, #0x204] + bl FUN_021E7E5C + bl FUN_021E38E8 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0xe8] + b _021E9D04 +_021E9870: + bl FUN_021E26E4 + ldr r2, [r0, #0x18c] + ldr r1, [r0, #0x190] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + beq _021E9900 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x18c] + ldr r0, [r0, #0x190] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F04 ; =0x000061A8 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x18c] + str r1, [r0, #0x190] + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5908 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9900: + bl FUN_021E26E4 + ldrb r0, [r0, #0x3cc] + cmp r0, #6 + bne _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F08 ; =0x00001770 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl FUN_021E26E4 + ldrb r1, [r0, #0x3cd] + add r1, r1, #1 + strb r1, [r0, #0x3cd] + bl FUN_021E26E4 + ldrb r0, [r0, #0x3cd] + cmp r0, #5 + bls _021E9998 + bl FUN_021E8ECC + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5908 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9998: + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + add r1, r4, #0x3d4 + str r1, [sp] + add r3, r5, #0x300 + ldr r1, [r0, #0x458] + mov r0, #6 + str r1, [sp, #4] + ldr r1, [r7, #0x454] + ldr r2, [r6, #0x3d0] + ldrh r3, [r3, #0xce] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E99F8: + bl FUN_021E26E4 + ldrb r0, [r0, #0x3cc] + cmp r0, #2 + bne _021E9D04 + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _021E9A60 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F08 ; =0x00001770 + cmp r1, #0 + cmpeq r0, r2 + bhi _021E9AB8 +_021E9A60: + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F0C ; =0x00004A38 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 +_021E9AB8: + bl FUN_021E8ECC + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r0, #1 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9AEC: + bl FUN_021E26E4 + ldrb r0, [r0, #0x3cc] + cmp r0, #8 + bne _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x45c] + ldr r0, [r0, #0x460] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F10 ; =0x00007530 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl FUN_021E26E4 + ldrb r1, [r0, #0x3cd] + add r1, r1, #1 + strb r1, [r0, #0x3cd] + bl FUN_021E26E4 + ldrb r0, [r0, #0x3cd] + cmp r0, #0 + beq _021E9BAC + bl FUN_021E8ECC + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #2 + bne _021E9BA4 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0xf4] + bl FUN_021E59D4 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9BA4: + bl FUN_021E4CB4 + b _021E9D04 +_021E9BAC: + bl FUN_021E26E4 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + add r1, r4, #0x3d4 + str r1, [sp] + add r3, r5, #0x300 + ldr r1, [r0, #0x458] + mov r0, #8 + str r1, [sp, #4] + ldr r1, [r7, #0x454] + ldr r2, [r6, #0x3d0] + ldrh r3, [r3, #0xce] + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + beq _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9C0C: + bl FUN_021DF88C + cmp r0, #5 + bne _021E9D04 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x1f8] + ldr r0, [r0, #0x1fc] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F10 ; =0x00007530 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9D04 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1ad] + cmp r0, #5 + blo _021E9C8C + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + bl FUN_021E5908 + cmp r0, #0 + bne _021E9D04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_021E9C8C: + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldrh r3, [r0, #0xa4] + ldr r1, [r5, #0xf4] + ldr r2, [r4, #0x24] + mov r0, #0x40 + bl FUN_021E7884 + bl FUN_021E61EC + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldrb r1, [r0, #0x1ad] + add r1, r1, #1 + strb r1, [r0, #0x1ad] + bl FUN_021E26E4 + mov r4, r0 + bl OS_GetTick + ldr r2, _021E9F14 ; =0xFF403B3A + mvn r3, #0 + adds r0, r0, r2 + str r0, [r4, #0x1f8] + adc r0, r1, r3 + str r0, [r4, #0x1fc] +_021E9D04: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + beq _021E9D24 + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #6 + bne _021E9DA0 +_021E9D24: + bl FUN_021E26E4 + ldr r2, [r0, #0x184] + ldr r1, [r0, #0x188] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + beq _021E9DA0 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x184] + ldr r0, [r0, #0x188] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F18 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9DA0 + bl FUN_021E26E4 + mov r1, #0 + add r3, r0, #0x194 + mov r2, r1 + mov r0, #1 + bl FUN_021E2784 +_021E9DA0: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + beq _021E9DBC + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + bl FUN_02203C38 +_021E9DBC: + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_021E9F1C + bl FUN_02200468 + bl FUN_021E26E4 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021E9DEC + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD6D4 +_021E9DEC: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0x12 + bne _021E9E54 + bl OS_GetTick + mov r4, r0 + mov r5, r1 + bl FUN_021E26E4 + ldr r1, [r0, #0x1f0] + ldr r0, [r0, #0x1f4] + subs r3, r4, r1 + sbc r0, r5, r0 + mov r1, r0, lsl #6 + ldr r2, _021E9EF8 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + ldr r2, _021E9F00 ; =0x00000BB8 + cmp r1, #0 + cmpeq r0, r2 + bls _021E9E54 + bl FUN_021E4BF4 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} +_021E9E54: + bl FUN_021E4684 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E41C4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E39F0 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1ae] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xa + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldrb r0, [r0, #0xd] + strb r0, [r4, #0x16] + bl FUN_021E85D4 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1ae] + bl FUN_021E26E4 + ldr r0, [r0, #0x47c] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x480] + ldr r1, [r4, #0x47c] + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021E9EF8: .word 0x000082EA +_021E9EFC: .word 0xFFFEC5D2 +_021E9F00: .word 0x00000BB8 +_021E9F04: .word 0x000061A8 +_021E9F08: .word 0x00001770 +_021E9F0C: .word 0x00004A38 +_021E9F10: .word 0x00007530 +_021E9F14: .word 0xFF403B3A +_021E9F18: .word 0x00002710 + + arm_func_start FUN_021E9F1C +FUN_021E9F1C: ; 0x021E9F1C + stmdb sp!, {r4, lr} + movs r4, r0 + ldmeqia sp!, {r4, pc} + bl FUN_02202534 + ldr r0, [r4, #0xb4] + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl FUN_021E26E4 + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _021E9F5C + cmp r0, #1 + beq _021E9F5C + cmp r0, #2 + beq _021E9FB0 + ldmia sp!, {r4, pc} +_021E9F5C: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, pc} +_021E9F70: ; jump table + ldmia sp!, {r4, pc} ; case 0 + b _021E9FA0 ; case 1 + b _021E9FA0 ; case 2 + b _021E9FA0 ; case 3 + b _021E9FA0 ; case 4 + ldmia sp!, {r4, pc} ; case 5 + b _021E9FA0 ; case 6 + ldmia sp!, {r4, pc} ; case 7 + ldmia sp!, {r4, pc} ; case 8 + ldmia sp!, {r4, pc} ; case 9 + ldmia sp!, {r4, pc} ; case 10 + b _021E9FA0 ; case 11 +_021E9FA0: + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + ldmia sp!, {r4, pc} +_021E9FB0: + bl FUN_021E26E4 + ldr r0, [r0, #0x1a0] + cmp r0, #0xb + ldmneia sp!, {r4, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021E9FD0 +FUN_021E9FD0: ; 0x021E9FD0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r5, r2 + mov r6, r0 + mov r4, r3 + mov r2, r1 + mov r3, r5 + mov r0, #3 + mov r1, #0 + bl FUN_021E80C4 + bl FUN_021E26E4 + str r4, [r0, #0x46c] + bl FUN_021E26E4 + ldr r1, [sp, #0x28] + str r1, [r0, #0x470] + bl FUN_021E26E4 + mov r1, #1 + strb r1, [r0, #0x17] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r4, #0x20] + bl FUN_021E26E4 + str r6, [r0, #0xf4] + mov r0, #4 + bl FUN_021E26D0 + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + bne _021EA0A4 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + mov r5, r0 + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + mov r2, r0 + mov r0, #0x14 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + ldr r0, _021EA130 ; =FUN_021E32E4 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r5, #0x2f4] + ldr r1, [r4, #0x2f4] + ldr r2, [r2, #0x2f8] + bl FUN_02203EA4 + str r0, [r6, #0xe4] +_021EA0A4: + bl FUN_021E26E4 + ldr r0, [r0, #0xe4] + cmp r0, #0 + bne _021EA0C8 + mov r0, #5 + bl FUN_021E38E8 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, pc} +_021EA0C8: + ldr r1, _021EA134 ; =0x0220D3F0 + mov r0, #5 + mov r2, #0 + bl FUN_021E1E30 + bl FUN_021E397C + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _021EA110 + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + bl FUN_021EA1E0 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, pc} +_021EA110: + bl FUN_021E26E4 + ldr r0, [r0, #0xf4] + mov r1, #0 + bl FUN_021E6038 + bl FUN_021E61EC + cmp r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EA130: .word FUN_021E32E4 +_021EA134: .word 0x0220D3F0 + + arm_func_start FUN_021EA138 +FUN_021EA138: ; 0x021EA138 + stmdb sp!, {r4, lr} + mov lr, r1 + mov ip, r2 + mov r4, r3 + mov r1, r0 + mov r2, lr + mov r3, ip + mov r0, #2 + bl FUN_021E80C4 + bl FUN_021E26E4 + str r4, [r0, #0x46c] + bl FUN_021E26E4 + ldr r1, [sp, #8] + str r1, [r0, #0x470] + bl FUN_021E26E4 + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + str r0, [r4, #0xf4] + bl FUN_021E26E4 + mov r1, #1 + str r1, [r0, #0x2f0] + bl FUN_021E26E4 + mov r2, #0 + strb r2, [r0, #0xe] + ldr r1, _021EA1DC ; =0x022106DC + mov r0, #0xa + strb r2, [r1, #1] + bl FUN_021E26D0 + bl FUN_021E85D4 + bl FUN_021E397C + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl FUN_021E26E4 + ldr r0, [r0, #0x200] + bl FUN_021EA1E0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EA1DC: .word 0x022106DC + + arm_func_start FUN_021EA1E0 +FUN_021EA1E0: ; 0x021EA1E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov r4, r0 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + cmp r0, #0 + addne sp, sp, #0x2c + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_021E26E4 + str r4, [r0, #0x200] + mov sl, #0 + ldr fp, _021EA344 ; =FUN_021E2E18 + mov r4, sl + mov r5, #1 +_021EA21C: + bl FUN_021E26E4 + mov sb, r0 + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD43C + mov r8, r0 + bl FUN_021E26E4 + ldr r0, [r0, #4] + ldr r0, [r0] + bl FUN_021FD454 + mov r7, r0 + bl FUN_021E26E4 + mov r6, r0 + bl FUN_021E26E4 + ldr r3, [r0, #0x2f8] + mov r1, r8 + str r3, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r3, _021EA348 ; =FUN_021E2E14 + str fp, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, _021EA34C ; =FUN_021E2E10 + mov r2, r7 + str r3, [sp, #0x14] + ldr r3, _021EA350 ; =FUN_021E2D68 + add r0, sb, #0x10 + str r3, [sp, #0x18] + ldr r3, _021EA354 ; =FUN_021E2D60 + str r3, [sp, #0x1c] + ldr r3, _021EA358 ; =FUN_021E2D54 + str r3, [sp, #0x20] + str r4, [sp, #0x24] + ldr r3, [r6, #0x2f4] + bl FUN_022025B0 + movs r6, r0 + beq _021EA2E4 + cmp r6, #3 + bne _021EA2C4 + cmp sl, #4 + bne _021EA2D8 +_021EA2C4: + mov r0, r6 + bl FUN_021E3800 + add sp, sp, #0x2c + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021EA2D8: + add sl, sl, #1 + cmp sl, #5 + blt _021EA21C +_021EA2E4: + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c] + bl FUN_021E26E4 + mov r1, #0 + strh r1, [r0, #0x1a] + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + ldr r1, _021EA35C ; =FUN_021E2D2C + bl FUN_02202568 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + ldr r1, _021EA360 ; =FUN_021E2C78 + bl FUN_02202598 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + ldr r1, _021EA364 ; =FUN_021E2B64 + bl FUN_02202580 + bl FUN_021E26E4 + ldr r0, [r0, #0x10] + bl FUN_02202308 + mov r0, r6 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021EA344: .word FUN_021E2E18 +_021EA348: .word FUN_021E2E14 +_021EA34C: .word FUN_021E2E10 +_021EA350: .word FUN_021E2D68 +_021EA354: .word FUN_021E2D60 +_021EA358: .word FUN_021E2D54 +_021EA35C: .word FUN_021E2D2C +_021EA360: .word FUN_021E2C78 +_021EA364: .word FUN_021E2B64 + + arm_func_start FUN_021EA368 +FUN_021EA368: ; 0x021EA368 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_021E26F4 + bl FUN_021E26E4 + str r6, [r0] + bl FUN_021E26E4 + str r5, [r0, #4] + bl FUN_021E26E4 + str r4, [r0, #8] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x10] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1c] + bl FUN_021E26E4 + mov r1, #0 + strh r1, [r0, #0x1a] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0xe4] + mov r0, r1 + bl FUN_021E26D0 + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0xf] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x19] + bl FUN_021E26E4 + mov r1, #0 + strb r1, [r0, #0x1af] + bl FUN_021E26E4 + mov r1, #0 + add r0, r0, #0x100 + strh r1, [r0, #0xb6] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x1dc] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x200] + bl FUN_021E26E4 + ldr r1, [sp, #0x10] + str r1, [r0, #0x2f4] + bl FUN_021E26E4 + ldr r1, [sp, #0x14] + str r1, [r0, #0x2f8] + bl FUN_021E26E4 + ldr r1, [sp, #0x18] + str r1, [r0, #0x2fc] + bl FUN_021E26E4 + ldr r1, [sp, #0x1c] + str r1, [r0, #0x300] + bl FUN_021E26E4 + add r0, r0, #0x304 + mov r1, #0 + mov r2, #0x40 + bl MI_CpuFill8 + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x344] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x464] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x468] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x474] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x478] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x47c] + bl FUN_021E26E4 + mov r1, #0 + str r1, [r0, #0x480] + bl FUN_021E4164 + ldr r1, _021EA4D0 ; =0x022106DC + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strh r0, [r1, #2] + bl FUN_021E8174 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EA4D0: .word 0x022106DC + + arm_func_start FUN_021EA4D4 +FUN_021EA4D4: ; 0x021EA4D4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl FUN_021E26E4 + cmp r0, #0 + beq _021EA518 + bl FUN_021DF88C + cmp r0, #5 + bne _021EA518 + bl FUN_021E26E4 + ldrb r0, [r0, #0x1a9] + cmp r0, #0 + beq _021EA524 +_021EA518: + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021EA524: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EA530 +FUN_021EA530: ; 0x021EA530 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021EA4D4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + bl FUN_021E4F94 + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EA55C +FUN_021EA55C: ; 0x021EA55C + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021DF760 + bl FUN_021FD444 + ldr r1, _021EA584 ; =0xFFFFFDF9 + add r0, r0, r1 + cmp r0, #0 + movle r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EA584: .word 0xFFFFFDF9 + + arm_func_start FUN_021EA588 +FUN_021EA588: ; 0x021EA588 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl FUN_021EA9AC + ldrb r1, [r0, #0x1e] + strb r1, [r0, #0x1d] + ldrh r1, [r0, #0x22] + cmp r1, #2 + beq _021EA5C4 + cmp r1, #3 + beq _021EA5C4 + cmp r1, #4 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} +_021EA5C4: + mov r0, r5 + mov r2, r4 + bl FUN_021E8C08 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EA5D8 +FUN_021EA5D8: ; 0x021EA5D8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r3, _021EA6D0 ; =0x02210E3C + mov r7, r0 + ldr r4, [r3] + mov r3, #0x30 + mla r4, r7, r3, r4 + mov r6, r1 + mov r5, r2 + bl FUN_021EA974 + cmp r0, #2 + bne _021EA644 + ldr r3, [r4, #0x10] + ldr r0, [r4, #8] + add r1, r3, r5 + cmp r1, r0 + ble _021EA630 + ldr r1, _021EA6D4 ; =0xFFFE82AC + mov r0, #6 + bl FUN_021DD6B0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021EA630: + ldr r1, [r4, #4] + mov r0, r6 + mov r2, r5 + add r1, r1, r3 + bl MI_CpuCopy8 +_021EA644: + ldr r0, [r4, #0x10] + add r0, r0, r5 + str r0, [r4, #0x10] + ldr r2, [r4, #0x18] + ldr r0, [r4, #0x10] + cmp r0, r2 + bne _021EA694 + mov r0, #1 + strb r0, [r4, #0x1d] + mov r1, #0 + str r1, [r4, #0x10] + ldr r0, _021EA6D0 ; =0x02210E3C + str r1, [r4, #0x18] + ldr r0, [r0] + ldr r3, [r0, #0x604] + cmp r3, #0 + beq _021EA694 + ldr r1, [r4, #4] + mov r0, r7 + blx r3 +_021EA694: + ldr r0, _021EA6D0 ; =0x02210E3C + ldr r0, [r0] + ldr r0, [r0, #0x608] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #0x2c] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl OS_GetTick + str r0, [r4, #0x24] + str r1, [r4, #0x28] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EA6D0: .word 0x02210E3C +_021EA6D4: .word 0xFFFE82AC + + arm_func_start FUN_021EA6D8 +FUN_021EA6D8: ; 0x021EA6D8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r4, _021EA79C ; =0x02210E3C + mov r3, #0x30 + ldr r4, [r4] + mov r7, r1 + mla r5, r0, r3, r4 + mov r6, r2 + bl FUN_021EA974 + strb r0, [r5, #0x1e] + mov r0, r7 + bl FUN_021EAD6C + mov r4, r0 + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021EA790 +_021EA718: ; jump table + b _021EA790 ; case 0 + b _021EA72C ; case 1 + b _021EA788 ; case 2 + b _021EA788 ; case 3 + b _021EA788 ; case 4 +_021EA72C: + cmp r6, #8 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + add r1, sp, #0 + mov r0, r7 + mov r2, #8 + bl MI_CpuCopy8 + ldr r1, [sp] + mov r0, #0 + str r1, [r5, #0x18] + str r0, [r5, #0x10] + ldr r0, [r5, #4] + cmp r0, #0 + beq _021EA77C + ldr r1, [r5, #8] + ldr r0, [r5, #0x18] + cmp r1, r0 + movge r0, #2 + strgeb r0, [r5, #0x1d] + bge _021EA790 +_021EA77C: + mov r0, #4 + strb r0, [r5, #0x1d] + b _021EA790 +_021EA788: + mov r0, #3 + strb r0, [r5, #0x1d] +_021EA790: + strh r4, [r5, #0x22] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EA79C: .word 0x02210E3C + + arm_func_start FUN_021EA7A0 +FUN_021EA7A0: ; 0x021EA7A0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r1 + mov r6, r2 + bl FUN_021DF748 + ldr r1, _021EA854 ; =0x02210E3C + mov r4, r0 + ldr r1, [r1] + mov r0, #0x30 + mla r5, r4, r0, r1 + ldr r1, [r5, #4] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r5, #8] + cmp r0, r6 + addlt sp, sp, #4 + ldmltia sp!, {r4, r5, r6, r7, pc} + mov r0, r7 + mov r2, r6 + bl MI_CpuCopy8 + ldr r0, _021EA854 ; =0x02210E3C + ldr r0, [r0] + ldr r3, [r0, #0x604] + cmp r3, #0 + beq _021EA818 + ldr r1, [r5, #4] + mov r0, r4 + mov r2, r6 + blx r3 +_021EA818: + ldr r0, _021EA854 ; =0x02210E3C + ldr r0, [r0] + ldr r0, [r0, #0x608] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r5, #0x2c] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl OS_GetTick + str r0, [r5, #0x24] + str r1, [r5, #0x28] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EA854: .word 0x02210E3C + + arm_func_start FUN_021EA858 +FUN_021EA858: ; 0x021EA858 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + bl FUN_021DF748 + mov r4, r0 + bl FUN_021EA974 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _021EA934 +_021EA87C: ; jump table + b _021EA890 ; case 0 + b _021EA8BC ; case 1 + b _021EA8D0 ; case 2 + b _021EA8E4 ; case 3 + b _021EA8F8 ; case 4 +_021EA890: + mov r0, r6 + bl FUN_021EAD6C + cmp r0, #2 + ldmloia sp!, {r4, r5, r6, pc} + cmp r0, #4 + ldmhiia sp!, {r4, r5, r6, pc} + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl FUN_021EA6D8 + ldmia sp!, {r4, r5, r6, pc} +_021EA8BC: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl FUN_021EA6D8 + ldmia sp!, {r4, r5, r6, pc} +_021EA8D0: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl FUN_021EA5D8 + ldmia sp!, {r4, r5, r6, pc} +_021EA8E4: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl FUN_021EA588 + ldmia sp!, {r4, r5, r6, pc} +_021EA8F8: + mov r0, #0x30 + mul ip, r4, r0 + ldr r0, _021EA944 ; =0x02210E3C + mov r3, #1 + ldr r1, [r0] + mov r2, #0 + add r1, r1, ip + strb r3, [r1, #0x1d] + ldr r1, [r0] + add r1, r1, ip + str r2, [r1, #0x10] + ldr r0, [r0] + add r0, r0, ip + str r2, [r0, #0x18] + ldmia sp!, {r4, r5, r6, pc} +_021EA934: + ldr r1, _021EA948 ; =0xFFFE82B6 + mov r0, #6 + bl FUN_021DD6B0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EA944: .word 0x02210E3C +_021EA948: .word 0xFFFE82B6 + + arm_func_start FUN_021EA94C +FUN_021EA94C: ; 0x021EA94C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_021DF760 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl FUN_021FD498 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EA974 +FUN_021EA974: ; 0x021EA974 + ldr r2, _021EA98C ; =0x02210E3C + mov r1, #0x30 + ldr r2, [r2] + mla r1, r0, r1, r2 + ldrb r0, [r1, #0x1d] + bx lr + .align 2, 0 +_021EA98C: .word 0x02210E3C + + arm_func_start FUN_021EA990 +FUN_021EA990: ; 0x021EA990 + ldr r2, _021EA9A8 ; =0x02210E3C + mov r1, #0x30 + ldr r2, [r2] + mla r1, r0, r1, r2 + ldrb r0, [r1, #0x1c] + bx lr + .align 2, 0 +_021EA9A8: .word 0x02210E3C + + arm_func_start FUN_021EA9AC +FUN_021EA9AC: ; 0x021EA9AC + ldr r2, _021EA9C0 ; =0x02210E3C + mov r1, #0x30 + ldr r2, [r2] + mla r0, r1, r0, r2 + bx lr + .align 2, 0 +_021EA9C0: .word 0x02210E3C + + arm_func_start FUN_021EA9C4 +FUN_021EA9C4: ; 0x021EA9C4 + ldr r0, _021EA9D4 ; =0x02210E3C + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_021EA9D4: .word 0x02210E3C + + arm_func_start FUN_021EA9D8 +FUN_021EA9D8: ; 0x021EA9D8 + ldr r2, _021EAA60 ; =0x02210E3C + ldr r3, [r2] + cmp r3, #0 + bxeq lr + mov r1, #0x30 + mul r1, r0, r1 + add r0, r3, r1 + mov r3, #0 + str r3, [r0, #0xc] + ldr r0, [r2] + add r0, r0, r1 + str r3, [r0, #0x10] + ldr r0, [r2] + add r0, r0, r1 + str r3, [r0, #0x14] + ldr r0, [r2] + add r0, r0, r1 + str r3, [r0, #0x18] + ldr r0, [r2] + add r0, r0, r1 + strb r3, [r0, #0x1c] + ldr r0, [r2] + add r2, r0, #0x1d + ldrb r0, [r2, r1] + add r2, r2, r1 + cmp r0, #0 + movne r0, #1 + strneb r0, [r2] + ldr r0, _021EAA60 ; =0x02210E3C + mov r2, #0 + ldr r0, [r0] + add r0, r0, r1 + strh r2, [r0, #0x22] + bx lr + .align 2, 0 +_021EAA60: .word 0x02210E3C + + arm_func_start FUN_021EAA64 +FUN_021EAA64: ; 0x021EAA64 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r0, _021EAC14 ; =0x02210E3C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #8 + bl FUN_021DF8F4 + mov sb, r0 + cmp sb, #0 + mov r8, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _021EAC14 ; =0x02210E3C + str r8, [sp] + str r8, [sp, #4] + mov fp, #1 +_021EAAAC: + ldr r0, [sp, #8] + ldrb r7, [r0, r8] + mov r0, r7 + bl FUN_021DF8A8 + cmp r0, #0 + beq _021EAB44 + mov r0, r7 + bl FUN_021EA9AC + ldr r1, [r4] + mov r6, r0 + ldr r0, [r1, #0x608] + cmp r0, #0 + beq _021EAB44 + ldr r0, [r6, #0x2c] + cmp r0, #0 + beq _021EAB44 + bl OS_GetTick + mov sl, r1 + ldr r2, [r6, #0x24] + mov r5, r0 + subs r2, r5, r2 + ldr r1, [r6, #0x28] + mov r0, r2, lsl #6 + sbc r1, sl, r1 + mov r1, r1, lsl #6 + orr r1, r1, r2, lsr #26 + ldr r2, _021EAC18 ; =0x000082EA + ldr r3, [sp] + bl _ll_udiv + ldr r1, [r6, #0x2c] + cmp r0, r1 + bls _021EAB44 + ldr r1, [r4] + mov r0, r7 + ldr r1, [r1, #0x608] + blx r1 + str r5, [r6, #0x24] + str sl, [r6, #0x28] +_021EAB44: + bl FUN_021DF95C + cmp r7, r0 + beq _021EAC00 + mov r0, r7 + bl FUN_021EA990 + cmp r0, #1 + bne _021EAC00 + mov r0, r7 + bl FUN_021EA9AC + mov r5, r0 + ldr r0, [r4] + ldr r2, [r5, #0x14] + add r0, r0, #0x600 + ldr r1, [r5, #0xc] + ldrh r6, [r0, #0x10] + sub r0, r2, r1 + cmp r0, r6 + movle r6, r0 + mov r0, r7 + bl FUN_021EA55C + cmp r0, r6 + blt _021EAC00 + ldr r3, [r5] + ldr r1, [r5, #0xc] + mov r0, r7 + mov r2, r6 + add r1, r3, r1 + mov r3, fp + bl FUN_021EA94C + ldr r0, [r5, #0xc] + add r0, r0, r6 + str r0, [r5, #0xc] + ldr r0, [r5, #0x14] + ldr r1, [r5, #0xc] + cmp r1, r0 + bne _021EAC00 + ldr r1, [sp, #4] + strb r1, [r5, #0x1c] + str r1, [r5] + str r1, [r5, #0xc] + str r1, [r5, #0x14] + ldr r1, [r4] + ldr r2, [r1, #0x600] + cmp r2, #0 + beq _021EAC00 + mov r1, r7 + blx r2 +_021EAC00: + add r8, r8, #1 + cmp r8, sb + blt _021EAAAC + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021EAC14: .word 0x02210E3C +_021EAC18: .word 0x000082EA + + arm_func_start FUN_021EAC1C +FUN_021EAC1C: ; 0x021EAC1C + stmdb sp!, {r4, lr} + ldr r2, _021EAC58 ; =0x02210E3C + mov r4, r1 + ldr r1, [r2] + ldr r1, [r1, #0x60c] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021DF748 + ldr r2, _021EAC58 ; =0x02210E3C + mov r1, r0 + ldr r2, [r2] + mov r0, r4 + ldr r2, [r2, #0x60c] + blx r2 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EAC58: .word 0x02210E3C + + arm_func_start FUN_021EAC5C +FUN_021EAC5C: ; 0x021EAC5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, _021EACB0 ; =0x02210E3C + ldr ip, [ip] + cmp ip, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r2, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r3, #0 + beq _021EACA4 + bl FUN_021EA858 + add sp, sp, #4 + ldmfd sp!, {pc} +_021EACA4: + bl FUN_021EA7A0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EACB0: .word 0x02210E3C + + arm_func_start FUN_021EACB4 +FUN_021EACB4: ; 0x021EACB4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021EACEC ; =0x02210E3C + ldr r2, _021EACF0 ; =0x00000614 + mov r1, #0 + str r0, [r3] + bl MI_CpuFill8 + ldr r0, _021EACEC ; =0x02210E3C + ldr r1, _021EACF4 ; =0x000005B9 + ldr r0, [r0] + add r0, r0, #0x600 + strh r1, [r0, #0x10] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EACEC: .word 0x02210E3C +_021EACF0: .word 0x00000614 +_021EACF4: .word 0x000005B9 + + arm_func_start FUN_021EACF8 +FUN_021EACF8: ; 0x021EACF8 + stmdb sp!, {r4, lr} + ldr r2, _021EAD40 ; =0x02210E3C + ldr r3, [r2] + cmp r3, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #0x30 + mul r4, r0, r2 + add r0, r3, r4 + str r1, [r0, #0x2c] + bl OS_GetTick + ldr r2, _021EAD40 ; =0x02210E3C + ldr r2, [r2] + add r2, r2, r4 + str r0, [r2, #0x24] + str r1, [r2, #0x28] + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EAD40: .word 0x02210E3C + + arm_func_start FUN_021EAD44 +FUN_021EAD44: ; 0x021EAD44 + cmp r0, #2 + beq _021EAD5C + cmp r0, #3 + beq _021EAD5C + cmp r0, #4 + bne _021EAD64 +_021EAD5C: + mov r0, #0xc + bx lr +_021EAD64: + mov r0, #8 + bx lr + + arm_func_start FUN_021EAD6C +FUN_021EAD6C: ; 0x021EAD6C + stmdb sp!, {lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r2, #8 + bl MI_CpuCopy8 + ldr r1, _021EADA4 ; =0x0220D4BC + add r0, sp, #6 + mov r2, #2 + bl memcmp + cmp r0, #0 + ldreqh r0, [sp, #4] + movne r0, #0 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021EADA4: .word 0x0220D4BC + + arm_func_start FUN_021EADA8 +FUN_021EADA8: ; 0x021EADA8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + ldr r1, _021EADD4 ; =0x0220D4BC + add r0, r6, #6 + mov r2, #2 + bl strncpy + strh r5, [r6, #4] + str r4, [r6] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EADD4: .word 0x0220D4BC + + arm_func_start FUN_021EADD8 +FUN_021EADD8: ; 0x021EADD8 + ldr r1, _021EADF4 ; =0x02210E3C + ldr r1, [r1] + cmp r1, #0 + moveq r0, #0 + strne r0, [r1, #0x608] + movne r0, #1 + bx lr + .align 2, 0 +_021EADF4: .word 0x02210E3C + + arm_func_start FUN_021EADF8 +FUN_021EADF8: ; 0x021EADF8 + ldr r1, _021EAE14 ; =0x02210E3C + ldr r1, [r1] + cmp r1, #0 + moveq r0, #0 + strne r0, [r1, #0x604] + movne r0, #1 + bx lr + .align 2, 0 +_021EAE14: .word 0x02210E3C + + arm_func_start FUN_021EAE18 +FUN_021EAE18: ; 0x021EAE18 + ldr r1, _021EAE34 ; =0x02210E3C + ldr r1, [r1] + cmp r1, #0 + moveq r0, #0 + strne r0, [r1, #0x600] + movne r0, #1 + bx lr + .align 2, 0 +_021EAE34: .word 0x02210E3C + + arm_func_start FUN_021EAE38 +FUN_021EAE38: ; 0x021EAE38 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_021EA9AC + mov r4, r0 + mov r0, r7 + bl FUN_021EA974 + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + str r6, [r4, #4] + str r5, [r4, #8] + mov r0, #1 + strb r0, [r4, #0x1d] + mov r1, #0 + str r1, [r4, #0x10] + str r1, [r4, #0x18] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021EAE90 +FUN_021EAE90: ; 0x021EAE90 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r6, r1 + mov r4, r2 + bl FUN_021DD6D4 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl FUN_021DF8A8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021EAF1C ; =0x02210E3C + ldr r0, [r0] + add r0, r0, #0x600 + ldrh r0, [r0, #0x10] + cmp r4, r0 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} + mov r0, r5 + mov r1, r6 + mov r2, r4 + mov r3, #0 + bl FUN_021EA94C + ldr r0, _021EAF1C ; =0x02210E3C + ldr r0, [r0] + ldr r2, [r0, #0x600] + cmp r2, #0 + beq _021EAF14 + mov r0, r4 + mov r1, r5 + blx r2 +_021EAF14: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EAF1C: .word 0x02210E3C + + arm_func_start FUN_021EAF20 +FUN_021EAF20: ; 0x021EAF20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl FUN_021EA9AC + mov r4, r0 + mov r0, r7 + mov r1, r8 + bl FUN_021EB06C + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, #1 + strb r0, [r4, #0x1c] + str r6, [r4] + mov r0, #0 + str r0, [r4, #0xc] + add r0, sp, #0 + mov r1, r8 + mov r2, r5 + str r5, [r4, #0x14] + bl FUN_021EADA8 + add r1, sp, #0 + mov r0, r7 + mov r2, #8 + mov r3, #1 + bl FUN_021EA94C + ldr r0, _021EB040 ; =0x02210E3C + ldr r0, [r0] + add r0, r0, #0x600 + ldrh sb, [r0, #0x10] + mov r0, r7 + cmp r5, sb + movle sb, r5 + bl FUN_021EA55C + cmp sb, r0 + addgt sp, sp, #0xc + movgt r0, #1 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + mov r1, r6 + mov r2, sb + mov r3, #1 + bl FUN_021EA94C + ldr r0, [r4, #0xc] + add r0, r0, sb + str r0, [r4, #0xc] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0xc] + cmp r1, r0 + bne _021EB034 + mov r2, #0 + strb r2, [r4, #0x1c] + str r2, [r4] + str r2, [r4, #0xc] + ldr r1, _021EB040 ; =0x02210E3C + str r2, [r4, #0x14] + ldr r1, [r1] + ldr r2, [r1, #0x600] + cmp r2, #0 + beq _021EB034 + cmp r8, #1 + bne _021EB034 + mov r1, r7 + blx r2 +_021EB034: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021EB040: .word 0x02210E3C + + arm_func_start FUN_021EB044 +FUN_021EB044: ; 0x021EB044 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, r1 + mov r3, r2 + mov r1, r0 + mov r2, ip + mov r0, #1 + bl FUN_021EAF20 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EB06C +FUN_021EB06C: ; 0x021EB06C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + mov r5, r1 + bl FUN_021DD6D4 + cmp r0, #0 + bne _021EB0B0 + cmp r5, #1 + bne _021EB0A0 + mov r0, r4 + bl FUN_021DF8A8 + cmp r0, #0 + beq _021EB0B0 +_021EB0A0: + mov r0, r4 + bl FUN_021DF5F0 + cmp r0, #0 + bne _021EB0BC +_021EB0B0: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021EB0BC: + mov r0, r4 + bl FUN_021EA990 + cmp r0, #1 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r4 + bl FUN_021EA55C + mov r4, r0 + mov r0, r5 + bl FUN_021EAD44 + cmp r4, r0 + movge r0, #1 + movlt r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EB0FC +FUN_021EB0FC: ; 0x021EB0FC + ldr ip, _021EB108 ; =FUN_021EB06C + mov r1, #1 + bx ip + .align 2, 0 +_021EB108: .word FUN_021EB06C + + arm_func_start FUN_021EB10C +FUN_021EB10C: ; 0x021EB10C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r0, _021EB178 ; =0x02210E40 + ldr r7, [r0] + cmp r7, #0 + beq _021EB164 + mov r5, #4 + mov r4, #0 +_021EB12C: + mov r6, r7 + ldr r1, [r6, #0x10] + ldr r7, [r7, #0x18] + cmp r1, #0 + beq _021EB14C + mov r0, r5 + mov r2, r4 + bl FUN_021DD904 +_021EB14C: + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl FUN_021DD904 + cmp r7, #0 + bne _021EB12C +_021EB164: + ldr r0, _021EB178 ; =0x02210E40 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EB178: .word 0x02210E40 + + arm_func_start FUN_021EB17C +FUN_021EB17C: ; 0x021EB17C + stmdb sp!, {r4, lr} + ldr r1, _021EB1FC ; =0x02210E40 + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + cmp r1, r0 + bne _021EB1B4 + mov r0, #4 + mov r2, #0 + ldr r4, [r1, #0x18] + bl FUN_021DD904 + ldr r0, _021EB1FC ; =0x02210E40 + str r4, [r0] + ldmia sp!, {r4, pc} +_021EB1B4: + ldr r2, [r1, #0x18] + cmp r2, #0 + ldmeqia sp!, {r4, pc} +_021EB1C0: + cmp r2, r0 + movne r1, r2 + bne _021EB1EC + ldr ip, [r1, #0x18] + mov r0, #4 + ldr r3, [ip, #0x18] + mov r2, #0 + str r3, [r1, #0x18] + mov r1, ip + bl FUN_021DD904 + ldmia sp!, {r4, pc} +_021EB1EC: + ldr r2, [r2, #0x18] + cmp r2, #0 + bne _021EB1C0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EB1FC: .word 0x02210E40 + + arm_func_start FUN_021EB200 +FUN_021EB200: ; 0x021EB200 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #4 + mov r1, #0x1c + bl FUN_021DD944 + movs ip, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldmia r4, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + mov r0, #0 + str r0, [ip, #0x18] + ldr r1, _021EB258 ; =0x02210E40 + str r0, [ip, #0x10] + ldr r0, [r1] + cmp r0, #0 + moveq r0, ip + streq ip, [r1] + strne r0, [ip, #0x18] + movne r0, ip + strne ip, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_021EB258: .word 0x02210E40 + + arm_func_start FUN_021EB25C +FUN_021EB25C: ; 0x021EB25C + stmdb sp!, {r4, lr} + movs r4, r0 + mov r0, #7 + ldr r1, _021EB39C ; =0xFFFE8130 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r2, r4, #7 + cmp r2, #0x1a + addls pc, pc, r2, lsl #2 + b _021EB390 +_021EB284: ; jump table + b _021EB2F0 ; case 0 + b _021EB2F8 ; case 1 + b _021EB304 ; case 2 + b _021EB30C ; case 3 + b _021EB30C ; case 4 + b _021EB30C ; case 5 + b _021EB314 ; case 6 + b _021EB390 ; case 7 + b _021EB320 ; case 8 + b _021EB32C ; case 9 + b _021EB334 ; case 10 + b _021EB340 ; case 11 + b _021EB348 ; case 12 + b _021EB350 ; case 13 + b _021EB358 ; case 14 + b _021EB360 ; case 15 + b _021EB360 ; case 16 + b _021EB360 ; case 17 + b _021EB350 ; case 18 + b _021EB350 ; case 19 + b _021EB36C ; case 20 + b _021EB36C ; case 21 + b _021EB374 ; case 22 + b _021EB380 ; case 23 + b _021EB388 ; case 24 + b _021EB390 ; case 25 + b _021EB320 ; case 26 +_021EB2F0: + sub r1, r1, #0x320 + b _021EB390 +_021EB2F8: + ldr r2, _021EB3A0 ; =0xFFFFFCD6 + add r1, r1, r2 + b _021EB390 +_021EB304: + sub r1, r1, #0x348 + b _021EB390 +_021EB30C: + sub r1, r1, #0x334 + b _021EB390 +_021EB314: + ldr r2, _021EB3A4 ; =0xFFFFFCC2 + add r1, r1, r2 + b _021EB390 +_021EB320: + sub r1, r1, #1 + mov r0, #9 + b _021EB390 +_021EB32C: + sub r1, r1, #0x348 + b _021EB390 +_021EB334: + ldr r2, _021EB3A8 ; =0xFFFFFCAE + add r1, r1, r2 + b _021EB390 +_021EB340: + sub r1, r1, #0x1e + b _021EB390 +_021EB348: + sub r1, r1, #0x32 + b _021EB390 +_021EB350: + sub r1, r1, #0x14 + b _021EB390 +_021EB358: + sub r1, r1, #0x35c + b _021EB390 +_021EB360: + ldr r2, _021EB3AC ; =0xFFFFFC9A + add r1, r1, r2 + b _021EB390 +_021EB36C: + sub r1, r1, #0x370 + b _021EB390 +_021EB374: + ldr r2, _021EB3B0 ; =0xFFFFFC86 + add r1, r1, r2 + b _021EB390 +_021EB380: + sub r1, r1, #0x384 + b _021EB390 +_021EB388: + ldr r2, _021EB3B4 ; =0xFFFFFC72 + add r1, r1, r2 +_021EB390: + bl FUN_021DD6B0 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EB39C: .word 0xFFFE8130 +_021EB3A0: .word 0xFFFFFCD6 +_021EB3A4: .word 0xFFFFFCC2 +_021EB3A8: .word 0xFFFFFCAE +_021EB3AC: .word 0xFFFFFC9A +_021EB3B0: .word 0xFFFFFC86 +_021EB3B4: .word 0xFFFFFC72 + + arm_func_start FUN_021EB3B8 +FUN_021EB3B8: ; 0x021EB3B8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r7, r1 + mov r6, r2 + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #0x14 + mvnne r0, #7 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r2, #0 + mov r1, #1 + add r0, sp, #0 + str r6, [sp] + str r7, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + bl FUN_021EB200 + movs r4, r0 + bne _021EB430 + mvn r0, #4 + bl FUN_021EB25C + mov r0, #0 + mov r1, r0 + mov r3, r6 + mvn r2, #4 + blx r7 + add sp, sp, #0x14 + mvn r0, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021EB430: + ldr r2, _021EB47C ; =FUN_021EB480 + mov r0, r5 + mov r3, r4 + mov r1, #0 + bl FUN_02213D80 + movs r5, r0 + bpl _021EB46C + bl FUN_021EB25C + mov r0, #0 + mov r1, r0 + mov r2, r5 + mov r3, r6 + blx r7 + mov r0, r4 + bl FUN_021EB17C +_021EB46C: + mov r0, r5 + str r5, [r4, #0x14] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EB47C: .word FUN_021EB480 + + arm_func_start FUN_021EB480 +FUN_021EB480: ; 0x021EB480 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r6, [sp, #0x18] + mov r7, r1 + ldr r5, [r6, #4] + ldr r4, [r6, #0xc] + cmp r5, #0 + beq _021EB4DC + cmp r7, #0 + bne _021EB4C0 + mov r1, r3 + mov r0, r2 + ldr r3, [r6] + mov r2, r7 + blx r5 + b _021EB4DC +_021EB4C0: + mov r0, r7 + bl FUN_021EB25C + mov r0, #0 + ldr r3, [r6] + mov r1, r0 + mov r2, r7 + blx r5 +_021EB4DC: + cmp r7, #0 + bne _021EB4EC + cmp r4, #1 + bne _021EB508 +_021EB4EC: + ldr r1, [r6, #0x10] + cmp r1, #0 + moveq r4, #1 + beq _021EB508 + mov r0, #4 + mov r2, #0 + bl FUN_021DD904 +_021EB508: + mov r0, r6 + bl FUN_021EB17C + cmp r4, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021EB524 +FUN_021EB524: ; 0x021EB524 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl FUN_02213B08 + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021EB598 ; =0x02210E44 + ldr r0, [r0] + cmp r0, #0 + addle sp, sp, #4 + movle r0, #1 + ldmleia sp!, {pc} + bl FUN_02213DBC + ldr r0, _021EB598 ; =0x02210E44 + ldr r1, [r0] + subs r1, r1, #1 + str r1, [r0] + bne _021EB58C + bl FUN_021EB10C +_021EB58C: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EB598: .word 0x02210E44 + + arm_func_start FUN_021EB59C +FUN_021EB59C: ; 0x021EB59C + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_02213E24 + ldr r1, _021EB5C4 ; =0x02210E44 + mov r0, #1 + ldr r2, [r1] + add r2, r2, #1 + str r2, [r1] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EB5C4: .word 0x02210E44 + + arm_func_start FUN_021EB5C8 +FUN_021EB5C8: ; 0x021EB5C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r1, _021EB660 ; =0x02210E48 + ldr r0, _021EB664 ; =0x00000474 + ldr sl, [r1] + mov r4, #0xc0 + ldrb r7, [sl, #0xd13] + add r5, sl, r0 + ldrb r0, [sl, #0xd0d] + mla sb, r7, r4, r5 + cmp r0, #6 + movhs r0, #1 + ldmhsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r6, [sl, #0xd12] + mov r8, #0 + cmp r6, #0 + bls _021EB658 +_021EB608: + cmp r8, r7 + beq _021EB648 + add r0, sl, r8, lsl #2 + ldrb r0, [r0, #0x445] + cmp r0, #6 + bhs _021EB648 + mul r1, r8, r4 + add r0, sl, r1 + add r0, r0, #0x400 + ldrh r2, [r0, #0x7a] + mov r0, sb + add r1, r5, r1 + bl strncmp + cmp r0, #0 + moveq r0, #2 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021EB648: + add r0, r8, #1 + and r8, r0, #0xff + cmp r8, r6 + blo _021EB608 +_021EB658: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021EB660: .word 0x02210E48 +_021EB664: .word 0x00000474 + + arm_func_start FUN_021EB668 +FUN_021EB668: ; 0x021EB668 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021EB6A0 ; =0x02210E54 + mov r0, #8 + ldr r1, [r1] + mov r2, #0xc + bl FUN_021EB910 + ldr r0, _021EB6A4 ; =0x02210E48 + ldr r2, _021EB6A8 ; =0x00000D18 + ldr r1, [r0] + mov r0, #0x10 + bl FUN_021EB910 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EB6A0: .word 0x02210E54 +_021EB6A4: .word 0x02210E48 +_021EB6A8: .word 0x00000D18 + + arm_func_start FUN_021EB6AC +FUN_021EB6AC: ; 0x021EB6AC + cmp r0, #2 + subhi r0, r0, #3 + andhi r0, r0, #0xff + bx lr + + arm_func_start FUN_021EB6BC +FUN_021EB6BC: ; 0x021EB6BC + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021EB6AC + ldr r1, _021EB6DC ; =0x02210E58 + ldr r1, [r1] + strb r0, [r1, #0x17] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EB6DC: .word 0x02210E58 + + arm_func_start FUN_021EB6E0 +FUN_021EB6E0: ; 0x021EB6E0 + ldr r0, _021EB6F0 ; =0x02210E58 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 +_021EB6F0: .word 0x02210E58 + + arm_func_start FUN_021EB6F4 +FUN_021EB6F4: ; 0x021EB6F4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl FUN_021EB798 + mov r4, r0 + str r5, [r4, #0xc] + bl FUN_021EB720 + strb r0, [r4, #0xa] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EB720 +FUN_021EB720: ; 0x021EB720 + ldr r0, _021EB730 ; =0x02210E58 + ldr r0, [r0] + ldrb r0, [r0, #9] + bx lr + .align 2, 0 +_021EB730: .word 0x02210E58 + + arm_func_start FUN_021EB734 +FUN_021EB734: ; 0x021EB734 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + bl FUN_021EB798 + mov r5, r0 + mov r0, #0x10 + bl FUN_021EB798 + mov r4, r0 + strb r6, [r5, #9] + cmp r6, #0x10 + ldmhsia sp!, {r4, r5, r6, pc} + ldrb r0, [r5, #0x16] + cmp r6, r0 + ldmlsia sp!, {r4, r5, r6, pc} + strb r6, [r5, #0x16] + cmp r6, #7 + ldmlsia sp!, {r4, r5, r6, pc} + ldrb r0, [r4, #0xd0d] + bl FUN_021EB6AC + strb r0, [r5, #0x15] + ldrb r0, [r4, #0xd13] + add r0, r4, r0, lsl #2 + ldrb r0, [r0, #0x444] + strb r0, [r5, #0x14] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EB798 +FUN_021EB798: ; 0x021EB798 + ands r1, r0, #1 + ldrne r0, _021EB7EC ; =0x02210E58 + ldrne r0, [r0] + bxne lr + ands r1, r0, #2 + ldrne r0, _021EB7F0 ; =0x02210E4C + ldrne r0, [r0] + bxne lr + ands r1, r0, #4 + ldrne r0, _021EB7F4 ; =0x02210E50 + ldrne r0, [r0] + bxne lr + ands r1, r0, #8 + ldrne r0, _021EB7F8 ; =0x02210E54 + ldrne r0, [r0] + bxne lr + ands r0, r0, #0x10 + ldrne r0, _021EB7FC ; =0x02210E48 + ldrne r0, [r0] + moveq r0, #0 + bx lr + .align 2, 0 +_021EB7EC: .word 0x02210E58 +_021EB7F0: .word 0x02210E4C +_021EB7F4: .word 0x02210E50 +_021EB7F8: .word 0x02210E54 +_021EB7FC: .word 0x02210E48 + + arm_func_start FUN_021EB800 +FUN_021EB800: ; 0x021EB800 + stmdb sp!, {r4, lr} + mov r0, #1 + bl FUN_021EB798 + mov r4, r0 + ldrb r0, [r4, #8] + ands r0, r0, #0x10 + beq _021EB844 + mov r0, #0x10 + bl FUN_021EB798 + ldrb r3, [r4, #8] + mov r1, r0 + ldr r2, _021EB90C ; =0x00000D18 + bic r0, r3, #0x10 + strb r0, [r4, #8] + ldr r3, [r4, #4] + mov r0, #0x10 + blx r3 +_021EB844: + ldrb r0, [r4, #8] + ands r0, r0, #8 + beq _021EB878 + mov r0, #8 + bl FUN_021EB798 + ldrb r2, [r4, #8] + mov r1, r0 + mov r0, #8 + bic r2, r2, #8 + strb r2, [r4, #8] + ldr r3, [r4, #4] + mov r2, #0xc + blx r3 +_021EB878: + ldrb r0, [r4, #8] + ands r0, r0, #4 + beq _021EB8AC + mov r0, #4 + bl FUN_021EB798 + ldrb r2, [r4, #8] + mov r1, r0 + mov r0, #4 + bic r2, r2, #4 + strb r2, [r4, #8] + ldr r3, [r4, #4] + mov r2, #0x58 + blx r3 +_021EB8AC: + ldrb r0, [r4, #8] + ands r0, r0, #2 + beq _021EB8E0 + mov r0, #2 + bl FUN_021EB798 + ldrb r2, [r4, #8] + mov r1, r0 + mov r0, #2 + bic r2, r2, #2 + strb r2, [r4, #8] + ldr r3, [r4, #4] + mov r2, #0x2300 + blx r3 +_021EB8E0: + ldrb r0, [r4, #8] + ands r1, r0, #1 + ldmeqia sp!, {r4, pc} + bic r0, r0, #1 + strb r0, [r4, #8] + ldr r3, [r4, #4] + mov r1, r4 + mov r0, #1 + mov r2, #0x18 + blx r3 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EB90C: .word 0x00000D18 + + arm_func_start FUN_021EB910 +FUN_021EB910: ; 0x021EB910 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, r1 + mov r4, r2 + bl FUN_021EB798 + ldrb r2, [r0, #8] + ands r1, r2, r6 + ldmeqia sp!, {r4, r5, r6, pc} + mvn r1, r6 + and r1, r2, r1 + strb r1, [r0, #8] + ldr r3, [r0, #4] + mov r0, r6 + mov r1, r5 + mov r2, r4 + blx r3 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EB958 +FUN_021EB958: ; 0x021EB958 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl FUN_021EB798 + ldrb r1, [r0, #8] + ands r2, r1, r5 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + orr r1, r1, r5 + strb r1, [r0, #8] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + blx r2 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EB9A4 +FUN_021EB9A4: ; 0x021EB9A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #0x10 + mov r4, r1 + bl FUN_021EB798 + mov r1, r0 + mov r0, r4 + add r1, r1, r5, lsl #8 + mov r2, #0xf0 + bl MIi_CpuCopy32 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EB9D8 +FUN_021EB9D8: ; 0x021EB9D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021EB720 + strb r0, [sp] + ldrb r0, [sp] + cmp r0, #0 + beq _021EB9FC + cmp r0, #0x12 + bne _021EBA0C +_021EB9FC: + bl FUN_021EB800 + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021EBA0C: + add r0, sp, #0 + bl FUN_021ECB38 + ldrb r0, [sp] + bl FUN_021EB734 + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EBA28 +FUN_021EBA28: ; 0x021EBA28 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + bl FUN_021EB798 + mov r5, r0 + bl FUN_021EB720 + cmp r0, #0xa + blo _021EBAB0 + cmp r0, #0x10 + bhi _021EBAB0 + bl FUN_020A8850 + mov r4, r0 + mov r1, #6 + bl DC_InvalidateRange + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r4 + mov r1, r6 + mov r2, #6 + bl MI_CpuCopy8 + ldrb r0, [r5, #0x17] + cmp r0, #4 + bne _021EBAA8 + mov r0, #0 + bl FUN_020A87E0 + mov r4, r0 + mov r1, #0x20 + bl DC_InvalidateRange + mov r0, r4 + add r1, r6, #6 + bl FUN_021EE5F4 +_021EBAA8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021EBAB0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EBAB8 +FUN_021EBAB8: ; 0x021EBAB8 + stmdb sp!, {r4, lr} + mov r4, #0xff + bl FUN_021EB720 + cmp r0, #0xa + blo _021EBADC + cmp r0, #0x10 + ldrls r0, _021EBAE4 ; =0x02210E58 + ldrls r0, [r0] + ldrlsb r4, [r0, #0x17] +_021EBADC: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EBAE4: .word 0x02210E58 + + arm_func_start FUN_021EBAE8 +FUN_021EBAE8: ; 0x021EBAE8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021EB720 + cmp r0, #1 + addls sp, sp, #4 + movls r0, #0 + ldmlsia sp!, {pc} + cmp r0, #7 + addlo sp, sp, #4 + movlo r0, #1 + ldmloia sp!, {pc} + cmp r0, #9 + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {pc} + cmp r0, #0xa + addlo sp, sp, #4 + movlo r0, #2 + ldmloia sp!, {pc} + cmp r0, #0xb + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {pc} + cmp r0, #0x10 + addlo sp, sp, #4 + movlo r0, #3 + ldmloia sp!, {pc} + cmp r0, #0x10 + addeq sp, sp, #4 + moveq r0, #5 + ldmeqia sp!, {pc} + cmp r0, #0x11 + addeq sp, sp, #4 + moveq r0, #4 + ldmeqia sp!, {pc} + bl FUN_021ECD54 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EBB80 +FUN_021EBB80: ; 0x021EBB80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl FUN_021EB720 + mov r5, r0 + cmp r5, #1 + bne _021EBBA4 + bl FUN_021EDB44 + mov r5, r0 + b _021EBC18 +_021EBBA4: + cmp r5, #7 + bhs _021EBBCC + bl OS_DisableInterrupts + mov r4, r0 + bl FUN_021EDA70 + mov r5, r0 + bl FUN_021EB734 + mov r0, r4 + bl OS_RestoreInterrupts + b _021EBC18 +_021EBBCC: + cmp r5, #9 + bhs _021EBBE0 + bl FUN_021ECA08 + mov r5, r0 + b _021EBC18 +_021EBBE0: + cmp r5, #0xa + bhs _021EBBF4 + bl FUN_021ED218 + mov r5, r0 + b _021EBC18 +_021EBBF4: + cmp r5, #0x10 + bhs _021EBC08 + bl FUN_021EDFBC + mov r5, r0 + b _021EBC18 +_021EBC08: + cmp r5, #0x11 + bne _021EBC18 + bl FUN_021ECDA8 + mov r5, r0 +_021EBC18: + mov r0, r5 + bl FUN_021EB734 + cmp r5, #0x10 + bne _021EBC40 + bl FUN_021EB5C8 + mov r4, r0 + bl FUN_021EB668 + add sp, sp, #4 + mov r0, r4 + ldmia sp!, {r4, r5, pc} +_021EBC40: + cmp r5, #0x12 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + bl FUN_021EB668 + mvn r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EBC60 +FUN_021EBC60: ; 0x021EBC60 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r2, [r4] + mov r0, #1 + mov r1, #0x18 + blx r2 + mov r1, r0 + ldr r3, _021EBE08 ; =0x02210E58 + mov r0, #0 + mov r2, #0x18 + str r1, [r3] + bl MIi_CpuClear32 + ldr r0, _021EBE08 ; =0x02210E58 + ldr r1, [r4] + ldr r3, [r0] + mov r2, #1 + str r1, [r3] + ldr r0, [r4, #4] + ldr r1, _021EBE0C ; =0x00000D18 + str r0, [r3, #4] + strb r2, [r3, #9] + strb r2, [r3, #0x16] + mov r0, #0x10 + strb r2, [r3, #8] + bl FUN_021EB958 + ldr r2, _021EBE10 ; =0x02210E48 + mov r1, #0x2300 + str r0, [r2] + mov r0, #2 + bl FUN_021EB958 + ldr r2, _021EBE14 ; =0x02210E4C + mov r1, #0x58 + str r0, [r2] + mov r0, #4 + bl FUN_021EB958 + ldr r2, _021EBE18 ; =0x02210E50 + mov r1, #0xc + str r0, [r2] + mov r0, #8 + bl FUN_021EB958 + ldr r2, _021EBE1C ; =0x02210E54 + ldr r1, _021EBE10 ; =0x02210E48 + str r0, [r2] + ldr r1, [r1] + mov r0, #0 + ldr r2, _021EBE0C ; =0x00000D18 + bl MIi_CpuClear32 + mov r0, #0 + ldr r1, _021EBE14 ; =0x02210E4C + mov r2, #0x2300 + ldr r1, [r1] + bl MIi_CpuClear32 + mov r0, #0 + ldr r1, _021EBE18 ; =0x02210E50 + mov r2, #0x58 + ldr r1, [r1] + bl MIi_CpuClear32 + mov r0, #0 + ldr r1, _021EBE1C ; =0x02210E54 + mov r2, #0xc + ldr r1, [r1] + bl MIi_CpuClear32 + ldr r0, _021EBE10 ; =0x02210E48 + ldrb r1, [r4, #8] + ldr r0, [r0] + strb r1, [r0, #0xd0a] + ldrb r2, [r0, #0xd0b] + ldrb r1, [r4, #9] + bic r2, r2, #3 + and r1, r1, #3 + orr r1, r2, r1 + strb r1, [r0, #0xd0b] + ldr r1, _021EBE1C ; =0x02210E54 + ldr r2, [r4] + ldr r3, [r1] + mov r1, #0 + str r2, [r3] + ldr r2, [r4, #4] + str r2, [r3, #4] + str r1, [r3, #8] + ldrb r2, [r0, #0xd0c] + ldrb r1, [r4, #0xa] + bic r2, r2, #0xf + and r1, r1, #0xf + orr r1, r2, r1 + strb r1, [r0, #0xd0c] + ldrb r2, [r0, #0xd0c] + ldrb r1, [r4, #0xb] + bic r2, r2, #0x30 + and r1, r1, #3 + orr r1, r2, r1, lsl #4 + strb r1, [r0, #0xd0c] + bl FUN_02095FA8 + ldr r0, _021EBE14 ; =0x02210E4C + mov r1, #0x2300 + ldr r0, [r0] + bl FUN_020A7E80 + cmp r0, #1 + beq _021EBDF4 + cmp r0, #4 + blt _021EBE00 +_021EBDF4: + bl FUN_021EB800 + mov r0, #0 + ldmia sp!, {r4, pc} +_021EBE00: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EBE08: .word 0x02210E58 +_021EBE0C: .word 0x00000D18 +_021EBE10: .word 0x02210E48 +_021EBE14: .word 0x02210E4C +_021EBE18: .word 0x02210E50 +_021EBE1C: .word 0x02210E54 + + arm_func_start FUN_021EBE20 +FUN_021EBE20: ; 0x021EBE20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xcc + ldr r2, _021EBF1C ; =0x00000444 + mov sl, r0 + add r0, r1, #0x470 + add r8, r1, r2 + str r0, [sp] + subs sb, sl, #1 + bmi _021EBEF0 + mov r4, #0xc0 + mla r6, sb, r4, r0 + add r7, r8, sb, lsl #2 + mov r5, #4 +_021EBE54: + add r1, r8, sl, lsl #2 + add r0, r8, sb, lsl #2 + ldrb r1, [r1, #2] + ldrb r0, [r0, #2] + cmp r1, r0 + blo _021EBEF0 + mov r0, r7 + add r1, sp, #4 + mov r2, r5 + bl MIi_CpuCopy32 + add fp, r8, sl, lsl #2 + mov r0, fp + mov r1, r7 + mov r2, r5 + bl MIi_CpuCopy32 + mov r1, fp + add r0, sp, #4 + mov r2, r5 + bl MIi_CpuCopy32 + mov r0, r6 + add r1, sp, #8 + mov r2, r4 + bl MIi_CpuCopy32 + ldr r0, [sp] + mov r1, #0xc0 + mla fp, sl, r1, r0 + mov r0, fp + mov r1, r6 + mov r2, r4 + bl MIi_CpuCopy32 + mov r1, fp + add r0, sp, #8 + mov r2, r4 + bl MIi_CpuCopy32 + mov sl, sb + sub r7, r7, #4 + sub r6, r6, #0xc0 + subs sb, sb, #1 + bpl _021EBE54 +_021EBEF0: + add r1, r8, #0x28 + mov r0, #0 + mov r2, #4 + bl MIi_CpuClear32 + ldr r0, [sp] + mov r2, #0xc0 + add r1, r0, #0x780 + mov r0, #0 + bl MIi_CpuClear32 + add sp, sp, #0xcc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021EBF1C: .word 0x00000444 + + arm_func_start FUN_021EBF20 +FUN_021EBF20: ; 0x021EBF20 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldrh r4, [r1, #2] + ldr lr, _021EBF9C ; =0x00000444 + add r5, r3, #0x470 + mov ip, #0xc0 + add r3, r3, lr + mla ip, r0, ip, r5 + add r0, r3, r0, lsl #2 + ands r3, r4, #2 + movne r3, r4, asr #2 + andne r4, r3, #0xff + moveq r3, r4, asr #2 + addeq r3, r3, #0x19 + andeq r4, r3, #0xff + ldrb r3, [r0, #2] + and lr, r4, #0xff + cmp lr, r3 + bls _021EBF84 + strb lr, [r0, #2] + ldrb r3, [r0, #3] + and r2, r2, #0x7f + bic r3, r3, #0x7f + orr r2, r3, r2 + strb r2, [r0, #3] +_021EBF84: + mov r0, r1 + mov r1, ip + mov r2, #0xc0 + bl MIi_CpuCopy32 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EBF9C: .word 0x00000444 + + arm_func_start FUN_021EBFA0 +FUN_021EBFA0: ; 0x021EBFA0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr lr, _021EC004 ; =0x0000046C + add ip, r3, #0xbf0 + add r3, r3, lr + strb r0, [r3, #1] + ldrh lr, [r1, #2] + and r2, r2, #0x7f + ands r0, lr, #2 + movne r0, lr, asr #2 + andne r0, r0, #0xff + moveq r0, lr, asr #2 + addeq r0, r0, #0x19 + andeq r0, r0, #0xff + strb r0, [r3, #2] + ldrb lr, [r3, #3] + mov r0, r1 + bic r1, lr, #0x7f + orr lr, r1, r2 + mov r1, ip + mov r2, #0xc0 + strb lr, [r3, #3] + bl MIi_CpuCopy32 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EC004: .word 0x0000046C + + arm_func_start FUN_021EC008 +FUN_021EC008: ; 0x021EC008 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r3 + ldrb r3, [r6, #0xd12] + mvn r4, #0 + mov r5, #0 + cmp r3, #0 + ble _021EC0A0 + ldr lr, _021EC0E4 ; =0x00000474 + ldrb ip, [r1, #4] + add lr, r6, lr +_021EC030: + ldrb r7, [lr] + cmp ip, r7 + bne _021EC090 + ldrb r8, [r1, #5] + ldrb r7, [lr, #1] + cmp r8, r7 + bne _021EC090 + ldrb r8, [r1, #6] + ldrb r7, [lr, #2] + cmp r8, r7 + bne _021EC090 + ldrb r8, [r1, #7] + ldrb r7, [lr, #3] + cmp r8, r7 + bne _021EC090 + ldrb r8, [r1, #8] + ldrb r7, [lr, #4] + cmp r8, r7 + bne _021EC090 + ldrb r8, [r1, #9] + ldrb r7, [lr, #5] + cmp r8, r7 + moveq r4, r5 + beq _021EC0A0 +_021EC090: + add r5, r5, #1 + cmp r5, r3 + add lr, lr, #0xc0 + blt _021EC030 +_021EC0A0: + mvn r3, #0 + cmp r4, r3 + bne _021EC0D0 + mov r3, r6 + and r0, r0, #0xff + bl FUN_021EBFA0 + ldrb r0, [r6, #0xd12] + mov r4, #0xa + cmp r0, #0xa + addlo r0, r0, #1 + strlob r0, [r6, #0xd12] + b _021EC0DC +_021EC0D0: + mov r0, r4 + mov r3, r6 + bl FUN_021EBF20 +_021EC0DC: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021EC0E4: .word 0x00000474 + + arm_func_start FUN_021EC0E8 +FUN_021EC0E8: ; 0x021EC0E8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, r0 + ldrh r2, [r4, #0xa] + mov sl, r1 + cmp r2, #0x20 + bne _021EC10C + bl FUN_021EC210 + cmp r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021EC10C: + ldrb r5, [sl, #0xd12] + mov sb, #0 + cmp r5, #0 + ble _021EC174 + ldr r0, _021EC17C ; =0x0000047C + ldrh r6, [r4, #0xa] + mov r8, sl + add r7, sl, r0 + add r4, r4, #0xc +_021EC130: + add r0, r8, #0x400 + ldrh r0, [r0, #0x7a] + cmp r6, r0 + bne _021EC160 + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl strncmp + cmp r0, #0 + addeq r0, sl, sb, lsl #2 + ldreqb r0, [r0, #0x445] + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021EC160: + add sb, sb, #1 + cmp sb, r5 + add r8, r8, #0xc0 + add r7, r7, #0xc0 + blt _021EC130 +_021EC174: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021EC17C: .word 0x0000047C + + arm_func_start FUN_021EC180 +FUN_021EC180: ; 0x021EC180 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r6, r0 + ldrh r3, [r6, #0xa] + mov r5, r1 + mov r4, r2 + cmp r3, #0x20 + bne _021EC1B0 + bl FUN_021EC210 + cmp r0, #0 + addgt sp, sp, #4 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021EC1B0: + cmp r5, #0 + mov sb, #0 + ble _021EC204 + ldrh r8, [r6, #0xa] + add r6, r6, #0xc + and r7, r8, #0xff +_021EC1C8: + ldrb r0, [r4, #3] + cmp r7, r0 + bne _021EC1F4 + mov r0, r6 + mov r2, r8 + add r1, r4, #4 + bl strncmp + cmp r0, #0 + addeq sp, sp, #4 + ldreqb r0, [r4, #1] + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021EC1F4: + add sb, sb, #1 + cmp sb, r5 + add r4, r4, #0x24 + blt _021EC1C8 +_021EC204: + mvn r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021EC210 +FUN_021EC210: ; 0x021EC210 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #0x10 + bl FUN_021EB798 + mov r4, r0 + ldrb r0, [r4, #0xd0c] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1c + beq _021EC240 + cmp r0, #4 + bne _021EC270 +_021EC240: + ldrh r0, [r5, #0x2c] + mov r0, r0, asr #4 + and r0, r0, #1 + and r0, r0, #0xff + cmp r0, #1 + bne _021EC270 + add r0, r5, #0xc + bl FUN_021EE5C8 + cmp r0, #1 + addeq sp, sp, #4 + moveq r0, #6 + ldmeqia sp!, {r4, r5, pc} +_021EC270: + ldrb r0, [r4, #0xd0c] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1c + beq _021EC288 + cmp r0, #5 + bne _021EC2B8 +_021EC288: + ldrh r0, [r5, #0x2c] + mov r0, r0, asr #4 + and r0, r0, #1 + and r0, r0, #0xff + cmp r0, #1 + bne _021EC2B8 + add r0, r5, #0xc + bl FUN_021EE668 + cmp r0, #1 + addeq sp, sp, #4 + moveq r0, #7 + ldmeqia sp!, {r4, r5, pc} +_021EC2B8: + mvn r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EC2C4 +FUN_021EC2C4: ; 0x021EC2C4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r0, #0x10 + mvn r6, #0 + bl FUN_021EB798 + mov r4, r0 + mov r0, #1 + bl FUN_021EB798 + mov r1, #1 + strb r1, [r0, #0xb] + bl FUN_021EB720 + cmp r0, #3 + beq _021EC314 + cmp r0, #4 + beq _021EC384 + cmp r0, #5 + beq _021EC3D0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_021EC314: + ldrh r1, [r7, #0xa] + ldrb r5, [r4, #0xd11] + cmp r1, #0 + beq _021EC330 + ldrb r0, [r7, #0xc] + cmp r0, #0 + bne _021EC33C +_021EC330: + ldrh r0, [r7, #0x36] + bl FUN_021EDA3C + b _021EC418 +_021EC33C: + cmp r1, #1 + beq _021EC34C + cmp r0, #0x20 + bne _021EC36C +_021EC34C: + ldrh r0, [r7, #0x36] + bl FUN_021EDA3C + ldrb r1, [r4, #0xd10] + mov r0, r7 + add r2, r4, #0x300 + bl FUN_021EC180 + mov r6, r0 + b _021EC418 +_021EC36C: + ldrb r1, [r4, #0xd10] + mov r0, r7 + add r2, r4, #0x300 + bl FUN_021EC180 + mov r6, r0 + b _021EC418 +_021EC384: + ldrb r2, [r4, #0xd0f] + mov r1, #0xc0 + mov r0, r7 + mla r1, r2, r1, r4 + add r1, r1, #0x400 + ldrh r2, [r1, #0xa6] + mov r1, r4 + sub r2, r2, #1 + and r5, r2, #0xff + bl FUN_021EC0E8 + movs r6, r0 + bmi _021EC418 + ldr r0, _021EC448 ; =0x00000447 + ldrb r1, [r4, #0xd0f] + add r2, r4, r0 + ldrb r0, [r2, r1, lsl #2] + orr r0, r0, #0x80 + strb r0, [r2, r1, lsl #2] + b _021EC418 +_021EC3D0: + ldrb r1, [r4, #0xd0f] + add r2, r4, #0x300 + mov r0, #0x24 + mla r2, r1, r0, r2 + mov r0, r7 + mov r1, #1 + ldrb r5, [r4, #0xd11] + bl FUN_021EC180 + movs r6, r0 + bmi _021EC418 + ldrb r1, [r4, #0xd0f] + mov r0, #0x24 + add r3, r4, #0x300 + mul r2, r1, r0 + ldrb r0, [r3, r2] + bic r0, r0, #0xf + orr r0, r0, #1 + strb r0, [r3, r2] +_021EC418: + cmp r6, #0 + addlt sp, sp, #4 + ldmltia sp!, {r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, r7 + mov r2, r5 + mov r3, r4 + bl FUN_021EC008 + mov r1, r4 + bl FUN_021EBE20 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EC448: .word 0x00000447 + + arm_func_start FUN_021EC44C +FUN_021EC44C: ; 0x021EC44C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x10 + bl FUN_021EB798 + ldrsh r1, [r4] + cmp r1, #5 + bne _021EC4C4 + ldrsh r1, [r4, #2] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #8] + cmp r1, #0xd + beq _021EC494 + cmp r1, #0xf + beq _021EC4A0 + cmp r1, #0x11 + beq _021EC4AC + b _021EC4B8 +_021EC494: + mov r1, #1 + strb r1, [r0, #0xd14] + ldmia sp!, {r4, pc} +_021EC4A0: + mov r1, #2 + strb r1, [r0, #0xd14] + ldmia sp!, {r4, pc} +_021EC4AC: + mov r1, #3 + strb r1, [r0, #0xd14] + ldmia sp!, {r4, pc} +_021EC4B8: + mov r1, #4 + strb r1, [r0, #0xd14] + ldmia sp!, {r4, pc} +_021EC4C4: + cmp r1, #7 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #4] + bl FUN_021EC2C4 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EC4D8 +FUN_021EC4D8: ; 0x021EC4D8 + stmdb sp!, {r4, lr} + mov r4, r2 + cmp r1, #9 + addls pc, pc, r1, lsl #2 + b _021EC5B8 +_021EC4EC: ; jump table + b _021EC51C ; case 0 + b _021EC518 ; case 1 + b _021EC514 ; case 2 + b _021EC548 ; case 3 + b _021EC544 ; case 4 + b _021EC540 ; case 5 + b _021EC56C ; case 6 + b _021EC594 ; case 7 + b _021EC5B8 ; case 8 + b _021EC5B8 ; case 9 +_021EC514: + add r0, r0, #0x100 +_021EC518: + add r0, r0, #0x100 +_021EC51C: + ldrb r2, [r0, #0xe6] + add r0, r0, #0x80 + add r1, r4, #2 + mov r2, r2, lsl #0x1e + mov r3, r2, lsr #0x1e + mov r2, #0x50 + strb r3, [r4] + bl MI_CpuCopy8 + b _021EC5B8 +_021EC540: + add r0, r0, #0x100 +_021EC544: + add r0, r0, #0x100 +_021EC548: + mov r3, #1 + add r0, r0, #0xd1 + add r1, r4, #2 + mov r2, #0x14 + strb r3, [r4] + bl MI_CpuCopy8 + mov r0, #0 + strb r0, [r4, #0x16] + b _021EC5B8 +_021EC56C: + mov r1, #2 + strb r1, [r4] + ldr r1, _021EC5CC ; =0x0000047C + ldrb r2, [r0, #0xd13] + add r1, r0, r1 + mov r0, #0xc0 + mla r0, r2, r0, r1 + add r1, r4, #2 + bl FUN_021EE5B8 + b _021EC5B8 +_021EC594: + mov r1, #2 + strb r1, [r4] + ldr r1, _021EC5CC ; =0x0000047C + ldrb r2, [r0, #0xd13] + add r1, r0, r1 + mov r0, #0xc0 + mla r0, r2, r0, r1 + add r1, r4, #2 + bl FUN_021EE640 +_021EC5B8: + ldrb r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EC5CC: .word 0x0000047C + + arm_func_start FUN_021EC5D0 +FUN_021EC5D0: ; 0x021EC5D0 + ldrb r0, [r0, #0xd0b] + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1e + cmp r0, #1 + moveq r0, #0xc0000 + movne r0, #0x80000 + bx lr + + arm_func_start FUN_021EC5EC +FUN_021EC5EC: ; 0x021EC5EC + ldrb r0, [r0, #0xd0b] + mov r0, r0, lsl #0x1e + mov r0, r0, lsr #0x1e + cmp r0, #1 + moveq r0, #0x30000 + movne r0, #0x20000 + bx lr + + arm_func_start FUN_021EC608 +FUN_021EC608: ; 0x021EC608 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + ldrb r2, [sl, #0xd13] + ldrb r1, [sl, #0xd0c] + add r3, sl, #0x470 + mov r0, #0xc0 + mla sb, r2, r0, r3 + mov r0, r1, lsl #0x18 + movs r0, r0, lsr #0x1e + mov r0, #0 + str r0, [sp] + bne _021EC72C + ldrh r0, [sb, #0xa] + ldr r7, [sp] + cmp r0, #0x20 + bne _021EC66C + mov r0, sb + bl FUN_021EC210 + cmp r0, #0 + str r0, [sp] + movle r0, #0 + addgt r7, r7, #1 + strle r0, [sp] + b _021EC690 +_021EC66C: + cmp r0, #8 + bne _021EC690 + mov r0, sb + bl FUN_021ED12C + cmp r0, #0 + str r0, [sp] + moveq r0, #0 + addne r7, r7, #1 + streq r0, [sp] +_021EC690: + ldrb r0, [sl, #0xd10] + mov r8, #0 + cmp r0, #0 + ble _021EC79C + mov r6, sl + add r5, sl, #0x304 + add r4, sl, #0x300 + ldr r0, _021EC7AC ; =0x00000D0C + add fp, sl, r0 +_021EC6B4: + ldrh r2, [sb, #0xa] + ldrb r0, [r6, #0x303] + cmp r2, r0 + bne _021EC70C + mov r1, r5 + add r0, sb, #0xc + bl strncmp + cmp r0, #0 + bne _021EC70C + cmp r7, #0 + ldreqb r0, [r6, #0x301] + streq r0, [sp] + beq _021EC708 + ldrb r0, [r4] + bic r0, r0, #0xf0 + orr r0, r0, #0x10 + strb r0, [r4] + ldrb r0, [fp] + bic r0, r0, #0xc0 + orr r0, r0, #0x40 + strb r0, [fp] +_021EC708: + add r7, r7, #1 +_021EC70C: + ldrb r0, [sl, #0xd10] + add r8, r8, #1 + add r6, r6, #0x24 + cmp r8, r0 + add r5, r5, #0x24 + add r4, r4, #0x24 + blt _021EC6B4 + b _021EC79C +_021EC72C: + ldrb r0, [sl, #0xd10] + ldr r2, [sp] + mov r3, r2 + cmp r0, #0 + ble _021EC78C + mov r4, sl + add r5, sl, #0x300 +_021EC748: + ldrb r0, [r5] + mov r1, r0, lsl #0x18 + mov r1, r1, lsr #0x1c + cmp r1, #1 + bne _021EC774 + cmp r3, #0 + biceq r0, r0, #0xf0 + streqb r0, [r5] + ldreqb r0, [r4, #0x301] + add r3, r3, #1 + streq r0, [sp] +_021EC774: + ldrb r0, [sl, #0xd10] + add r2, r2, #1 + add r5, r5, #0x24 + cmp r2, r0 + add r4, r4, #0x24 + blt _021EC748 +_021EC78C: + cmp r3, #1 + ldreqb r0, [sl, #0xd0c] + biceq r0, r0, #0xc0 + streqb r0, [sl, #0xd0c] +_021EC79C: + ldr r0, [sp] + and r0, r0, #0xff + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021EC7AC: .word 0x00000D0C + + arm_func_start FUN_021EC7B0 +FUN_021EC7B0: ; 0x021EC7B0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + bl FUN_020A71F8 + ldrb r2, [r6, #0xd13] + add r3, r6, #0x470 + mov r1, #0xc0 + mla r5, r2, r1, r3 + cmp r0, #3 + bne _021EC8BC + mov r0, r6 + bl FUN_021EC5EC + ldrb r1, [r6, #0xd15] + mov r4, r0 + add r0, r1, #1 + strb r0, [r6, #0xd15] + ldrb r1, [r6, #0xd15] + cmp r1, #3 + bls _021EC818 + mov r0, #0 + strb r0, [r6, #0xd15] + ldrb r1, [r6, #0xd13] + mov r2, #1 + mov r0, #9 + add r1, r6, r1, lsl #2 + strb r2, [r1, #0x444] + ldmia sp!, {r4, r5, r6, pc} +_021EC818: + cmp r1, #1 + beq _021EC898 + ldrb r0, [r6, #0xd14] + cmp r0, #1 + ldreqb r0, [r6, #0xd0b] + biceq r0, r0, #0xc + streqb r0, [r6, #0xd0b] + beq _021EC898 + cmp r0, #2 + bne _021EC860 + mov r0, #0 + strb r0, [r6, #0xd15] + ldrb r1, [r6, #0xd13] + mov r2, #3 + mov r0, #9 + add r1, r6, r1, lsl #2 + strb r2, [r1, #0x444] + ldmia sp!, {r4, r5, r6, pc} +_021EC860: + cmp r0, #3 + bne _021EC888 + mov r0, #0 + strb r0, [r6, #0xd15] + ldrb r1, [r6, #0xd13] + mov r2, #4 + mov r0, #9 + add r1, r6, r1, lsl #2 + strb r2, [r1, #0x444] + ldmia sp!, {r4, r5, r6, pc} +_021EC888: + cmp r1, #3 + ldreqb r0, [r6, #0xd0b] + biceq r0, r0, #0xc + streqb r0, [r6, #0xd0b] +_021EC898: + mov r0, r6 + bl FUN_021EC5D0 + mov r2, r0 + ldr r1, _021EC8E8 ; =0x00000CB8 + mov r0, r5 + add r1, r6, r1 + orr r2, r4, r2 + bl FUN_020A75C0 + b _021EC8E0 +_021EC8BC: + cmp r0, #9 + bne _021EC8E0 + mov r0, #0 + strb r0, [r6, #0xd15] + bl OS_GetTick + str r0, [r6, #0xcb0] + str r1, [r6, #0xcb4] + mov r0, #0xa + ldmia sp!, {r4, r5, r6, pc} +_021EC8E0: + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EC8E8: .word 0x00000CB8 + + arm_func_start FUN_021EC8EC +FUN_021EC8EC: ; 0x021EC8EC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrb r2, [r5, #0xd13] + add r3, r5, #0x470 + mov r1, #0xc0 + mla r4, r2, r1, r3 + bl FUN_021EC608 + ldr r1, _021ECA04 ; =0x00000CB8 + strb r0, [r5, #0xd0d] + add r0, r5, r1 + mov r1, #0 + mov r2, #0x52 + bl MI_CpuFill8 + ldr r2, _021ECA04 ; =0x00000CB8 + ldrb r1, [r5, #0xd0d] + mov r0, r5 + add r2, r5, r2 + bl FUN_021EC4D8 + cmp r0, #0 + beq _021EC9B0 + ldrb r0, [r5, #0xd0b] + bic r0, r0, #0xc + orr r0, r0, #4 + strb r0, [r5, #0xd0b] + ldrh r0, [r4, #0x2c] + mov r0, r0, asr #4 + ands r0, r0, #1 + bne _021EC97C + ldrb r1, [r5, #0xd13] + mov r2, #3 + add sp, sp, #4 + add r1, r5, r1, lsl #2 + strb r2, [r1, #0x444] + mov r0, #9 + ldmia sp!, {r4, r5, pc} +_021EC97C: + ldrb r0, [r5, #0xd0d] + cmp r0, #6 + bne _021EC9EC + ldrb r0, [r4, #0x15] + cmp r0, #0 + bne _021EC9EC + ldrb r1, [r5, #0xd13] + mov r2, #3 + add sp, sp, #4 + add r1, r5, r1, lsl #2 + strb r2, [r1, #0x444] + mov r0, #9 + ldmia sp!, {r4, r5, pc} +_021EC9B0: + ldrb r0, [r5, #0xd0b] + bic r0, r0, #0xc + strb r0, [r5, #0xd0b] + ldrh r0, [r4, #0x2c] + mov r0, r0, asr #4 + and r0, r0, #1 + cmp r0, #1 + bne _021EC9EC + ldrb r1, [r5, #0xd13] + mov r2, #3 + add sp, sp, #4 + add r1, r5, r1, lsl #2 + strb r2, [r1, #0x444] + mov r0, #9 + ldmia sp!, {r4, r5, pc} +_021EC9EC: + mov r0, #0 + strb r0, [r5, #0xd15] + strb r0, [r5, #0xd14] + mov r0, #8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021ECA04: .word 0x00000CB8 + + arm_func_start FUN_021ECA08 +FUN_021ECA08: ; 0x021ECA08 + stmdb sp!, {r4, lr} + bl FUN_021EB720 + mov r4, r0 + mov r0, #0x10 + bl FUN_021EB798 + cmp r4, #7 + beq _021ECA30 + cmp r4, #8 + beq _021ECA3C + b _021ECA44 +_021ECA30: + bl FUN_021EC8EC + mov r4, r0 + b _021ECA44 +_021ECA3C: + bl FUN_021EC7B0 + mov r4, r0 +_021ECA44: + mov r0, r4 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021ECA4C +FUN_021ECA4C: ; 0x021ECA4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_02099A94 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl THUNK_FUN_02099BC8 + cmp r0, #0 + beq _021ECA80 + mvn r1, #0x26 + cmp r0, r1 + bne _021ECA8C +_021ECA80: + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021ECA8C: + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021ECA98 +FUN_021ECA98: ; 0x021ECA98 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_020A71F8 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _021ECB2C +_021ECAB0: ; jump table + b _021ECAE4 ; case 0 + b _021ECAF0 ; case 1 + b _021ECB2C ; case 2 + b _021ECAF8 ; case 3 + b _021ECB2C ; case 4 + b _021ECB2C ; case 5 + b _021ECB00 ; case 6 + b _021ECB2C ; case 7 + b _021ECB2C ; case 8 + b _021ECB08 ; case 9 + b _021ECB2C ; case 10 + b _021ECB18 ; case 11 + b _021ECB10 ; case 12 +_021ECAE4: + add sp, sp, #4 + mov r0, #1 + ldmfd sp!, {pc} +_021ECAF0: + bl FUN_020A7E0C + b _021ECB2C +_021ECAF8: + bl FUN_020A7AC8 + b _021ECB2C +_021ECB00: + bl FUN_020A7820 + b _021ECB2C +_021ECB08: + bl FUN_020A7488 + b _021ECB2C +_021ECB10: + bl FUN_020A722C + b _021ECB2C +_021ECB18: + mov r0, #0 + bl FUN_021EB6F4 + add sp, sp, #4 + mvn r0, #0 + ldmfd sp!, {pc} +_021ECB2C: + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021ECB38 +FUN_021ECB38: ; 0x021ECB38 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrb r0, [r4] + cmp r0, #0xa + bhi _021ECB80 + bl FUN_021ECA98 + cmp r0, #1 + moveq r0, #0 + streqb r0, [r4] + moveq r0, #1 + ldmeqia sp!, {r4, pc} + mvn r1, #0 + cmp r0, r1 + bne _021ECBB4 + mov r0, #0x12 + strb r0, [r4] + mov r0, #1 + ldmia sp!, {r4, pc} +_021ECB80: + cmp r0, #0xe + bne _021ECB9C + bl FUN_021DC7F0 + bl FUN_021DC870 + mov r0, #0xc + strb r0, [r4] + b _021ECBB4 +_021ECB9C: + cmp r0, #0x12 + bhs _021ECBB4 + bl FUN_021ECA4C + cmp r0, #1 + moveq r0, #0xa + streqb r0, [r4] +_021ECBB4: + mov r0, #0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021ECBBC +FUN_021ECBBC: ; 0x021ECBBC + ldrb r1, [r0, #0x16] + cmp r1, #0xa + bhs _021ECC04 + ldrb r1, [r0, #0x14] + cmp r1, #3 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCC4 ; =0xFFFF3864 + subeq r2, r0, r1 + beq _021ECCBC + cmp r1, #4 + ldreqb r1, [r0, #0x15] + moveq r0, #0xc800 + rsbeq r0, r0, #0 + subeq r2, r0, r1 + ldrneb r1, [r0, #0x15] + ldrne r0, _021ECCC8 ; =0xFFFF379C + subne r2, r0, r1 + b _021ECCBC +_021ECC04: + cmp r1, #0xd + ldrlob r1, [r0, #0x15] + ldrlo r0, _021ECCCC ; =0xFFFF34E0 + sublo r2, r0, r1 + blo _021ECCBC + ldr r2, [r0, #0x10] + cmp r2, #0 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCD0 ; =0xFFFF3CB0 + subeq r2, r0, r1 + beq _021ECCBC + mvn r1, #0 + cmp r2, r1 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCD4 ; =0xFFFF347C + subeq r2, r0, r1 + beq _021ECCBC + mvn r1, #1 + cmp r2, r1 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCD8 ; =0xFFFF3418 + subeq r2, r0, r1 + beq _021ECCBC + mvn r1, #2 + cmp r2, r1 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCDC ; =0xFFFF33B4 + subeq r2, r0, r1 + beq _021ECCBC + mvn r1, #3 + cmp r2, r1 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCE0 ; =0xFFFF30F8 + subeq r2, r0, r1 + beq _021ECCBC + mvn r1, #4 + cmp r2, r1 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCE4 ; =0xFFFF3094 + subeq r2, r0, r1 + beq _021ECCBC + mvn r1, #5 + cmp r2, r1 + ldreqb r1, [r0, #0x15] + ldreq r0, _021ECCE8 ; =0xFFFF3030 + subeq r2, r0, r1 +_021ECCBC: + mov r0, r2 + bx lr + .align 2, 0 +_021ECCC4: .word 0xFFFF3864 +_021ECCC8: .word 0xFFFF379C +_021ECCCC: .word 0xFFFF34E0 +_021ECCD0: .word 0xFFFF3CB0 +_021ECCD4: .word 0xFFFF347C +_021ECCD8: .word 0xFFFF3418 +_021ECCDC: .word 0xFFFF33B4 +_021ECCE0: .word 0xFFFF30F8 +_021ECCE4: .word 0xFFFF3094 +_021ECCE8: .word 0xFFFF3030 + + arm_func_start FUN_021ECCEC +FUN_021ECCEC: ; 0x021ECCEC + ldrb r0, [r0, #0xb] + cmp r0, #0 + ldreq r0, _021ECD00 ; =0xFFFF3C4D + ldrne r0, _021ECD04 ; =0xFFFF3865 + bx lr + .align 2, 0 +_021ECD00: .word 0xFFFF3C4D +_021ECD04: .word 0xFFFF3865 + + arm_func_start FUN_021ECD08 +FUN_021ECD08: ; 0x021ECD08 + mvn r0, #5 + bx lr + + arm_func_start FUN_021ECD10 +FUN_021ECD10: ; 0x021ECD10 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _021ECD4C +_021ECD1C: ; jump table + b _021ECD34 ; case 0 + b _021ECD2C ; case 1 + b _021ECD3C ; case 2 + b _021ECD44 ; case 3 +_021ECD2C: + mvn r0, #8 + bx lr +_021ECD34: + mvn r0, #9 + bx lr +_021ECD3C: + mvn r0, #7 + bx lr +_021ECD44: + mvn r0, #6 + bx lr +_021ECD4C: + mov r0, #0 + bx lr + + arm_func_start FUN_021ECD54 +FUN_021ECD54: ; 0x021ECD54 + stmdb sp!, {r4, lr} + mov r0, #1 + bl FUN_021EB798 + mov r4, r0 + bl FUN_021EB6E0 + cmp r0, #4 + bge _021ECD78 + bl FUN_021ECD10 + ldmia sp!, {r4, pc} +_021ECD78: + cmp r0, #5 + bge _021ECD88 + bl FUN_021ECD08 + ldmia sp!, {r4, pc} +_021ECD88: + cmp r0, #5 + bne _021ECD9C + mov r0, r4 + bl FUN_021ECCEC + ldmia sp!, {r4, pc} +_021ECD9C: + mov r0, r4 + bl FUN_021ECBBC + ldmia sp!, {r4, pc} + + arm_func_start FUN_021ECDA8 +FUN_021ECDA8: ; 0x021ECDA8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl FUN_021EB798 + add r0, r0, #0xa + bl FUN_021ECB38 + cmp r0, #1 + moveq r0, #0x12 + movne r0, #0x11 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021ECDD4 +FUN_021ECDD4: ; 0x021ECDD4 + ldrb r2, [r0, #0xd12] + mov r3, #0 + mov ip, r3 + cmp r2, #0 + bls _021ECE10 +_021ECDE8: + add r1, r0, ip, lsl #2 + ldrb r1, [r1, #0x447] + mov r1, r1, lsl #0x18 + movs r1, r1, lsr #0x1f + moveq r3, ip + beq _021ECE10 + add r1, ip, #1 + and ip, r1, #0xff + cmp ip, r2 + blo _021ECDE8 +_021ECE10: + mov r0, r3 + bx lr + + arm_func_start FUN_021ECE18 +FUN_021ECE18: ; 0x021ECE18 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldrb r1, [r0, #0xd12] + mov r3, #0 + mov ip, r3 + cmp r1, #0 + ble _021ECEA0 + ldr r2, _021ECEAC ; =0x00000447 + mov r1, r0 + add r2, r0, r2 +_021ECE40: + add r4, r0, ip, lsl #2 + ldrb r4, [r4, #0x444] + cmp r4, #0 + bne _021ECE7C + add lr, r1, #0x400 + ldrh r4, [lr, #0xa6] + ldrb lr, [r2] + sub r5, r4, #1 + mov r4, lr, lsl #0x19 + cmp r5, r4, lsr #25 + bicne lr, lr, #0x80 + addne r3, r3, #1 + strneb lr, [r2] + andne r3, r3, #0xff + bne _021ECE88 +_021ECE7C: + ldrb lr, [r2] + orr lr, lr, #0x80 + strb lr, [r2] +_021ECE88: + ldrb lr, [r0, #0xd12] + add ip, ip, #1 + add r2, r2, #4 + cmp ip, lr + add r1, r1, #0xc0 + blt _021ECE40 +_021ECEA0: + mov r0, r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021ECEAC: .word 0x00000447 + + arm_func_start FUN_021ECEB0 +FUN_021ECEB0: ; 0x021ECEB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, #0 + mov r4, r0 + mov r6, r5 + add lr, r0, #0x300 + mov ip, r5 + mov r2, r5 + mov r1, r5 + mov r7, r5 + mov r3, #1 +_021ECED8: + ldrb r8, [r0, #0xd0c] + mov r8, r8, lsl #0x1c + movs sb, r8, lsr #0x1c + beq _021ECEF4 + add r8, r6, #1 + cmp sb, r8 + bne _021ECFB0 +_021ECEF4: + ldrb r8, [r4, #0xe7] + cmp r8, #0xff + beq _021ECFB0 + mov sb, ip +_021ECF04: + add r8, r4, sb + ldrb sl, [r8, #0x40] + cmp sl, #0 + beq _021ECF2C + add r8, sb, #1 + add sb, lr, sb + strb sl, [sb, #4] + and sb, r8, #0xff + cmp sb, #0x20 + blo _021ECF04 +_021ECF2C: + cmp sb, #0 + strneb sb, [lr, #3] + movne r8, r3 + strneb r6, [lr, #1] + moveq r8, r2 + cmp r8, #0 + addne r5, r5, #1 + ldrb r8, [r4, #0xe7] + andne r5, r5, #0xff + addne lr, lr, #0x24 + cmp r8, #1 + bne _021ECFB0 + mov sb, r1 +_021ECF60: + add r8, r4, sb + ldrb sl, [r8, #0x60] + cmp sl, #0 + beq _021ECF88 + add r8, sb, #1 + add sb, lr, sb + strb sl, [sb, #4] + and sb, r8, #0xff + cmp sb, #0x20 + blo _021ECF60 +_021ECF88: + cmp sb, #0 + strneb sb, [lr, #3] + movne sb, r3 + addne r8, r6, #3 + moveq sb, r7 + strneb r8, [lr, #1] + cmp sb, #0 + addne r5, r5, #1 + andne r5, r5, #0xff + addne lr, lr, #0x24 +_021ECFB0: + add r6, r6, #1 + cmp r6, #3 + add r4, r4, #0x100 + blt _021ECED8 + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + + arm_func_start FUN_021ECFC8 +FUN_021ECFC8: ; 0x021ECFC8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + add r4, r6, #0x300 + bl FUN_021ECEB0 + ldrb r1, [r6, #0xd0c] + mov r5, r0 + mov r0, #0x24 + mov r1, r1, lsl #0x1c + mla r4, r5, r0, r4 + movs r0, r1, lsr #0x1c + beq _021ECFFC + cmp r0, #4 + bne _021ED028 +_021ECFFC: + ldr r0, _021ED0B4 ; =0x0220D4C0 + add r1, r4, #4 + mov r2, #8 + bl MI_CpuCopy8 + mov r1, #8 + add r0, r5, #1 + strb r1, [r4, #3] + mov r1, #6 + strb r1, [r4, #1] + and r5, r0, #0xff + add r4, r4, #0x24 +_021ED028: + ldrb r0, [r6, #0xd0c] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1c + beq _021ED040 + cmp r0, #7 + bne _021ED06C +_021ED040: + ldr r0, _021ED0B8 ; =0x0220BADC + add r1, r4, #4 + mov r2, #8 + bl MI_CpuCopy8 + mov r1, #8 + add r0, r5, #1 + strb r1, [r4, #3] + mov r1, #9 + strb r1, [r4, #1] + and r5, r0, #0xff + add r4, r4, #0x24 +_021ED06C: + ldrb r0, [r6, #0xd0c] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1c + beq _021ED084 + cmp r0, #8 + bne _021ED0AC +_021ED084: + ldr r0, _021ED0BC ; =0x0220BAEC + add r1, r4, #4 + mov r2, #0xb + bl MI_CpuCopy8 + mov r1, #0xb + add r0, r5, #1 + strb r1, [r4, #3] + mov r1, #0xa + strb r1, [r4, #1] + and r5, r0, #0xff +_021ED0AC: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021ED0B4: .word 0x0220D4C0 +_021ED0B8: .word 0x0220BADC +_021ED0BC: .word 0x0220BAEC + + arm_func_start FUN_021ED0C0 +FUN_021ED0C0: ; 0x021ED0C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + add r4, r5, #0x300 + bl FUN_021ECEB0 + ldrb r1, [r5, #0xd0c] + mov r5, r0 + mov r0, #0x24 + mov r1, r1, lsl #0x1c + mla r4, r5, r0, r4 + movs r0, r1, lsr #0x1c + beq _021ED0F8 + cmp r0, #6 + bne _021ED11C +_021ED0F8: + ldr r0, _021ED128 ; =0x0220BAE4 + add r1, r4, #4 + mov r2, #8 + bl MI_CpuCopy8 + mov r1, #8 + strb r1, [r4, #3] + add r0, r5, #1 + strb r1, [r4, #1] + and r5, r0, #0xff +_021ED11C: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021ED128: .word 0x0220BAE4 + + arm_func_start FUN_021ED12C +FUN_021ED12C: ; 0x021ED12C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x10 + bl FUN_021EB798 + ldrb r0, [r0, #0xd0c] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1c + beq _021ED154 + cmp r0, #6 + bne _021ED170 +_021ED154: + ldr r1, _021ED178 ; =0x0220BAE4 + add r0, r4, #0xc + mov r2, #8 + bl strncmp + cmp r0, #0 + moveq r0, #8 + ldmeqia sp!, {r4, pc} +_021ED170: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021ED178: .word 0x0220BAE4 + + arm_func_start FUN_021ED17C +FUN_021ED17C: ; 0x021ED17C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #0x10 + bl FUN_021EB798 + mov r4, r0 + cmp r5, #0 + beq _021ED1B0 + cmp r5, #1 + beq _021ED1D0 + cmp r5, #2 + beq _021ED1E8 + b _021ED20C +_021ED1B0: + add r1, r4, #0x300 + mov r0, #0 + mov r2, #0x144 + bl MIi_CpuClear32 + mov r0, r4 + bl FUN_021ED0C0 + strb r0, [r4, #0xd10] + b _021ED20C +_021ED1D0: + bl FUN_021ECE18 + strb r0, [r4, #0xd10] + mov r0, r4 + bl FUN_021ECDD4 + strb r0, [r4, #0xd0f] + b _021ED20C +_021ED1E8: + add r1, r4, #0x300 + mov r0, #0 + mov r2, #0x144 + bl MIi_CpuClear32 + mov r1, #0 + mov r0, r4 + strb r1, [r4, #0xd0f] + bl FUN_021ECFC8 + strb r0, [r4, #0xd10] +_021ED20C: + ldrb r0, [r4, #0xd10] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021ED218 +FUN_021ED218: ; 0x021ED218 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #0x10 + bl FUN_021EB798 + mov r4, r0 + mov r5, #9 + bl FUN_020A71F8 + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _021ED2F0 +_021ED240: ; jump table + b _021ED2F0 ; case 0 + b _021ED2F0 ; case 1 + b _021ED2F0 ; case 2 + b _021ED274 ; case 3 + b _021ED2F0 ; case 4 + b _021ED2F0 ; case 5 + b _021ED2C0 ; case 6 + b _021ED2F0 ; case 7 + b _021ED2F0 ; case 8 + b _021ED2C8 ; case 9 + b _021ED2F0 ; case 10 + b _021ED2E4 ; case 11 + b _021ED2D0 ; case 12 +_021ED274: + ldrb r0, [r4, #0xd0c] + ldrb r5, [r4, #0xd0e] + mov r0, r0, lsl #0x18 + mov r0, r0, lsr #0x1e + cmp r0, #1 + bne _021ED2A4 + ldrb r0, [r4, #0xd13] + mov r1, #0 + mov r5, #7 + add r0, r4, r0, lsl #2 + strb r1, [r0, #0x444] + b _021ED2F0 +_021ED2A4: + cmp r5, #3 + blo _021ED2F0 + cmp r5, #5 + bhi _021ED2F0 + mov r0, r5 + bl FUN_021ED8D4 + b _021ED2F0 +_021ED2C0: + bl FUN_020A7820 + b _021ED2F0 +_021ED2C8: + bl FUN_020A7488 + b _021ED2F0 +_021ED2D0: + bl FUN_020A722C + mov r0, #4 + bl FUN_021EB6F4 + mov r5, #0x11 + b _021ED2F0 +_021ED2E4: + mov r0, #0 + bl FUN_021EB6F4 + mov r5, #0x11 +_021ED2F0: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021ED2FC +FUN_021ED2FC: ; 0x021ED2FC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, _021ED324 ; =0x0220BAF8 + cmp r2, #0xc + movgt r2, #0xc + ldr r2, [ip, r2, lsl #2] + orr r2, r3, r2 + bl FUN_020A7A90 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021ED324: .word 0x0220BAF8 + + arm_func_start FUN_021ED328 +FUN_021ED328: ; 0x021ED328 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0xd00 + ldrh r0, [r0, #0x16] + cmp r0, #0 + beq _021ED364 + mov r0, #2 + bl FUN_021ED17C + cmp r0, #0 + beq _021ED364 + mov r0, #0 + bl FUN_021ED9D0 + strb r0, [r4, #0xd11] + mov r0, #5 + ldmia sp!, {r4, pc} +_021ED364: + ldrb r0, [r4, #0xd0b] + mov r0, r0, lsl #0x18 + mov r0, r0, lsr #0x1c + cmp r0, #1 + movhs r0, #6 + ldmhsia sp!, {r4, pc} + mov r0, r4 + bl FUN_021ED798 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021ED388 +FUN_021ED388: ; 0x021ED388 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + cmp r4, #0x11 + mov r5, r0 + addeq sp, sp, #4 + moveq r0, r4 + ldmeqia sp!, {r4, r5, pc} + ldrb r1, [r5, #0xd12] + mov r2, #0 + cmp r1, #0 + bls _021ED3D8 +_021ED3B8: + add r0, r5, r2, lsl #2 + ldrb r0, [r0, #0x444] + cmp r0, #0 + beq _021ED3D8 + add r0, r2, #1 + and r2, r0, #0xff + cmp r2, r1 + blo _021ED3B8 +_021ED3D8: + cmp r4, #6 + bne _021ED410 + cmp r1, r2 + bne _021ED448 + cmp r2, #0 + bne _021ED3FC + mov r0, #5 + bl FUN_021EB6F4 + b _021ED404 +_021ED3FC: + mov r0, #6 + bl FUN_021EB6F4 +_021ED404: + add sp, sp, #4 + mov r0, #0x11 + ldmia sp!, {r4, r5, pc} +_021ED410: + cmp r1, #0 + addeq sp, sp, #4 + moveq r0, r4 + ldmeqia sp!, {r4, r5, pc} + cmp r1, r2 + addeq sp, sp, #4 + moveq r0, r4 + ldmeqia sp!, {r4, r5, pc} + add r0, r5, r2, lsl #2 + ldrb r0, [r0, #0x446] + cmp r0, #0x14 + addlo sp, sp, #4 + movlo r0, r4 + ldmloia sp!, {r4, r5, pc} +_021ED448: + strb r2, [r5, #0xd13] + bl FUN_020A7820 + cmp r0, #1 + strneb r4, [r5, #0xd0e] + movne r4, #7 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021ED468 +FUN_021ED468: ; 0x021ED468 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + cmp r4, #3 + beq _021ED494 + cmp r4, #4 + beq _021ED4F8 + cmp r4, #5 + beq _021ED504 + b _021ED524 +_021ED494: + ldrb r1, [r5, #0xd12] + cmp r1, #0 + bne _021ED4B0 + add r1, r5, #0xd00 + ldrh r1, [r1, #0x16] + cmp r1, #0 + beq _021ED4D4 +_021ED4B0: + mov r0, #1 + bl FUN_021ED17C + cmp r0, #0 + movne r4, #4 + bne _021ED524 + mov r0, r5 + bl FUN_021ED328 + mov r4, r0 + b _021ED524 +_021ED4D4: + ldrb r1, [r5, #0xd0b] + mov r1, r1, lsl #0x18 + mov r1, r1, lsr #0x1c + cmp r1, #1 + movhs r4, #6 + bhs _021ED524 + bl FUN_021ED798 + mov r4, r0 + b _021ED524 +_021ED4F8: + bl FUN_021ED328 + mov r4, r0 + b _021ED524 +_021ED504: + ldrb r1, [r5, #0xd0b] + mov r1, r1, lsl #0x18 + mov r1, r1, lsr #0x1c + cmp r1, #1 + movhs r4, #6 + bhs _021ED524 + bl FUN_021ED798 + mov r4, r0 +_021ED524: + mov r0, r4 + bl FUN_021ED8D4 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021ED538 +FUN_021ED538: ; 0x021ED538 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_GetTick + ldr r3, [r4, #0xcb0] + ldr r2, [r4, #0xcb4] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021ED650 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0x96 + bhs _021ED598 + ldrb r1, [r4, #0xd0f] + mov r0, #0x24 + mla r0, r1, r0, r4 + ldrb r0, [r0, #0x300] + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1c + cmp r0, #1 + bne _021ED648 +_021ED598: + ldrb r1, [r4, #0xd0f] + mov r0, #0x24 + add r3, r4, #0x300 + mul r2, r1, r0 + ldrb r0, [r3, r2] + bic r0, r0, #0xf + strb r0, [r3, r2] + ldrb r0, [r4, #0xd0f] + add r0, r0, #1 + strb r0, [r4, #0xd0f] + ldrb r1, [r4, #0xd10] + ldrb r0, [r4, #0xd0f] + cmp r1, r0 + bhi _021ED5F0 + ldrb r1, [r4, #0xd15] + mov r0, #0 + add r1, r1, #1 + strb r1, [r4, #0xd15] + strb r0, [r4, #0xd0f] + ldrb r0, [r4, #0xd15] + bl FUN_021ED9D0 + strb r0, [r4, #0xd11] +_021ED5F0: + add r0, r4, #0xd00 + ldrsb r0, [r0, #0x11] + cmp r0, #0 + bge _021ED618 + mov r2, #0 + mov r0, r4 + mov r1, #5 + strb r2, [r4, #0xd15] + bl FUN_021ED468 + ldmia sp!, {r4, pc} +_021ED618: + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + ldrb r3, [r4, #0xd0f] + add r1, r4, #0x304 + mov r0, #0x24 + add r2, r4, #0xd00 + mla r1, r3, r0, r1 + ldrsb r2, [r2, #0x11] + ldr r0, _021ED654 ; =0x020FF590 + mov r3, #0x300000 + bl FUN_021ED2FC +_021ED648: + mov r0, #5 + ldmia sp!, {r4, pc} + .align 2, 0 +_021ED650: .word 0x000082EA +_021ED654: .word 0x020FF590 + + arm_func_start FUN_021ED658 +FUN_021ED658: ; 0x021ED658 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_GetTick + ldr r3, [r4, #0xcb0] + ldr r2, [r4, #0xcb4] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021ED784 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0x96 + bhs _021ED6B4 + ldrb r0, [r4, #0xd0f] + add r0, r4, r0, lsl #2 + ldrb r0, [r0, #0x447] + mov r0, r0, lsl #0x18 + mov r0, r0, lsr #0x1f + cmp r0, #1 + bne _021ED77C +_021ED6B4: + ldr r0, _021ED788 ; =0x00000447 + ldrb r1, [r4, #0xd0f] + add r2, r4, r0 + ldrb r0, [r2, r1, lsl #2] + orr r0, r0, #0x80 + strb r0, [r2, r1, lsl #2] + ldrb r2, [r4, #0xd12] + ldrb r3, [r4, #0xd0f] + cmp r3, r2 + bhs _021ED714 + ldr r0, _021ED78C ; =0x00000D0F + add r1, r4, r0 +_021ED6E4: + add r0, r4, r3, lsl #2 + ldrb r0, [r0, #0x447] + mov r0, r0, lsl #0x18 + movs r0, r0, lsr #0x1f + beq _021ED714 + ldrb r0, [r1] + add r0, r0, #1 + strb r0, [r1] + ldrb r2, [r4, #0xd12] + ldrb r3, [r4, #0xd0f] + cmp r3, r2 + blo _021ED6E4 +_021ED714: + cmp r2, r3 + bhi _021ED734 + mov r2, #0 + mov r0, r4 + mov r1, #4 + strb r2, [r4, #0xd0f] + bl FUN_021ED468 + ldmia sp!, {r4, pc} +_021ED734: + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + ldrb r2, [r4, #0xd0f] + mov r0, #0xc0 + ldr r1, _021ED790 ; =0x00000474 + mul ip, r2, r0 + add r0, r4, ip + add r0, r0, #0x400 + ldrh r2, [r0, #0xa6] + ldr r0, _021ED794 ; =0x0000047C + add r3, r4, r1 + add r1, r4, r0 + add r0, r3, ip + add r1, r1, ip + sub r2, r2, #1 + mov r3, #0x300000 + bl FUN_021ED2FC +_021ED77C: + mov r0, #4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021ED784: .word 0x000082EA +_021ED788: .word 0x00000447 +_021ED78C: .word 0x00000D0F +_021ED790: .word 0x00000474 +_021ED794: .word 0x0000047C + + arm_func_start FUN_021ED798 +FUN_021ED798: ; 0x021ED798 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + strb r0, [r4, #0xd15] + ldrb r2, [r4, #0xd0b] + mov r1, r2, lsl #0x18 + mov r1, r1, lsr #0x1c + add r1, r1, #1 + and r1, r1, #0xff + bic r2, r2, #0xf0 + and r1, r1, #0xf + orr r1, r2, r1, lsl #4 + strb r1, [r4, #0xd0b] + bl FUN_021ED17C + mov r0, #1 + strb r0, [r4, #0xd11] + mov r0, #3 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021ED7E0 +FUN_021ED7E0: ; 0x021ED7E0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_GetTick + ldr r3, [r4, #0xcb0] + ldr r2, [r4, #0xcb4] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021ED878 ; =0x000082EA + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0x12c + blo _021ED870 + add r0, r4, #0xd00 + ldrsb r1, [r0, #0x11] + add r1, r1, #2 + strb r1, [r4, #0xd11] + ldrsb r0, [r0, #0x11] + cmp r0, #0xd + blt _021ED84C + mov r0, r4 + mov r1, #3 + bl FUN_021ED468 + ldmia sp!, {r4, pc} +_021ED84C: + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + add r0, r4, #0xd00 + ldrsb r2, [r0, #0x11] + ldr r0, _021ED87C ; =0x020FF590 + ldr r1, _021ED880 ; =0x020FF598 + mov r3, #0x200000 + bl FUN_021ED2FC +_021ED870: + mov r0, #3 + ldmia sp!, {r4, pc} + .align 2, 0 +_021ED878: .word 0x000082EA +_021ED87C: .word 0x020FF590 +_021ED880: .word 0x020FF598 + + arm_func_start FUN_021ED884 +FUN_021ED884: ; 0x021ED884 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + mov r0, #0 + strb r0, [r4, #0xd11] + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + add r0, r4, #0xd00 + ldrsb r2, [r0, #0x11] + ldr r0, _021ED8CC ; =0x020FF590 + ldr r1, _021ED8D0 ; =0x020FF598 + mov r3, #0x200000 + bl FUN_021ED2FC + mov r0, #3 + ldmia sp!, {r4, pc} + .align 2, 0 +_021ED8CC: .word 0x020FF590 +_021ED8D0: .word 0x020FF598 + + arm_func_start FUN_021ED8D4 +FUN_021ED8D4: ; 0x021ED8D4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #0x10 + bl FUN_021EB798 + mov r4, r0 + cmp r5, #3 + beq _021ED90C + cmp r5, #4 + beq _021ED938 + cmp r5, #5 + beq _021ED988 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021ED90C: + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + add r0, r4, #0xd00 + ldrsb r2, [r0, #0x11] + ldr r0, _021ED9C0 ; =0x020FF590 + ldr r1, _021ED9C4 ; =0x020FF598 + mov r3, #0x200000 + bl FUN_021ED2FC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021ED938: + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + ldrb r2, [r4, #0xd0f] + mov r0, #0xc0 + ldr r1, _021ED9C8 ; =0x00000474 + mul ip, r2, r0 + add r0, r4, ip + add r0, r0, #0x400 + ldrh r2, [r0, #0xa6] + ldr r0, _021ED9CC ; =0x0000047C + add r3, r4, r1 + add r1, r4, r0 + add r0, r3, ip + add r1, r1, ip + sub r2, r2, #1 + mov r3, #0x300000 + bl FUN_021ED2FC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021ED988: + bl OS_GetTick + str r0, [r4, #0xcb0] + str r1, [r4, #0xcb4] + ldrb r3, [r4, #0xd0f] + add r1, r4, #0x304 + mov r0, #0x24 + add r2, r4, #0xd00 + mla r1, r3, r0, r1 + ldrsb r2, [r2, #0x11] + ldr r0, _021ED9C0 ; =0x020FF590 + mov r3, #0x300000 + bl FUN_021ED2FC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021ED9C0: .word 0x020FF590 +_021ED9C4: .word 0x020FF598 +_021ED9C8: .word 0x00000474 +_021ED9CC: .word 0x0000047C + + arm_func_start FUN_021ED9D0 +FUN_021ED9D0: ; 0x021ED9D0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x10 + bl FUN_021EB798 + add r0, r0, #0xd00 + ldrh r2, [r0, #0x16] + cmp r2, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, pc} + mov ip, #0 + mov r3, ip + mov r1, #1 +_021EDA00: + mov r0, r1,lsl ip + ands r0, r2, r0 + beq _021EDA24 + cmp r3, r4 + moveq r0, ip, lsl #0x18 + moveq r0, r0, asr #0x18 + ldmeqia sp!, {r4, pc} + add r0, r3, #1 + and r3, r0, #0xff +_021EDA24: + add r0, ip, #1 + and ip, r0, #0xff + cmp ip, #0xd + blo _021EDA00 + mvn r0, #0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EDA3C +FUN_021EDA3C: ; 0x021EDA3C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x10 + bl FUN_021EB798 + add r0, r0, #0xd00 + cmp r4, #0xd + movhi r4, #0xd + ldrh r3, [r0, #0x16] + sub r1, r4, #1 + mov r2, #1 + orr r1, r3, r2, lsl r1 + strh r1, [r0, #0x16] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EDA70 +FUN_021EDA70: ; 0x021EDA70 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #0x10 + bl FUN_021EB798 + mov r5, r0 + bl FUN_021EB720 + mov r4, r0 + bl FUN_020A71F8 + cmp r4, #2 + bne _021EDAB0 + cmp r0, #3 + bne _021EDAB0 + mov r0, r5 + bl FUN_021ED884 + mov r4, r0 + b _021EDB38 +_021EDAB0: + cmp r4, #6 + bne _021EDACC + mov r0, r5 + mov r1, r4 + bl FUN_021ED388 + mov r4, r0 + b _021EDB38 +_021EDACC: + cmp r0, #3 + beq _021EDADC + cmp r0, #6 + bne _021EDB38 +_021EDADC: + mov r0, r5 + mov r1, r4 + bl FUN_021ED388 + mov r4, r0 + cmp r4, #7 + beq _021EDB38 + cmp r4, #3 + bne _021EDB0C + mov r0, r5 + bl FUN_021ED7E0 + mov r4, r0 + b _021EDB38 +_021EDB0C: + cmp r4, #4 + bne _021EDB24 + mov r0, r5 + bl FUN_021ED658 + mov r4, r0 + b _021EDB38 +_021EDB24: + cmp r4, #5 + bne _021EDB38 + mov r0, r5 + bl FUN_021ED538 + mov r4, r0 +_021EDB38: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EDB44 +FUN_021EDB44: ; 0x021EDB44 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + bl FUN_020A71F8 + mov r4, r0 + mov r0, #0x10 + bl FUN_021EB798 + cmp r4, #1 + bne _021EDBB0 + ldrb r1, [r0, #0xd0a] + mov r0, #0 + str r1, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + bl FUN_021ED17C + ldr r1, _021EDBC8 ; =FUN_021EC44C + add r0, sp, #0 + bl FUN_020A7BD4 + cmp r0, #1 + beq _021EDB9C + cmp r0, #4 + blt _021EDBBC +_021EDB9C: + mov r0, #1 + bl FUN_021EB6F4 + add sp, sp, #0x10 + mov r0, #0x11 + ldmia sp!, {r4, pc} +_021EDBB0: + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, pc} +_021EDBBC: + mov r0, #2 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EDBC8: .word FUN_021EC44C + + arm_func_start FUN_021EDBCC +FUN_021EDBCC: ; 0x021EDBCC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldrb r0, [r4, #0xd0d] + cmp r0, #6 + addhs sp, sp, #8 + ldmhsia sp!, {r4, pc} + bl FUN_021EB6AC + add r4, r4, r0, lsl #8 + ldrb r0, [r4, #0xc0] + ldrb r2, [r4, #0xc8] + ldrb r1, [r4, #0xc9] + cmp r0, #0 + ldrb r3, [r4, #0xca] + add r1, r2, r1 + ldrb r2, [r4, #0xcb] + add r1, r3, r1 + addne sp, sp, #8 + add r0, r2, r1 + ldmneia sp!, {r4, pc} + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc8 + bl FUN_021EDCA8 + str r0, [sp] + add r0, r4, #0xcc + bl FUN_021EDCA8 + str r0, [sp, #4] + add r0, sp, #0 + add r1, sp, #4 + bl FUN_0209A594 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EDC54 +FUN_021EDC54: ; 0x021EDC54 + rsb r0, r0, #0x20 + cmp r0, #0 + mvn r3, #0 + mov r1, #0 + ble _021EDC78 +_021EDC68: + add r1, r1, #1 + cmp r1, r0 + mov r3, r3, lsl #1 + blt _021EDC68 +_021EDC78: + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + mov r3, r3, lsl #0x18 + and r1, r1, #0xff + and r0, r0, #0xff00 + and r2, r2, #0xff0000 + orr r0, r1, r0 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 + bx lr + + arm_func_start FUN_021EDCA8 +FUN_021EDCA8: ; 0x021EDCA8 + ldrb r1, [r0] + ldrb r2, [r0, #1] + mov r3, #0 + orr r3, r3, r1, lsl #24 + ldrb r1, [r0, #2] + orr r2, r3, r2, lsl #16 + ldrb r0, [r0, #3] + orr r1, r2, r1, lsl #8 + orr r3, r1, r0 + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + mov r3, r3, lsl #0x18 + and r1, r1, #0xff + and r0, r0, #0xff00 + and r2, r2, #0xff0000 + orr r0, r1, r0 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 + bx lr + + arm_func_start FUN_021EDCFC +FUN_021EDCFC: ; 0x021EDCFC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r4, r2 + mov r5, r1 + ldr r0, _021EDDB8 ; =0x0220BB2C + mov r1, r4 + mov r2, #0x58 + bl MI_CpuCopy8 + ldr r0, [r6] + str r0, [r4, #4] + ldr r0, [r6, #4] + str r0, [r4, #8] + ldrb r0, [r5, #0xd0d] + cmp r0, #6 + ldmhsia sp!, {r4, r5, r6, pc} + bl FUN_021EB6AC + add r5, r5, r0, lsl #8 + ldrb r0, [r5, #0xc0] + cmp r0, #0 + beq _021EDD94 + mov r0, #0 + str r0, [r4, #0xc] + add r0, r5, #0xc0 + bl FUN_021EDCA8 + str r0, [r4, #0x10] + ldrb r0, [r5, #0xd0] + bl FUN_021EDC54 + str r0, [r4, #0x14] + add r0, r5, #0xc4 + bl FUN_021EDCA8 + str r0, [r4, #0x18] + add r0, r5, #0xc8 + bl FUN_021EDCA8 + str r0, [r4, #0x1c] + add r0, r5, #0xcc + bl FUN_021EDCA8 + str r0, [r4, #0x20] + ldmia sp!, {r4, r5, r6, pc} +_021EDD94: + mov r0, #1 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EDDB8: .word 0x0220BB2C + + arm_func_start FUN_021EDDBC +FUN_021EDDBC: ; 0x021EDDBC + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_02099A94 + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0xb + ldmneia sp!, {pc} + bl THUNK_FUN_02099BC8 + cmp r0, #0 + beq _021EDDF0 + mvn r1, #0x26 + cmp r0, r1 + bne _021EDDFC +_021EDDF0: + add sp, sp, #4 + mov r0, #9 + ldmfd sp!, {pc} +_021EDDFC: + mov r0, #0xb + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EDE08 +FUN_021EDE08: ; 0x021EDE08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrb r0, [r0, #0xd0d] + bl FUN_021EB6BC + mov r0, #0x10 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EDE24 +FUN_021EDE24: ; 0x021EDE24 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + bl FUN_021EB798 + mov r4, r0 + bl FUN_021DC7AC + movs r5, r0 + beq _021EDE88 + ldrb r0, [r6, #0xd0d] + bl FUN_021EB6AC + ldrb r1, [r4, #0x15] + cmp r1, r0 + bne _021EDE60 + bl FUN_021DC794 + str r0, [r4, #0x10] +_021EDE60: + bl FUN_021DC870 + cmp r5, #0xb + moveq r0, #0xf + ldmeqia sp!, {r4, r5, r6, pc} + ldrb r1, [r6, #0xd13] + mov r2, #1 + mov r0, #0xb + add r1, r6, r1, lsl #2 + strb r2, [r1, #0x444] + ldmia sp!, {r4, r5, r6, pc} +_021EDE88: + mov r0, #0xe + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EDE90 +FUN_021EDE90: ; 0x021EDE90 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl FUN_021EB798 + bl FUN_021DC970 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0xe + ldmeqia sp!, {pc} + mov r0, #3 + bl FUN_021EB6F4 + mov r0, #0x11 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EDEC8 +FUN_021EDEC8: ; 0x021EDEC8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_0209A60C + cmp r0, #0 + beq _021EDF00 + mov r0, r4 + bl FUN_021EDBCC + ldrb r0, [r4, #0xd0c] + mov r0, r0, lsl #0x1a + mov r0, r0, lsr #0x1e + cmp r0, #1 + moveq r0, #0xf + movne r0, #0xd + ldmia sp!, {r4, pc} +_021EDF00: + bl OS_GetTick + ldr r3, [r4, #0xcb0] + ldr r2, [r4, #0xcb4] + subs r3, r0, r3 + sbc r0, r1, r2 + mov r1, r0, lsl #6 + ldr r2, _021EDF54 ; =0x01FF6210 + orr r1, r1, r3, lsr #26 + mov r0, r3, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r1, #0 + cmpeq r0, #0xa + movlo r0, #0xc + ldmloia sp!, {r4, pc} + ldrb r1, [r4, #0xd13] + mov r2, #1 + mov r0, #0xb + add r1, r4, r1, lsl #2 + strb r2, [r1, #0x444] + ldmia sp!, {r4, pc} + .align 2, 0 +_021EDF54: .word 0x01FF6210 + + arm_func_start FUN_021EDF58 +FUN_021EDF58: ; 0x021EDF58 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + bl FUN_021EB798 + mov r5, r0 + mov r0, #4 + bl FUN_021EB798 + mov r4, r0 + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl FUN_021EDCFC + ldr r1, _021EDFB8 ; =0x021C8CC4 + mov r2, #4 + mov r0, r4 + str r2, [r1] + bl FUN_0209A2C0 + cmp r0, #0 + moveq r0, #0xc + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #2 + bl FUN_021EB6F4 + mov r0, #0x11 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EDFB8: .word 0x021C8CC4 + + arm_func_start FUN_021EDFBC +FUN_021EDFBC: ; 0x021EDFBC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl FUN_021EB720 + mov r5, r0 + mov r0, #0x10 + bl FUN_021EB798 + mov r4, r0 + bl FUN_020A71F8 + cmp r0, #9 + bne _021EE064 + sub r0, r5, #0xa + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021EE0B4 +_021EDFF4: ; jump table + b _021EE00C ; case 0 + b _021EE058 ; case 1 + b _021EE01C ; case 2 + b _021EE02C ; case 3 + b _021EE038 ; case 4 + b _021EE048 ; case 5 +_021EE00C: + mov r0, r4 + bl FUN_021EDF58 + mov r5, r0 + b _021EE0B4 +_021EE01C: + mov r0, r4 + bl FUN_021EDEC8 + mov r5, r0 + b _021EE0B4 +_021EE02C: + bl FUN_021EDE90 + mov r5, r0 + b _021EE0B4 +_021EE038: + mov r0, r4 + bl FUN_021EDE24 + mov r5, r0 + b _021EE0B4 +_021EE048: + mov r0, r4 + bl FUN_021EDE08 + mov r5, r0 + b _021EE0B4 +_021EE058: + bl FUN_021EDDBC + mov r5, r0 + b _021EE0B4 +_021EE064: + cmp r5, #0xb + beq _021EE08C + cmp r5, #0xe + beq _021EE098 + cmp r5, #0xf + bne _021EE0A0 + mov r0, r4 + bl FUN_021EDE08 + mov r5, r0 + b _021EE0B4 +_021EE08C: + bl FUN_021EDDBC + mov r5, r0 + b _021EE0B4 +_021EE098: + bl FUN_021DC7F0 + bl FUN_021DC870 +_021EE0A0: + ldrb r0, [r4, #0xd13] + mov r1, #2 + mov r5, #0xb + add r0, r4, r0, lsl #2 + strb r1, [r0, #0x444] +_021EE0B4: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EE0C0 +FUN_021EE0C0: ; 0x021EE0C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov r4, #3 + mul r4, r2, r4 + mov r4, r4, lsr #2 + mov sl, r0 + mov r0, r4 + cmp r3, r0 + andhs fp, r2, #3 + subhs r0, r2, fp + str r4, [sp, #4] + mov sb, r1 + strhs r0, [sp] + bhs _021EE104 + add sp, sp, #0x1c + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021EE104: + cmp r0, #0 + mov r7, #0 + ble _021EE190 + mov r5, r7 + add r4, sp, #0x10 + str r7, [sp, #0xc] + str r7, [sp, #8] +_021EE120: + ldr r8, [sp, #8] + mov r6, r8 +_021EE128: + add r0, r7, r6 + ldrb r0, [sl, r0] + bl FUN_021EE234 + rsb r2, r6, #3 + mov r1, #6 + mul r1, r2, r1 + orr r8, r8, r0, lsl r1 + add r6, r6, #1 + cmp r6, #4 + blt _021EE128 + mov r0, #3 + mul r1, r5, r0 + ldr r2, [sp, #0xc] + str r8, [sp, #0x10] +_021EE160: + rsb r0, r2, #2 + ldrb r0, [r4, r0] + add r2, r2, #1 + cmp r2, #3 + strb r0, [sb, r1] + add r1, r1, #1 + blt _021EE160 + ldr r0, [sp] + add r7, r7, #4 + cmp r7, r0 + add r5, r5, #1 + blt _021EE120 +_021EE190: + cmp fp, #0 + beq _021EE228 + mov r5, #0 + mov r4, r5 + str r5, [sp, #0x14] + cmp fp, #0 + ble _021EE1E4 + mov r6, #6 +_021EE1B0: + ldr r0, [sp] + add r0, r0, r4 + ldrb r0, [sl, r0] + bl FUN_021EE234 + rsb r1, r4, #3 + mul r2, r1, r6 + orr r5, r5, r0, lsl r2 + ldr r0, [sp, #0x14] + add r4, r4, #1 + orr r0, r0, r5 + cmp r4, fp + str r0, [sp, #0x14] + blt _021EE1B0 +_021EE1E4: + cmp fp, #0 + mov r2, #0 + ble _021EE228 + ldr r0, [sp] + mov r1, #3 + mul r1, r0, r1 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + mov r3, r0, asr #2 + add r1, sp, #0x14 +_021EE20C: + rsb r0, r2, #2 + ldrb r0, [r1, r0] + add r2, r2, #1 + cmp r2, fp + strb r0, [sb, r3] + add r3, r3, #1 + blt _021EE20C +_021EE228: + ldr r0, [sp, #4] + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_021EE234 +FUN_021EE234: ; 0x021EE234 + cmp r0, #0x41 + blo _021EE248 + cmp r0, #0x5a + subls r0, r0, #0x41 + bxls lr +_021EE248: + cmp r0, #0x61 + blo _021EE260 + cmp r0, #0x7a + subls r0, r0, #0x61 + addls r0, r0, #0x1a + bxls lr +_021EE260: + cmp r0, #0x30 + blo _021EE278 + cmp r0, #0x39 + subls r0, r0, #0x30 + addls r0, r0, #0x34 + bxls lr +_021EE278: + cmp r0, #0x2b + moveq r0, #0x3e + bxeq lr + cmp r0, #0x2f + moveq r0, #0x3f + bxeq lr + cmp r0, #0x3d + movne r0, #1 + moveq r0, #0 + rsb r0, r0, #0 + bx lr + + arm_func_start FUN_021EE2A4 +FUN_021EE2A4: ; 0x021EE2A4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r1, #0 + ldr lr, _021EE454 ; =0x92492493 + ldr ip, _021EE458 ; =0x00000007 +_021EE2BC: + smull r2, r3, lr, r1 + add r3, r1, r3 + mov r3, r3, asr #2 + mov r2, r1, lsr #0x1f + add r3, r2, r3 + smull r2, r3, ip, r3 + sub r3, r1, r2 + add r2, r3, #0xd + ldrb r3, [r0, r1] + ldrb r2, [r0, r2] + eor r2, r3, r2 + strb r2, [r4, r1] + add r1, r1, #1 + cmp r1, #0xd + blt _021EE2BC + mov ip, #0 +_021EE2FC: + add r3, ip, #3 + add r1, ip, #0xd + ldrb r2, [r4, r3] + ldrb r1, [r0, r1] + add ip, ip, #1 + cmp ip, #7 + eor r1, r2, r1 + strb r1, [r4, r3] + blt _021EE2FC + ldr r0, _021EE45C ; =0x0220D4DC + mov r3, #0 +_021EE328: + ldr r1, [r0] + ldrb r2, [r4, r3] + ldrsb r1, [r1, r3] + eor r1, r2, r1 + strb r1, [r4, r3] + add r3, r3, #1 + cmp r3, #0xd + blt _021EE328 + add r1, sp, #0 + mov r0, r4 + mov r2, #0xd + bl MI_CpuCopy8 + ldr r3, _021EE460 ; =0x0220BB84 + add ip, sp, #0 + mov r2, #0 +_021EE364: + ldrb r1, [ip] + ldrb r0, [r3] + add r2, r2, #1 + cmp r2, #0xd + strb r1, [r4, r0] + add ip, ip, #1 + add r3, r3, #1 + blt _021EE364 + ldr r0, _021EE464 ; =0x0220D4E0 + mov r3, #0 +_021EE38C: + ldr r1, [r0] + ldrb r2, [r4, r3] + ldrsb r1, [r1, r3] + eor r1, r2, r1 + strb r1, [r4, r3] + add r3, r3, #1 + cmp r3, #0xd + blt _021EE38C + ldr r2, _021EE468 ; =0x0220BB94 + mov ip, #0 +_021EE3B4: + ldrb r3, [r4, ip] + mov r0, r3, asr #4 + and r1, r0, #0xf + and r0, r3, #0xf + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + orr r0, r0, r1, lsl #4 + strb r0, [r4, ip] + add ip, ip, #1 + cmp ip, #0xd + blt _021EE3B4 + mov r0, #0 +_021EE3E4: + add lr, r0, #6 + ldrb r2, [r4, r0] + ldrb r1, [r4, lr] + add ip, r0, #9 + add r3, r0, #3 + eor r1, r2, r1 + strb r1, [r4, r0] + ldrb r2, [r4, r3] + ldrb r1, [r4, ip] + eor r1, r2, r1 + strb r1, [r4, r3] + ldrb r2, [r4, lr] + ldrb r1, [r4, r3] + eor r1, r2, r1 + strb r1, [r4, lr] + ldrb r2, [r4, ip] + ldrb r1, [r4, r0] + eor r1, r2, r1 + strb r1, [r4, ip] + ldrb r1, [r4, r0] + ldrb r2, [r4, #0xc] + add r0, r0, #1 + cmp r0, #3 + eor r1, r2, r1 + strb r1, [r4, #0xc] + blt _021EE3E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EE454: .word 0x92492493 +_021EE458: .word 0x00000007 +_021EE45C: .word 0x0220D4DC +_021EE460: .word 0x0220BB84 +_021EE464: .word 0x0220D4E0 +_021EE468: .word 0x0220BB94 + + arm_func_start FUN_021EE46C +FUN_021EE46C: ; 0x021EE46C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x6c + mov r5, r0 + add r0, sp, #0x14 + mov r4, r1 + bl DGT_Hash1Reset + add r0, sp, #0x14 + mov r1, r5 + mov r2, #0x18 + bl DGT_Hash1SetSource + add r0, sp, #0 + add r1, sp, #0x14 + bl DGT_Hash1GetDigest_R + add r0, sp, #3 + mov r1, r4 + mov r2, #0xd + bl MI_CpuCopy8 + add sp, sp, #0x6c + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EE4B8 +FUN_021EE4B8: ; 0x021EE4B8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + ldr lr, _021EE5AC ; =0x0220BBA4 + add ip, sp, #0 + mov r4, r1 + mov r3, #0xc +_021EE4D0: + ldrb r2, [lr], #1 + ldrb r1, [lr], #1 + subs r3, r3, #1 + strb r2, [ip], #1 + strb r1, [ip], #1 + bne _021EE4D0 + mov r1, r4 + mov r2, #0x20 + mov r3, #0x18 + bl FUN_021EE0C0 + mov r3, #0 + ldr r0, _021EE5B0 ; =0x0220D4E4 +_021EE500: + ldr r1, [r0] + ldrb r2, [r4, r3] + ldrsb r1, [r1, r3] + eor r1, r2, r1 + strb r1, [r4, r3] + add r3, r3, #1 + cmp r3, #0x18 + blt _021EE500 + mov lr, #0 + add ip, sp, #0 + mov r1, #0xff +_021EE52C: + and r7, lr, #0xff + ldrb r0, [ip, r7] + mov r6, r7 + ldrb r5, [r4, lr] + cmp r0, #0xff + beq _021EE570 +_021EE544: + add r3, ip, r6 + ldrb r6, [ip, r6] + ldrb r0, [ip, r7] + ldrb r2, [r4, r6] + mov r7, r6 + strb r5, [r4, r0] + strb r1, [r3] + ldrb r0, [ip, r6] + mov r5, r2 + cmp r0, #0xff + bne _021EE544 +_021EE570: + add lr, lr, #1 + cmp lr, #0x18 + blt _021EE52C + ldr r0, _021EE5B4 ; =0x0220D4D8 + mov r3, #0 +_021EE584: + ldr r1, [r0] + ldrb r2, [r4, r3] + ldrsb r1, [r1, r3] + eor r1, r2, r1 + strb r1, [r4, r3] + add r3, r3, #1 + cmp r3, #0x18 + blt _021EE584 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EE5AC: .word 0x0220BBA4 +_021EE5B0: .word 0x0220D4E4 +_021EE5B4: .word 0x0220D4D8 + + arm_func_start FUN_021EE5B8 +FUN_021EE5B8: ; 0x021EE5B8 + ldr ip, _021EE5C4 ; =FUN_021EE2A4 + add r0, r0, #0xc + bx ip + .align 2, 0 +_021EE5C4: .word FUN_021EE2A4 + + arm_func_start FUN_021EE5C8 +FUN_021EE5C8: ; 0x021EE5C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021EE5F0 ; =0x0220D540 + mov r2, #8 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EE5F0: .word 0x0220D540 + + arm_func_start FUN_021EE5F4 +FUN_021EE5F4: ; 0x021EE5F4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + mov r4, r1 + add r1, sp, #0 + bl FUN_021EE4B8 + ldr r1, _021EE63C ; =0x0220D54C + add r0, sp, #0 + mov r2, #8 + bl memcmp + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, pc} + add r0, sp, #8 + mov r1, r4 + mov r2, #0xa + bl MI_CpuCopy8 + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + .align 2, 0 +_021EE63C: .word 0x0220D54C + + arm_func_start FUN_021EE640 +FUN_021EE640: ; 0x021EE640 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + mov r4, r1 + add r1, sp, #0 + bl FUN_021EE4B8 + add r0, sp, #0 + mov r1, r4 + bl FUN_021EE46C + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EE668 +FUN_021EE668: ; 0x021EE668 + stmdb sp!, {lr} + sub sp, sp, #0x1c + add r1, sp, #0 + bl FUN_021EE4B8 + ldr r1, _021EE69C ; =0x0220D54C + add r0, sp, #0 + mov r2, #8 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x1c + ldmfd sp!, {pc} + .align 2, 0 +_021EE69C: .word 0x0220D54C + + arm_func_start FUN_021EE6A0 +FUN_021EE6A0: ; 0x021EE6A0 + stmdb sp!, {lr} + sub sp, sp, #0x5c + ldr r0, _021EE7D4 ; =0x02210EE0 + mov r2, #8 + ldr r0, [r0] + mvn r1, #0 + cmp r0, r1 + ldreq r1, _021EE7D8 ; =0x02210E5C + moveq r0, #1 + str r2, [sp, #0x10] + streq r0, [r1] + addeq sp, sp, #0x5c + ldmeqia sp!, {pc} + bl FUN_021EFF2C + cmp r0, #0 + beq _021EE774 + add r0, sp, #8 + str r0, [sp] + add r1, sp, #0x10 + str r1, [sp, #4] + ldr r0, _021EE7D4 ; =0x02210EE0 + add r1, sp, #0x18 + ldr r0, [r0] + mov r2, #0x40 + mov r3, #0 + bl FUN_021EFC40 + mov r1, r0 + add r0, sp, #0x18 + add r2, sp, #8 + add r3, sp, #0x14 + bl FUN_021EE7DC + cmp r0, #0 + bne _021EE774 + ldr r0, _021EE7D4 ; =0x02210EE0 + ldr r0, [r0] + bl FUN_021EFD9C + ldr r1, [sp, #0x14] + ands r0, r1, #1 + ldrne r0, _021EE7D8 ; =0x02210E5C + movne r1, #2 + strne r1, [r0] + bne _021EE764 + ands r0, r1, #2 + ldrne r0, _021EE7D8 ; =0x02210E5C + movne r1, #3 + strne r1, [r0] + ldreq r0, _021EE7D8 ; =0x02210E5C + moveq r1, #1 + streq r1, [r0] +_021EE764: + ldr r0, _021EE7D8 ; =0x02210E5C + add sp, sp, #0x5c + ldr r0, [r0] + ldmfd sp!, {pc} +_021EE774: + bl FUN_021F025C + ldr r1, _021EE7D4 ; =0x02210EE0 + ldr r2, [r1, #0x50] + add r2, r2, #0x7d0 + cmp r0, r2 + bls _021EE7C8 + ldr r0, [r1, #0x54] + cmp r0, #1 + bne _021EE7B4 + ldr r0, [r1] + bl FUN_021EFD9C + ldr r1, _021EE7D8 ; =0x02210E5C + mov r0, #1 + str r0, [r1] + add sp, sp, #0x5c + ldmfd sp!, {pc} +_021EE7B4: + bl FUN_021EE990 + ldr r0, _021EE7D4 ; =0x02210EE0 + ldr r1, [r0, #0x54] + add r1, r1, #1 + str r1, [r0, #0x54] +_021EE7C8: + mov r0, #0 + add sp, sp, #0x5c + ldmfd sp!, {pc} + .align 2, 0 +_021EE7D4: .word 0x02210EE0 +_021EE7D8: .word 0x02210E5C + + arm_func_start FUN_021EE7DC +FUN_021EE7DC: ; 0x021EE7DC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + cmp r1, #7 + mov r6, r2 + mov r4, r3 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, pc} + ldr r1, _021EE88C ; =0x02210EE8 + add r0, r6, #4 + mov r2, #4 + bl memcmp + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _021EE890 ; =0x02210EE0 + ldrh r1, [r6, #2] + ldrh r0, [r0, #6] + cmp r1, r0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021EE894 ; =0x0220D558 + mov r0, r5 + mov r2, #3 + bl memcmp + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldrsb r2, [r5, #3] + ldrsb r0, [r5, #4] + ldrsb r1, [r5, #5] + mov r3, r2, lsl #0x18 + mov r2, r0, lsl #0x10 + ldrsb r0, [r5, #6] + mov r1, r1, lsl #8 + and r3, r3, #0xff000000 + and r2, r2, #0xff0000 + orr r2, r3, r2 + and r1, r1, #0xff00 + orr r1, r2, r1 + and r0, r0, #0xff + orr r0, r1, r0 + str r0, [r4] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EE88C: .word 0x02210EE8 +_021EE890: .word 0x02210EE0 +_021EE894: .word 0x0220D558 + + arm_func_start FUN_021EE898 +FUN_021EE898: ; 0x021EE898 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x44 + mov r4, r0 + ldr r0, _021EE974 ; =0x02210EA0 + mov r1, r4 + bl strcpy + ldr r0, _021EE978 ; =0x02210EE0 + mvn r1, #0 + str r1, [r0] + bl FUN_021F024C + ldr r0, _021EE97C ; =0x02210E60 + ldrsb r5, [r0] + cmp r5, #0 + bne _021EE8E0 + ldr r1, _021EE980 ; =0x0220D55C + add r0, sp, #0 + mov r2, r4 + bl sprintf +_021EE8E0: + cmp r5, #0 + ldrne r0, _021EE97C ; =0x02210E60 + ldr r1, _021EE984 ; =0x00006CFC + ldr r2, _021EE988 ; =0x02210EE4 + addeq r0, sp, #0 + bl FUN_021EE9E0 + cmp r0, #0 + addeq sp, sp, #0x44 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + mov r1, r0 + mov r2, #0 + bl FUN_021EFDB8 + ldr r2, _021EE978 ; =0x02210EE0 + mvn r1, #0 + cmp r0, r1 + str r0, [r2] + addeq sp, sp, #0x44 + ldmeqia sp!, {r4, r5, pc} + mov r1, #9 + mov r0, r4 + strb r1, [r2, #0xc] + bl strlen + mov r5, r0 + ldr r0, _021EE98C ; =0x02210EF1 + mov r1, r4 + add r2, r5, #1 + bl memcpy + ldr r0, _021EE978 ; =0x02210EE0 + add r1, r5, #6 + str r1, [r0, #0x4c] + bl FUN_021EE990 + ldr r0, _021EE978 ; =0x02210EE0 + mov r1, #0 + str r1, [r0, #0x54] + add sp, sp, #0x44 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EE974: .word 0x02210EA0 +_021EE978: .word 0x02210EE0 +_021EE97C: .word 0x02210E60 +_021EE980: .word 0x0220D55C +_021EE984: .word 0x00006CFC +_021EE988: .word 0x02210EE4 +_021EE98C: .word 0x02210EF1 + + arm_func_start FUN_021EE990 +FUN_021EE990: ; 0x021EE990 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _021EE9D4 ; =0x02210EE4 + mov r0, #8 + str r1, [sp] + ldr r1, _021EE9D8 ; =0x02210EE0 + str r0, [sp, #4] + ldr r0, [r1] + ldr r2, [r1, #0x4c] + ldr r1, _021EE9DC ; =0x02210EEC + mov r3, #0 + bl FUN_021EFBD4 + bl FUN_021F025C + ldr r1, _021EE9D8 ; =0x02210EE0 + str r0, [r1, #0x50] + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021EE9D4: .word 0x02210EE4 +_021EE9D8: .word 0x02210EE0 +_021EE9DC: .word 0x02210EEC + + arm_func_start FUN_021EE9E0 +FUN_021EE9E0: ; 0x021EE9E0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r3, r1, asr #8 + mov r1, r1, lsl #8 + mov r4, r2 + mov ip, #2 + and r2, r3, #0xff + and r1, r1, #0xff00 + strb ip, [r4, #1] + orr r1, r2, r1 + strh r1, [r4, #2] + mov r5, r0 + bl FUN_021EFB38 + str r0, [r4, #4] + ldr r1, [r4, #4] + mvn r0, #0 + cmp r1, r0 + bne _021EEA58 + mov r0, r5 + bl FUN_0209A6EC + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [r4, #4] +_021EEA58: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EEA64 +FUN_021EEA64: ; 0x021EEA64 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r7, [sp, #0x2c] + mov r6, #0 + str r0, [sp] + mov sl, r1 + mov sb, r3 + str r6, [r7] + subs r5, r2, #1 + ldr r8, [sp, #0x28] + bmi _021EEAC4 + mov fp, #1 +_021EEA94: + add r0, r6, r5 + mov r4, r0, asr #1 + mla r0, r4, sb, sl + ldr r1, [sp] + blx r8 + cmp r0, #0 + streq fp, [r7] + cmp r0, #0 + addlt r6, r4, #1 + subge r5, r4, #1 + cmp r6, r5 + ble _021EEA94 +_021EEAC4: + mla r0, r6, sb, sl + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_021EEAD0 +FUN_021EEAD0: ; 0x021EEAD0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r8, r2 + mov sl, r0 + mov sb, r1 + mov r7, r3 + cmp r8, #0 + ldr r6, [sp, #0x20] + mov r5, #0 + ble _021EEB20 + mov r4, r5 +_021EEAF8: + mov r0, sl + add r1, sb, r4 + blx r6 + cmp r0, #0 + mlaeq r0, r7, r5, sb + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r5, r5, #1 + cmp r5, r8 + add r4, r4, r7 + blt _021EEAF8 +_021EEB20: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + + arm_func_start FUN_021EEB28 +FUN_021EEB28: ; 0x021EEB28 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021EF06C + subs r4, r0, #1 + addmi sp, sp, #4 + ldmmiia sp!, {r4, r5, pc} +_021EEB44: + mov r0, r5 + mov r1, r4 + bl FUN_021EED84 + subs r4, r4, #1 + bpl _021EEB44 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EEB60 +FUN_021EEB60: ; 0x021EEB60 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r7, r1 + mov r8, r0 + mov r6, r2 + bne _021EEB88 + ldr r0, _021EEBC8 ; =0x0220D580 + ldr r1, _021EEBCC ; =0x0220D584 + ldr r3, _021EEBD0 ; =0x00000121 + mov r2, #0 + bl __msl_assertion_failed +_021EEB88: + ldr r0, [r8] + subs r5, r0, #1 + bmi _021EEBC0 +_021EEB94: + mov r0, r8 + mov r1, r5 + bl FUN_021EEFFC + mov r1, r6 + mov r4, r0 + blx r7 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + subs r5, r5, #1 + bpl _021EEB94 +_021EEBC0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021EEBC8: .word 0x0220D580 +_021EEBCC: .word 0x0220D584 +_021EEBD0: .word 0x00000121 + + arm_func_start FUN_021EEBD4 +FUN_021EEBD4: ; 0x021EEBD4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r6, r1 + mov r7, r0 + mov r5, r2 + bne _021EEC00 + ldr r0, _021EEC34 ; =0x0220D580 + ldr r1, _021EEC38 ; =0x0220D584 + mov r2, #0 + mov r3, #0x104 + bl __msl_assertion_failed +_021EEC00: + ldr r0, [r7] + subs r4, r0, #1 + addmi sp, sp, #4 + ldmmiia sp!, {r4, r5, r6, r7, pc} +_021EEC10: + mov r0, r7 + mov r1, r4 + bl FUN_021EEFFC + mov r1, r5 + blx r6 + subs r4, r4, #1 + bpl _021EEC10 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EEC34: .word 0x0220D580 +_021EEC38: .word 0x0220D584 + + arm_func_start FUN_021EEC3C +FUN_021EEC3C: ; 0x021EEC3C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov ip, #1 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + str ip, [sp, #8] + beq _021EEC6C + ldr r8, [r7] + cmp r8, #0 + bne _021EEC78 +_021EEC6C: + add sp, sp, #0x10 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021EEC78: + ldr r1, [sp, #0x28] + cmp r1, #0 + beq _021EECB0 + mov r1, r4 + bl FUN_021EEFFC + add r1, sp, #8 + str r5, [sp] + str r1, [sp, #4] + mov r1, r0 + ldr r3, [r7, #8] + mov r0, r6 + sub r2, r8, r4 + bl FUN_021EEA64 + b _021EECD0 +_021EECB0: + mov r1, r4 + bl FUN_021EEFFC + str r5, [sp] + mov r1, r0 + ldr r3, [r7, #8] + mov r0, r6 + sub r2, r8, r4 + bl FUN_021EEAD0 +_021EECD0: + cmp r0, #0 + beq _021EECFC + ldr r1, [sp, #8] + cmp r1, #0 + beq _021EECFC + ldr r2, [r7, #0x14] + ldr r1, [r7, #8] + sub r0, r0, r2 + bl _s32_div_f + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021EECFC: + mvn r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_021EED08 +FUN_021EED08: ; 0x021EED08 + ldr ip, _021EED24 ; =0x020E1888 + mov r2, r0 + mov r3, r1 + ldr r0, [r2, #0x14] + ldr r1, [r2] + ldr r2, [r2, #8] + bx ip + .align 2, 0 +_021EED24: .word 0x020E1888 + + arm_func_start FUN_021EED28 +FUN_021EED28: ; 0x021EED28 + stmdb sp!, {r4, r5, r6, lr} + movs r4, r2 + mov r6, r0 + mov r5, r1 + bmi _021EED48 + ldr r0, [r6] + cmp r4, r0 + blt _021EED5C +_021EED48: + ldr r0, _021EED7C ; =0x0220D590 + ldr r1, _021EED80 ; =0x0220D584 + mov r2, #0 + mov r3, #0xd3 + bl __msl_assertion_failed +_021EED5C: + mov r0, r6 + mov r1, r4 + bl FUN_021EF240 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_021EF1B8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EED7C: .word 0x0220D590 +_021EED80: .word 0x0220D584 + + arm_func_start FUN_021EED84 +FUN_021EED84: ; 0x021EED84 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r4, r1 + mov r5, r0 + bmi _021EEDA4 + ldr r0, [r5] + cmp r4, r0 + blt _021EEDB8 +_021EEDA4: + ldr r0, _021EEDD8 ; =0x0220D590 + ldr r1, _021EEDDC ; =0x0220D584 + mov r2, #0 + mov r3, #0xca + bl __msl_assertion_failed +_021EEDB8: + mov r0, r5 + mov r1, r4 + bl FUN_021EF240 + mov r0, r5 + mov r1, r4 + bl FUN_021EEDE0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EEDD8: .word 0x0220D590 +_021EEDDC: .word 0x0220D584 + + arm_func_start FUN_021EEDE0 +FUN_021EEDE0: ; 0x021EEDE0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r1 + mov r4, r0 + bmi _021EEE00 + ldr r0, [r4] + cmp r7, r0 + blt _021EEE14 +_021EEE00: + ldr r0, _021EEE6C ; =0x0220D590 + ldr r1, _021EEE70 ; =0x0220D584 + mov r2, #0 + mov r3, #0xc0 + bl __msl_assertion_failed +_021EEE14: + ldr r0, [r4] + sub r6, r0, #1 + cmp r7, r6 + bge _021EEE58 + mov r0, r4 + mov r1, r7 + bl FUN_021EEFFC + mov r5, r0 + mov r0, r4 + add r1, r7, #1 + bl FUN_021EEFFC + mov r1, r0 + ldr r3, [r4, #8] + sub r0, r6, r7 + mul r2, r3, r0 + mov r0, r5 + bl memmove +_021EEE58: + ldr r0, [r4] + sub r0, r0, #1 + str r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EEE6C: .word 0x0220D590 +_021EEE70: .word 0x0220D584 + + arm_func_start FUN_021EEE74 +FUN_021EEE74: ; 0x021EEE74 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + movs r4, r2 + mov r6, r0 + mov r5, r1 + bne _021EEEA0 + ldr r0, _021EEEE8 ; =0x0220D5B0 + ldr r1, _021EEEEC ; =0x0220D584 + mov r2, #0 + mov r3, #0xb7 + bl __msl_assertion_failed +_021EEEA0: + add r0, sp, #8 + str r4, [sp] + str r0, [sp, #4] + ldr r1, [r6, #0x14] + ldr r2, [r6] + ldr r3, [r6, #8] + mov r0, r5 + bl FUN_021EEA64 + ldr r2, [r6, #0x14] + ldr r1, [r6, #8] + sub r0, r0, r2 + bl _s32_div_f + mov r2, r0 + mov r0, r6 + mov r1, r5 + bl FUN_021EEEF0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EEEE8: .word 0x0220D5B0 +_021EEEEC: .word 0x0220D584 + + arm_func_start FUN_021EEEF0 +FUN_021EEEF0: ; 0x021EEEF0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r4, r2 + mov r6, r0 + mov r5, r1 + bmi _021EEF10 + ldr r0, [r6] + cmp r4, r0 + ble _021EEF24 +_021EEF10: + ldr r0, _021EEFA0 ; =0x0220D5BC + ldr r1, _021EEFA4 ; =0x0220D584 + mov r2, #0 + mov r3, #0xa7 + bl __msl_assertion_failed +_021EEF24: + ldr r1, [r6] + ldr r0, [r6, #4] + cmp r1, r0 + bne _021EEF3C + mov r0, r6 + bl FUN_021EF1E4 +_021EEF3C: + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + ldr r0, [r6] + sub r8, r0, #1 + cmp r4, r8 + bge _021EEF8C + mov r0, r6 + add r1, r4, #1 + bl FUN_021EEFFC + mov r7, r0 + mov r0, r6 + mov r1, r4 + bl FUN_021EEFFC + mov r1, r0 + ldr r3, [r6, #8] + sub r0, r8, r4 + mul r2, r3, r0 + mov r0, r7 + bl memmove +_021EEF8C: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_021EF1B8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021EEFA0: .word 0x0220D5BC +_021EEFA4: .word 0x0220D584 + + arm_func_start FUN_021EEFA8 +FUN_021EEFA8: ; 0x021EEFA8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + mov r4, r1 + bne _021EEFD0 + ldr r0, _021EEFF4 ; =0x0220D5DC + ldr r1, _021EEFF8 ; =0x0220D584 + mov r2, #0 + mov r3, #0xa0 + bl __msl_assertion_failed +_021EEFD0: + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r5] + mov r0, r5 + mov r1, r4 + bl FUN_021EEEF0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EEFF4: .word 0x0220D5DC +_021EEFF8: .word 0x0220D584 + + arm_func_start FUN_021EEFFC +FUN_021EEFFC: ; 0x021EEFFC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r4, r1 + mov r5, r0 + bmi _021EF01C + ldr r0, [r5] + cmp r4, r0 + blt _021EF030 +_021EF01C: + ldr r0, _021EF064 ; =0x0220D590 + ldr r1, _021EF068 ; =0x0220D584 + mov r2, #0 + mov r3, #0x94 + bl __msl_assertion_failed +_021EF030: + cmp r4, #0 + blt _021EF044 + ldr r0, [r5] + cmp r4, r0 + blt _021EF050 +_021EF044: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021EF050: + ldr r0, [r5, #0x14] + ldr r1, [r5, #8] + mla r0, r1, r4, r0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EF064: .word 0x0220D590 +_021EF068: .word 0x0220D584 + + arm_func_start FUN_021EF06C +FUN_021EF06C: ; 0x021EF06C + ldr r0, [r0] + bx lr + + arm_func_start FUN_021EF074 +FUN_021EF074: ; 0x021EF074 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + bne _021EF098 + ldr r0, _021EF0DC ; =0x0220D5DC + ldr r1, _021EF0E0 ; =0x0220D584 + mov r2, #0 + mov r3, #0x69 + bl __msl_assertion_failed +_021EF098: + ldr r0, [r5] + mov r4, #0 + cmp r0, #0 + ble _021EF0C4 +_021EF0A8: + mov r0, r5 + mov r1, r4 + bl FUN_021EF240 + ldr r0, [r5] + add r4, r4, #1 + cmp r4, r0 + blt _021EF0A8 +_021EF0C4: + ldr r0, [r5, #0x14] + bl FUN_021DD82C + mov r0, r5 + bl FUN_021DD82C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EF0DC: .word 0x0220D5DC +_021EF0E0: .word 0x0220D584 + + arm_func_start FUN_021EF0E4 +FUN_021EF0E4: ; 0x021EF0E4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r0, #0x18 + mov r6, r1 + mov r5, r2 + bl FUN_021DD860 + movs r4, r0 + bne _021EF11C + ldr r0, _021EF1A8 ; =0x0220D5DC + ldr r1, _021EF1AC ; =0x0220D584 + mov r2, #0 + mov r3, #0x52 + bl __msl_assertion_failed +_021EF11C: + cmp r7, #0 + bne _021EF138 + ldr r0, _021EF1B0 ; =0x0220D5E4 + ldr r1, _021EF1AC ; =0x0220D584 + mov r2, #0 + mov r3, #0x53 + bl __msl_assertion_failed +_021EF138: + mov r0, #0 + cmp r6, #0 + moveq r6, #8 + str r0, [r4] + str r6, [r4, #4] + str r7, [r4, #8] + str r6, [r4, #0xc] + str r5, [r4, #0x10] + ldr r1, [r4, #4] + cmp r1, #0 + beq _021EF198 + ldr r0, [r4, #8] + mul r0, r1, r0 + bl FUN_021DD860 + str r0, [r4, #0x14] + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021EF19C + ldr r0, _021EF1B4 ; =0x0220D5F0 + ldr r1, _021EF1AC ; =0x0220D584 + mov r2, #0 + mov r3, #0x5e + bl __msl_assertion_failed + b _021EF19C +_021EF198: + str r0, [r4, #0x14] +_021EF19C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EF1A8: .word 0x0220D5DC +_021EF1AC: .word 0x0220D584 +_021EF1B0: .word 0x0220D5E4 +_021EF1B4: .word 0x0220D5F0 + + arm_func_start FUN_021EF1B8 +FUN_021EF1B8: ; 0x021EF1B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + mov r1, r2 + bl FUN_021EEFFC + ldr r2, [r5, #8] + mov r1, r4 + bl memcpy + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EF1E4 +FUN_021EF1E4: ; 0x021EF1E4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #4] + ldr r2, [r4, #4] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + mul r1, r2, r1 + bl FUN_021DD844 + str r0, [r4, #0x14] + ldr r0, [r4, #0x14] + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, _021EF238 ; =0x0220D5F0 + ldr r1, _021EF23C ; =0x0220D584 + mov r2, #0 + mov r3, #0x41 + bl __msl_assertion_failed + ldmia sp!, {r4, pc} + .align 2, 0 +_021EF238: .word 0x0220D5F0 +_021EF23C: .word 0x0220D584 + + arm_func_start FUN_021EF240 +FUN_021EF240: ; 0x021EF240 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r2, [r4, #0x10] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021EEFFC + ldr r1, [r4, #0x10] + blx r1 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EF264 +FUN_021EF264: ; 0x021EF264 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r6, r1 + mov r7, r0 + mov r5, r2 + bne _021EF290 + ldr r0, _021EF2DC ; =0x0220D5FC + ldr r1, _021EF2E0 ; =0x0220D600 + mov r2, #0 + mov r3, #0xd3 + bl __msl_assertion_failed +_021EF290: + ldr r0, [r7, #4] + mov r4, #0 + cmp r0, #0 + ble _021EF2D0 +_021EF2A0: + ldr r0, [r7] + mov r1, r6 + ldr r0, [r0, r4, lsl #2] + mov r2, r5 + bl FUN_021EEB60 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r7, #4] + add r4, r4, #1 + cmp r4, r0 + blt _021EF2A0 +_021EF2D0: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EF2DC: .word 0x0220D5FC +_021EF2E0: .word 0x0220D600 + + arm_func_start FUN_021EF2E4 +FUN_021EF2E4: ; 0x021EF2E4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r6, r1 + mov r7, r0 + mov r5, r2 + bne _021EF310 + ldr r0, _021EF350 ; =0x0220D5FC + ldr r1, _021EF354 ; =0x0220D600 + mov r2, #0 + mov r3, #0xb6 + bl __msl_assertion_failed +_021EF310: + ldr r0, [r7, #4] + mov r4, #0 + cmp r0, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, pc} +_021EF324: + ldr r0, [r7] + mov r1, r6 + ldr r0, [r0, r4, lsl #2] + mov r2, r5 + bl FUN_021EEBD4 + ldr r0, [r7, #4] + add r4, r4, #1 + cmp r4, r0 + blt _021EF324 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021EF350: .word 0x0220D5FC +_021EF354: .word 0x0220D600 + + arm_func_start FUN_021EF358 +FUN_021EF358: ; 0x021EF358 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r6, r0 + mov r5, r1 + bne _021EF380 + ldr r0, _021EF3EC ; =0x0220D60C + ldr r1, _021EF3F0 ; =0x0220D600 + mov r2, #0 + mov r3, #0x94 + bl __msl_assertion_failed +_021EF380: + cmp r6, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + mov r0, r5 + blx r2 + mov r3, #0 + str r3, [sp] + ldr r1, [r6] + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + ldr r2, [r6, #0x10] + mov r1, r5 + bl FUN_021EEC3C + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6] + ldr r0, [r0, r4, lsl #2] + bl FUN_021EEFFC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EF3EC: .word 0x0220D60C +_021EF3F0: .word 0x0220D600 + + arm_func_start FUN_021EF3F4 +FUN_021EF3F4: ; 0x021EF3F4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r6, r0 + mov r5, r1 + bne _021EF41C + ldr r0, _021EF48C ; =0x0220D60C + ldr r1, _021EF490 ; =0x0220D600 + mov r2, #0 + mov r3, #0x82 + bl __msl_assertion_failed +_021EF41C: + cmp r6, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + mov r0, r5 + blx r2 + mov r3, #0 + str r3, [sp] + ldr r1, [r6] + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + ldr r2, [r6, #0x10] + mov r1, r5 + bl FUN_021EEC3C + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6] + ldr r0, [r0, r4, lsl #2] + bl FUN_021EED84 + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EF48C: .word 0x0220D60C +_021EF490: .word 0x0220D600 + + arm_func_start FUN_021EF494 +FUN_021EF494: ; 0x021EF494 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r6, r0 + mov r5, r1 + bne _021EF4BC + ldr r0, _021EF538 ; =0x0220D60C + ldr r1, _021EF53C ; =0x0220D600 + mov r2, #0 + mov r3, #0x71 + bl __msl_assertion_failed +_021EF4BC: + cmp r6, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + mov r0, r5 + blx r2 + mov r3, #0 + str r3, [sp] + ldr r1, [r6] + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + ldr r2, [r6, #0x10] + mov r1, r5 + bl FUN_021EEC3C + mov r2, r0 + mvn r0, #0 + cmp r2, r0 + bne _021EF520 + ldr r0, [r6] + mov r1, r5 + ldr r0, [r0, r4, lsl #2] + bl FUN_021EEFA8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} +_021EF520: + ldr r0, [r6] + mov r1, r5 + ldr r0, [r0, r4, lsl #2] + bl FUN_021EED28 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EF538: .word 0x0220D60C +_021EF53C: .word 0x0220D600 + + arm_func_start FUN_021EF540 +FUN_021EF540: ; 0x021EF540 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + mov r4, #0 + bne _021EF564 + ldr r0, _021EF5A8 ; =0x0220D60C + ldr r1, _021EF5AC ; =0x0220D600 + mov r2, r4 + mov r3, #0x61 + bl __msl_assertion_failed +_021EF564: + cmp r6, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6, #4] + mov r5, #0 + cmp r0, #0 + ble _021EF5A0 +_021EF580: + ldr r0, [r6] + ldr r0, [r0, r5, lsl #2] + bl FUN_021EF06C + ldr r1, [r6, #4] + add r5, r5, #1 + cmp r5, r1 + add r4, r4, r0 + blt _021EF580 +_021EF5A0: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021EF5A8: .word 0x0220D60C +_021EF5AC: .word 0x0220D600 + + arm_func_start FUN_021EF5B0 +FUN_021EF5B0: ; 0x021EF5B0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + bne _021EF5D4 + ldr r0, _021EF624 ; =0x0220D60C + ldr r1, _021EF628 ; =0x0220D600 + mov r2, #0 + mov r3, #0x51 + bl __msl_assertion_failed +_021EF5D4: + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r5, #4] + mov r4, #0 + cmp r0, #0 + ble _021EF60C +_021EF5F0: + ldr r0, [r5] + ldr r0, [r0, r4, lsl #2] + bl FUN_021EF074 + ldr r0, [r5, #4] + add r4, r4, #1 + cmp r4, r0 + blt _021EF5F0 +_021EF60C: + ldr r0, [r5] + bl FUN_021DD82C + mov r0, r5 + bl FUN_021DD82C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021EF624: .word 0x0220D60C +_021EF628: .word 0x0220D600 + + arm_func_start FUN_021EF62C +FUN_021EF62C: ; 0x021EF62C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + movs r7, r3 + mov sl, r0 + mov sb, r1 + mov r8, r2 + ldr r6, [sp, #0x24] + bne _021EF65C + ldr r0, _021EF750 ; =0x0220D614 + ldr r1, _021EF754 ; =0x0220D600 + mov r2, #0 + mov r3, #0x38 + bl __msl_assertion_failed +_021EF65C: + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _021EF67C + ldr r0, _021EF758 ; =0x0220D61C + ldr r1, _021EF754 ; =0x0220D600 + mov r2, #0 + mov r3, #0x39 + bl __msl_assertion_failed +_021EF67C: + cmp sl, #0 + bne _021EF698 + ldr r0, _021EF75C ; =0x0220D624 + ldr r1, _021EF754 ; =0x0220D600 + mov r2, #0 + mov r3, #0x3a + bl __msl_assertion_failed +_021EF698: + cmp sb, #0 + bne _021EF6B4 + ldr r0, _021EF760 ; =0x0220D630 + ldr r1, _021EF754 ; =0x0220D600 + mov r2, #0 + mov r3, #0x3b + bl __msl_assertion_failed +_021EF6B4: + mov r0, #0x14 + bl FUN_021DD860 + movs r5, r0 + bne _021EF6D8 + ldr r0, _021EF764 ; =0x0220D60C + ldr r1, _021EF754 ; =0x0220D600 + mov r2, #0 + mov r3, #0x3e + bl __msl_assertion_failed +_021EF6D8: + mov r0, sb, lsl #2 + bl FUN_021DD860 + str r0, [r5] + ldr r0, [r5] + cmp r0, #0 + bne _021EF704 + ldr r0, _021EF768 ; =0x0220D63C + ldr r1, _021EF754 ; =0x0220D600 + mov r2, #0 + mov r3, #0x41 + bl __msl_assertion_failed +_021EF704: + cmp sb, #0 + mov r4, #0 + ble _021EF734 +_021EF710: + mov r0, sl + mov r1, r8 + mov r2, r6 + bl FUN_021EF0E4 + ldr r1, [r5] + str r0, [r1, r4, lsl #2] + add r4, r4, #1 + cmp r4, sb + blt _021EF710 +_021EF734: + str sb, [r5, #4] + ldr r0, [sp, #0x20] + str r6, [r5, #8] + str r0, [r5, #0x10] + mov r0, r5 + str r7, [r5, #0xc] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021EF750: .word 0x0220D614 +_021EF754: .word 0x0220D600 +_021EF758: .word 0x0220D61C +_021EF75C: .word 0x0220D624 +_021EF760: .word 0x0220D630 +_021EF764: .word 0x0220D60C +_021EF768: .word 0x0220D63C + + arm_func_start FUN_021EF76C +FUN_021EF76C: ; 0x021EF76C + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr ip, [sp, #0x10] + str r3, [sp] + mov r3, r2 + mov r2, #4 + str ip, [sp, #4] + bl FUN_021EF62C + add sp, sp, #0xc + ldmfd sp!, {pc} + + arm_func_start FUN_021EF794 +FUN_021EF794: ; 0x021EF794 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x68 + mov r6, r0 + add r0, sp, #0x10 + mov r5, r1 + mov r4, r2 + bl FUN_020A8BBC + add r0, sp, #0x10 + mov r1, r6 + mov r2, r5 + bl FUN_020A8BB0 + add r0, sp, #0 + add r1, sp, #0x10 + bl FUN_020A8BA4 + add r0, sp, #0 + mov r1, r4 + bl FUN_021EF7E0 + add sp, sp, #0x68 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EF7E0 +FUN_021EF7E0: ; 0x021EF7E0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, #0 + mov r8, r0 + mov r7, r1 + mov r5, r6 + ldr r4, _021EF81C ; =0x0220D64C +_021EF7F8: + ldrb r2, [r8, r6] + mov r1, r4 + add r0, r7, r5 + bl sprintf + add r6, r6, #1 + cmp r6, #0x10 + add r5, r5, #2 + blo _021EF7F8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021EF81C: .word 0x0220D64C + + arm_func_start FUN_021EF820 +FUN_021EF820: ; 0x021EF820 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r7, r1 + mov r6, r2 + mov sl, r0 + mov r4, r7 + mov sb, r6 + cmp r3, #1 + beq _021EF84C + cmp r3, #2 + beq _021EF854 + b _021EF85C +_021EF84C: + ldr r5, _021EF948 ; =0x0220BBBC + b _021EF860 +_021EF854: + ldr r5, _021EF94C ; =0x0220BBC0 + b _021EF860 +_021EF85C: + ldr r5, _021EF950 ; =0x0220BBC4 +_021EF860: + cmp r6, #0 + ble _021EF898 + mov r8, #3 +_021EF86C: + cmp r6, #3 + movge r2, r8 + movlt r2, r6 + mov r0, sl + mov r1, r7 + bl FUN_021EF95C + sub sb, sb, #3 + cmp sb, #0 + add r7, r7, #4 + add sl, sl, #3 + bgt _021EF86C +_021EF898: + ldr r1, _021EF954 ; =0x55555556 + ldr r2, _021EF958 ; =0x00000003 + smull r0, r3, r1, r6 + add r3, r3, r6, lsr #31 + smull r0, r1, r2, r3 + sub r3, r6, r0 + mov r1, r7 + cmp r3, #1 + subeq r1, r7, #2 + beq _021EF8C8 + cmp r3, #2 + subeq r1, r7, #1 +_021EF8C8: + mov r0, #0 + strb r0, [r7] + cmp r7, r4 + ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021EF8D8: + sub r7, r7, #1 + cmp r7, r1 + ldrhssb r0, [r5, #2] + strhsb r0, [r7] + bhs _021EF93C + ldrsb r0, [r7] + cmp r0, #0x19 + addle r0, r0, #0x41 + strleb r0, [r7] + ble _021EF93C + cmp r0, #0x33 + addle r0, r0, #0x47 + strleb r0, [r7] + ble _021EF93C + cmp r0, #0x3d + suble r0, r0, #4 + strleb r0, [r7] + ble _021EF93C + cmp r0, #0x3e + ldreqsb r0, [r5] + streqb r0, [r7] + beq _021EF93C + cmp r0, #0x3f + ldreqsb r0, [r5, #1] + streqb r0, [r7] +_021EF93C: + cmp r7, r4 + bhi _021EF8D8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021EF948: .word 0x0220BBBC +_021EF94C: .word 0x0220BBC0 +_021EF950: .word 0x0220BBC4 +_021EF954: .word 0x55555556 +_021EF958: .word 0x00000003 + + arm_func_start FUN_021EF95C +FUN_021EF95C: ; 0x021EF95C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r2, #0 + mov lr, #0 + ble _021EF988 + add ip, sp, #0 +_021EF974: + ldrsb r3, [r0, lr] + add lr, lr, #1 + cmp lr, r2 + strb r3, [ip], #1 + blt _021EF974 +_021EF988: + cmp lr, #3 + bge _021EF9AC + add r0, sp, #0 + add r2, r0, lr + mov r0, #0 +_021EF99C: + add lr, lr, #1 + cmp lr, #3 + strb r0, [r2], #1 + blt _021EF99C +_021EF9AC: + ldrb r0, [sp] + mov r0, r0, asr #2 + strb r0, [r1] + ldrb r2, [sp] + ldrb r0, [sp, #1] + and r2, r2, #3 + mov r2, r2, lsl #4 + orr r0, r2, r0, asr #4 + strb r0, [r1, #1] + ldrb r2, [sp, #1] + ldrb r0, [sp, #2] + and r2, r2, #0xf + mov r2, r2, lsl #2 + orr r0, r2, r0, asr #6 + strb r0, [r1, #2] + ldrb r0, [sp, #2] + and r0, r0, #0x3f + strb r0, [r1, #3] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EF9FC +FUN_021EF9FC: ; 0x021EF9FC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + subs r4, r1, r5 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl FUN_021EFA48 + mov r1, r4 + bl _s32_div_f + add r0, r1, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EFA2C +FUN_021EFA2C: ; 0x021EFA2C + cmp r0, #0 + bicne r1, r0, #0x80000000 + ldr r0, _021EFA44 ; =0x0220D654 + moveq r1, #1 + str r1, [r0] + bx lr + .align 2, 0 +_021EFA44: .word 0x0220D654 + + arm_func_start FUN_021EFA48 +FUN_021EFA48: ; 0x021EFA48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021EFA6C ; =0x0220D654 + ldr r0, [r0] + bl FUN_021EFA70 + ldr r1, _021EFA6C ; =0x0220D654 + str r0, [r1] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021EFA6C: .word 0x0220D654 + + arm_func_start FUN_021EFA70 +FUN_021EFA70: ; 0x021EFA70 + ldr r1, _021EFABC ; =0x0000FFFF + ldr r2, _021EFAC0 ; =0x000041A7 + mov r3, r0, lsr #0x10 + and r1, r0, r1 + mul ip, r3, r2 + mul r2, r1, r2 + ldr r0, _021EFAC4 ; =0x00007FFF + mvn r1, #0x80000000 + and r0, ip, r0 + add r0, r2, r0, lsl #16 + cmp r0, r1 + bichi r0, r0, #0x80000000 + addhi r0, r0, #1 + add r0, r0, ip, lsr #15 + mvn r1, #0x80000000 + cmp r0, r1 + bichi r0, r0, #0x80000000 + addhi r0, r0, #1 + bx lr + .align 2, 0 +_021EFABC: .word 0x0000FFFF +_021EFAC0: .word 0x000041A7 +_021EFAC4: .word 0x00007FFF + + arm_func_start FUN_021EFAC8 +FUN_021EFAC8: ; 0x021EFAC8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_IsTickAvailable + cmp r0, #1 + beq _021EFAF0 + ldr r0, _021EFB18 ; =0x0220D658 + ldr r1, _021EFB1C ; =0x0220D678 + ldr r3, _021EFB20 ; =0x00000667 + mov r2, #0 + bl __msl_assertion_failed +_021EFAF0: + bl OS_GetTick + mov r1, r1, lsl #6 + orr r1, r1, r0, lsr #26 + ldr r2, _021EFB24 ; =0x01FF6210 + mov r0, r0, lsl #6 + mov r3, #0 + bl _ll_udiv + cmp r4, #0 + strne r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_021EFB18: .word 0x0220D658 +_021EFB1C: .word 0x0220D678 +_021EFB20: .word 0x00000667 +_021EFB24: .word 0x01FF6210 + + arm_func_start FUN_021EFB28 +FUN_021EFB28: ; 0x021EFB28 + ldr r0, _021EFB34 ; =0x02210F3C + ldr r0, [r0] + bx lr + .align 2, 0 +_021EFB34: .word 0x02210F3C + + arm_func_start FUN_021EFB38 +FUN_021EFB38: ; 0x021EFB38 + stmdb sp!, {lr} + sub sp, sp, #4 + add r1, sp, #0 + bl FUN_0209A224 + cmp r0, #0 + mvneq r0, #0 + ldrne r0, [sp] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFB5C +FUN_021EFB5C: ; 0x021EFB5C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r2 + ldr r2, [r4] + mov r5, r1 + strb r2, [r5] + bl FUN_0209A650 + ldrb r2, [r5] + mvn r1, #0 + str r2, [r4] + bl FUN_021EFDD4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EFB90 +FUN_021EFB90: ; 0x021EFB90 + ldr ip, _021EFBA0 ; =FUN_021EFDD4 + mov r0, #0 + mvn r1, #0 + bx ip + .align 2, 0 +_021EFBA0: .word FUN_021EFDD4 + + arm_func_start FUN_021EFBA4 +FUN_021EFBA4: ; 0x021EFBA4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [sp, #8] + mov r0, r3 + ldr r2, [r1] + mov r1, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFBD4 +FUN_021EFBD4: ; 0x021EFBD4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r5, [sp, #0x20] + add r6, sp, #4 + mov r4, #4 +_021EFBE8: + ldrb lr, [r5], #1 + ldrb ip, [r5], #1 + subs r4, r4, #1 + strb lr, [r6], #1 + strb ip, [r6], #1 + bne _021EFBE8 + ldr lr, [sp, #0x24] + add ip, sp, #4 + strb lr, [sp, #4] + str ip, [sp] + bl FUN_0209A7D0 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021EFC24 +FUN_021EFC24: ; 0x021EFC24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_0209A858 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFC40 +FUN_021EFC40: ; 0x021EFC40 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, [sp, #0x14] + ldr r5, [sp, #0x10] + ldr ip, [r4] + strb ip, [r5] + str r5, [sp] + bl FUN_0209A880 + ldrb r2, [r5] + mvn r1, #0 + str r2, [r4] + bl FUN_021EFDD4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EFC78 +FUN_021EFC78: ; 0x021EFC78 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_0209A91C + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFC94 +FUN_021EFC94: ; 0x021EFC94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r2 + ldr r2, [r4] + mov r5, r1 + strb r2, [r5] + bl FUN_0209A504 + ldrb r2, [r5] + mvn r1, #0 + str r2, [r4] + bl FUN_021EFDD4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021EFCC8 +FUN_021EFCC8: ; 0x021EFCC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_0209A588 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFCE4 +FUN_021EFCE4: ; 0x021EFCE4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r4, sp, #0 + mov lr, #4 +_021EFCF4: + ldrb ip, [r1], #1 + ldrb r3, [r1], #1 + subs lr, lr, #1 + strb ip, [r4], #1 + strb r3, [r4], #1 + bne _021EFCF4 + add r1, sp, #0 + strb r2, [sp] + bl FUN_0209A944 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EFD28 +FUN_021EFD28: ; 0x021EFD28 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldrh r3, [r1, #2] + cmp r3, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r4, sp, #0 + mov lr, #4 +_021EFD4C: + ldrb ip, [r1], #1 + ldrb r3, [r1], #1 + subs lr, lr, #1 + strb ip, [r4], #1 + strb r3, [r4], #1 + bne _021EFD4C + add r1, sp, #0 + strb r2, [sp] + bl FUN_0209A9A4 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021EFD80 +FUN_021EFD80: ; 0x021EFD80 + stmdb sp!, {lr} + sub sp, sp, #4 + bl thunk_FUN_020995dc + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFD9C +FUN_021EFD9C: ; 0x021EFD9C + stmdb sp!, {lr} + sub sp, sp, #4 + bl thunk_FUN_0209996c + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFDB8 +FUN_021EFDB8: ; 0x021EFDB8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_0209A9D0 + mvn r1, #0 + bl FUN_021EFDD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFDD4 +FUN_021EFDD4: ; 0x021EFDD4 + cmp r0, #0 + ldrlt r2, _021EFDE8 ; =0x02210F3C + strlt r0, [r2] + movlt r0, r1 + bx lr + .align 2, 0 +_021EFDE8: .word 0x02210F3C + + arm_func_start FUN_021EFDEC +FUN_021EFDEC: ; 0x021EFDEC + ldr r3, [r0] + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r3, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r1, r1, r0 + mov r0, r1, lsr #0x18 + and r2, r0, #0xff + mov r0, r1, lsr #0x10 + and r0, r0, #0xff + cmp r2, #0xa + moveq r0, #1 + bxeq lr + cmp r2, #0xac + bne _021EFE54 + cmp r0, #0x10 + blt _021EFE54 + cmp r0, #0x1f + movle r0, #1 + bxle lr +_021EFE54: + cmp r2, #0xc0 + bne _021EFE68 + cmp r0, #0xa8 + moveq r0, #1 + bxeq lr +_021EFE68: + mov r0, #0 + bx lr + + arm_func_start FUN_021EFE70 +FUN_021EFE70: ; 0x021EFE70 + stmdb sp!, {r4, lr} + ldr r4, _021EFEE8 ; =0x0220D684 + ldr r1, _021EFEEC ; =0x02210F40 + ldr lr, _021EFEF0 ; =0x02210F38 + ldr r2, _021EFEF4 ; =0x02210F64 + mov ip, #2 + mov r3, #0 + ldr r0, _021EFEF8 ; =0x02210F50 + str r4, [r1] + str lr, [r1, #4] + strh ip, [r1, #8] + strh r3, [r1, #0xa] + str r2, [r1, #0xc] + str r3, [r0] + bl FUN_02099C78 + ldr r1, _021EFEF8 ; =0x02210F50 + bl FUN_0209A174 + ldr r2, _021EFEF8 ; =0x02210F50 + ldr r0, [r2] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _021EFEF4 ; =0x02210F64 + mov r3, #0 + ldr r0, _021EFEEC ; =0x02210F40 + mov ip, #4 + str r2, [r1] + strh ip, [r0, #0xa] + str r3, [r1, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_021EFEE8: .word 0x0220D684 +_021EFEEC: .word 0x02210F40 +_021EFEF0: .word 0x02210F38 +_021EFEF4: .word 0x02210F64 +_021EFEF8: .word 0x02210F50 + + arm_func_start FUN_021EFEFC +FUN_021EFEFC: ; 0x021EFEFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #0 + add r2, sp, #0 + mov r3, r1 + str r1, [sp] + bl FUN_021EFF5C + cmp r0, #1 + ldreq r0, [sp] + movne r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFF2C +FUN_021EFF2C: ; 0x021EFF2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r2, #0 + add r1, sp, #0 + mov r3, r2 + str r2, [sp] + bl FUN_021EFF5C + cmp r0, #1 + ldreq r0, [sp] + movne r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021EFF5C +FUN_021EFF5C: ; 0x021EFF5C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r6, r1 + mov r1, #0 + strh r1, [sp, #4] + str r0, [sp] + ldrnesh r0, [sp, #4] + mov r5, r2 + mov r2, #0 + orrne r0, r0, #1 + strneh r0, [sp, #4] + cmp r5, #0 + ldrnesh r0, [sp, #4] + mov r4, r3 + mov r3, r2 + orrne r0, r0, #8 + strneh r0, [sp, #4] + add r0, sp, #0 + mov r1, #1 + strh r2, [sp, #6] + bl FUN_0209A0AC + cmp r0, #0 + addlt sp, sp, #8 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, pc} + cmp r6, #0 + beq _021EFFEC + cmp r0, #0 + ble _021EFFE4 + ldrsh r1, [sp, #6] + ands r1, r1, #0x41 + movne r1, #1 + strne r1, [r6] + bne _021EFFEC +_021EFFE4: + mov r1, #0 + str r1, [r6] +_021EFFEC: + cmp r5, #0 + beq _021F0018 + cmp r0, #0 + ble _021F0010 + ldrsh r1, [sp, #6] + ands r1, r1, #8 + movne r1, #1 + strne r1, [r5] + bne _021F0018 +_021F0010: + mov r1, #0 + str r1, [r5] +_021F0018: + cmp r4, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, #0 + ble _021F0044 + ldrsh r1, [sp, #6] + ands r1, r1, #0x20 + movne r1, #1 + addne sp, sp, #8 + strne r1, [r4] + ldmneia sp!, {r4, r5, r6, pc} +_021F0044: + mov r1, #0 + str r1, [r4] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F0054 +FUN_021F0054: ; 0x021F0054 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r1, #4 + str r1, [sp, #8] + add ip, sp, #8 + ldr r1, _021F0094 ; =0x0000FFFF + ldr r2, _021F0098 ; =0x00001001 + add r3, sp, #4 + str ip, [sp] + bl FUN_021EFBA4 + mvn r1, #0 + cmp r0, r1 + ldrne r1, [sp, #4] + mov r0, r1 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021F0094: .word 0x0000FFFF +_021F0098: .word 0x00001001 + + arm_func_start FUN_021F009C +FUN_021F009C: ; 0x021F009C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r1, #4 + str r1, [sp, #8] + add ip, sp, #8 + ldr r1, _021F00DC ; =0x0000FFFF + ldr r2, _021F00E0 ; =0x00001002 + add r3, sp, #4 + str ip, [sp] + bl FUN_021EFBA4 + mvn r1, #0 + cmp r0, r1 + ldrne r1, [sp, #4] + mov r0, r1 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021F00DC: .word 0x0000FFFF +_021F00E0: .word 0x00001002 + + arm_func_start FUN_021F00E4 +FUN_021F00E4: ; 0x021F00E4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021F0128 ; =0x0000FFFF + mov ip, #4 + ldr r2, _021F012C ; =0x00001001 + add r3, sp, #0xc + str ip, [sp] + bl FUN_021EFB90 + mvn r1, #0 + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_021F0128: .word 0x0000FFFF +_021F012C: .word 0x00001001 + + arm_func_start FUN_021F0130 +FUN_021F0130: ; 0x021F0130 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _021F0174 ; =0x0000FFFF + mov ip, #4 + ldr r2, _021F0178 ; =0x00001002 + add r3, sp, #0xc + str ip, [sp] + bl FUN_021EFB90 + mvn r1, #0 + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_021F0174: .word 0x0000FFFF +_021F0178: .word 0x00001002 + + arm_func_start FUN_021F017C +FUN_021F017C: ; 0x021F017C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + mov r1, #3 + mov r2, #0 + mov r5, r0 + bl FUN_0209A4B4 + cmp r4, #0 + bicne r2, r0, #4 + orreq r2, r0, #4 + mov r0, r5 + mov r1, #4 + bl FUN_0209A4B4 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021F01C4 +FUN_021F01C4: ; 0x021F01C4 + ldrsb r3, [r0] + mov r2, r0 + cmp r3, #0 + beq _021F01FC + ldr r1, _021F0204 ; =0x0210420C +_021F01D8: + cmp r3, #0 + blt _021F01EC + cmp r3, #0x80 + bge _021F01EC + ldrb r3, [r1, r3] +_021F01EC: + strb r3, [r0] + ldrsb r3, [r0, #1]! + cmp r3, #0 + bne _021F01D8 +_021F01FC: + mov r0, r2 + bx lr + .align 2, 0 +_021F0204: .word 0x0210420C + + arm_func_start FUN_021F0208 +FUN_021F0208: ; 0x021F0208 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + bl strlen + add r0, r0, #1 + bl FUN_021DD860 + movs r4, r0 + beq _021F023C + mov r1, r5 + bl strcpy +_021F023C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021F0248 +FUN_021F0248: ; 0x021F0248 + bx lr + + arm_func_start FUN_021F024C +FUN_021F024C: ; 0x021F024C + bx lr + + arm_func_start FUN_021F0250 +FUN_021F0250: ; 0x021F0250 + ldr ip, _021F0258 ; =0x020CAFC0 + bx ip + .align 2, 0 +_021F0258: .word 0x020CAFC0 + + arm_func_start FUN_021F025C +FUN_021F025C: ; 0x021F025C + stmdb sp!, {lr} + sub sp, sp, #4 + bl OS_IsTickAvailable + cmp r0, #1 + beq _021F0284 + ldr r0, _021F02A8 ; =0x0220D658 + ldr r1, _021F02AC ; =0x0220D678 + ldr r3, _021F02B0 ; =0x00000109 + mov r2, #0 + bl __msl_assertion_failed +_021F0284: + bl OS_GetTick + mov r1, r1, lsl #6 + orr r1, r1, r0, lsr #26 + ldr r2, _021F02B4 ; =0x000082EA + mov r0, r0, lsl #6 + mov r3, #0 + bl _ll_udiv + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F02A8: .word 0x0220D658 +_021F02AC: .word 0x0220D678 +_021F02B0: .word 0x00000109 +_021F02B4: .word 0x000082EA + + arm_func_start FUN_021F02B8 +FUN_021F02B8: ; 0x021F02B8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r3, r2 + cmp r0, #0 + beq _021F02D8 + ldr ip, [r0] + cmp ip, #0 + bne _021F02E4 +_021F02D8: + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F02E4: + ldr r2, [ip, #0x108] + cmp r2, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r2, [ip, #0x1d8] + cmp r2, #4 + bne _021F0318 + ldr r1, _021F0344 ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0318: + cmp r3, #0 + bne _021F0334 + ldr r1, _021F0348 ; =0x0220D6E4 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0334: + mov r2, #1 + bl FUN_021F1A64 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F0344: .word 0x0220D690 +_021F0348: .word 0x0220D6E4 + + arm_func_start FUN_021F034C +FUN_021F034C: ; 0x021F034C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x204 + movs r7, r0 + mov r6, r1 + mov r5, r3 + beq _021F0370 + ldr r4, [r7] + cmp r4, #0 + bne _021F037C +_021F0370: + add sp, sp, #0x204 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F037C: + ldr r1, [r4, #0x108] + cmp r1, #0 + addne sp, sp, #0x204 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, [r4, #0x1d8] + cmp r1, #4 + bne _021F03B0 + ldr r1, _021F0560 ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #0x204 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F03B0: + cmp r2, #0 + bne _021F03CC + ldr r1, _021F0564 ; =0x0220D6F8 + bl FUN_021FAEEC + add sp, sp, #0x204 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F03CC: + cmp r5, #0 + bne _021F03E8 + ldr r1, _021F0568 ; =0x0220D710 + bl FUN_021FAEEC + add sp, sp, #0x204 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F03E8: + mov r1, r2 + add r0, sp, #0 + mov r2, #0x100 + bl FUN_021FB3DC + ldrsb r0, [sp] + cmp r0, #0 + beq _021F0424 + add r2, sp, #0 + mov r1, #0x2f +_021F040C: + ldrsb r0, [r2] + cmp r0, #0x5c + streqb r1, [r2] + ldrsb r0, [r2, #1]! + cmp r0, #0 + bne _021F040C +_021F0424: + add r0, sp, #0x100 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + add r0, sp, #0x100 + ldrsb r0, [r0] + cmp r0, #0 + beq _021F0464 + add r2, sp, #0x100 + mov r1, #0x2f +_021F044C: + ldrsb r0, [r2] + cmp r0, #0x5c + streqb r1, [r2] + ldrsb r0, [r2, #1]! + cmp r0, #0 + bne _021F044C +_021F0464: + ldr r0, [r4, #0x214] + cmp r6, r0 + bne _021F04A0 + add r0, sp, #0 + add r1, r4, #0x218 + bl strcmp + cmp r0, #0 + bne _021F04A0 + add r0, sp, #0x100 + add r1, r4, #0x318 + bl strcmp + cmp r0, #0 + addeq sp, sp, #0x204 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021F04A0: + add r1, sp, #0 + add r0, r4, #0x218 + mov r2, #0x100 + str r6, [r4, #0x214] + bl FUN_021FB3DC + add r1, sp, #0x100 + add r0, r4, #0x318 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r2, _021F056C ; =0x0220D728 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r7 + mov r2, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F0570 ; =0x0220D6C0 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F0574 ; =0x0220D734 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r7 + add r1, r4, #0x1f4 + add r2, sp, #0 + bl FUN_021F2F9C + ldr r2, _021F0578 ; =0x0220D744 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r7 + add r1, r4, #0x1f4 + add r2, sp, #0x100 + bl FUN_021F2F9C + ldr r2, _021F057C ; =0x0220D6CC + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, #0 + add sp, sp, #0x204 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F0560: .word 0x0220D690 +_021F0564: .word 0x0220D6F8 +_021F0568: .word 0x0220D710 +_021F056C: .word 0x0220D728 +_021F0570: .word 0x0220D6C0 +_021F0574: .word 0x0220D734 +_021F0578: .word 0x0220D744 +_021F057C: .word 0x0220D6CC + + arm_func_start FUN_021F0580 +FUN_021F0580: ; 0x021F0580 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021F059C + ldr r3, [r0] + cmp r3, #0 + bne _021F05A8 +_021F059C: + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F05A8: + ldr r2, [r3, #0x108] + cmp r2, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r2, [r3, #0x1d8] + cmp r2, #4 + bne _021F05DC + ldr r1, _021F05F0 ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F05DC: + bl FUN_021F17B0 + cmp r0, #0 + moveq r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F05F0: .word 0x0220D690 + + arm_func_start FUN_021F05F4 +FUN_021F05F4: ; 0x021F05F4 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021F0610 + ldr r2, [r0] + cmp r2, #0 + bne _021F061C +_021F0610: + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021F061C: + ldr r2, [r2, #0x108] + cmp r2, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + add r2, sp, #0 + bl FUN_021F85E8 + cmp r0, #0 + beq _021F0658 + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {pc} +_021F0658: + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021F0664 +FUN_021F0664: ; 0x021F0664 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r2 + cmp r0, #0 + beq _021F0684 + ldr r2, [r0] + cmp r2, #0 + bne _021F0690 +_021F0684: + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0690: + ldr r2, [r2, #0x108] + cmp r2, #0 + movne r0, #0 + addne sp, sp, #8 + strne r0, [r4] + ldmneia sp!, {r4, pc} + add r2, sp, #0 + bl FUN_021F85E8 + cmp r0, #0 + beq _021F06D0 + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + ldrne r0, [r0] + strne r0, [r4] + bne _021F06D8 +_021F06D0: + mvn r0, #0 + str r0, [r4] +_021F06D8: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F06E4 +FUN_021F06E4: ; 0x021F06E4 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r0 + mov r4, r2 + beq _021F0700 + ldr r3, [r5] + cmp r3, #0 + bne _021F0708 +_021F0700: + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F0708: + ldr r2, [r3, #0x108] + cmp r2, #0 + beq _021F072C + mov r0, r4 + mov r1, #0 + mov r2, #0x210 + bl Call_FillMemWithValue + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021F072C: + cmp r4, #0 + bne _021F0744 + ldr r1, _021F0814 ; =0x0220D750 + bl FUN_021FAEEC + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F0744: + cmp r1, #0 + ldr r2, [r3, #0x430] + blt _021F0758 + cmp r1, r2 + blt _021F076C +_021F0758: + ldr r1, _021F0818 ; =0x0220D760 + mov r0, r5 + bl FUN_021FAEEC + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F076C: + bl FUN_021F8430 + movs r6, r0 + bne _021F078C + ldr r1, _021F0818 ; =0x0220D760 + mov r0, r5 + bl FUN_021FAEEC + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F078C: + ldr r5, [r6, #8] + cmp r5, #0 + bne _021F07AC + ldr r0, _021F081C ; =0x0220D770 + ldr r1, _021F0820 ; =0x0220D77C + ldr r3, _021F0824 ; =0x000005CF + mov r2, #0 + bl __msl_assertion_failed +_021F07AC: + ldr r0, [r6] + str r0, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + ldr r1, [r5, #8] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r1] + beq _021F07DC + add r0, r4, #8 + mov r2, #0x100 + bl FUN_021FB3DC +_021F07DC: + ldr r1, [r5, #0xc] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r1] + beq _021F07FC + add r0, r4, #0x108 + mov r2, #0x100 + bl FUN_021FB3DC +_021F07FC: + ldr r1, [r5, #0x10] + mov r0, #0 + str r1, [r4, #0x208] + ldr r1, [r5, #0x14] + str r1, [r4, #0x20c] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F0814: .word 0x0220D750 +_021F0818: .word 0x0220D760 +_021F081C: .word 0x0220D770 +_021F0820: .word 0x0220D77C +_021F0824: .word 0x000005CF + + arm_func_start FUN_021F0828 +FUN_021F0828: ; 0x021F0828 + cmp r0, #0 + beq _021F083C + ldr r2, [r0] + cmp r2, #0 + bne _021F0844 +_021F083C: + mov r0, #2 + bx lr +_021F0844: + ldr r0, [r2, #0x108] + cmp r0, #0 + movne r0, #0 + strne r0, [r1] + ldreq r2, [r2, #0x430] + moveq r0, #0 + streq r2, [r1] + bx lr + + arm_func_start FUN_021F0864 +FUN_021F0864: ; 0x021F0864 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r4, r0 + beq _021F0880 + ldr r5, [r4] + cmp r5, #0 + bne _021F088C +_021F0880: + add sp, sp, #4 + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F088C: + ldr r2, [r5, #0x108] + cmp r2, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r2, [r5, #0x1d8] + cmp r2, #4 + bne _021F08C0 + ldr r1, _021F0940 ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F08C0: + add r2, sp, #0 + bl FUN_021F85E8 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r1, [sp] + ldr r0, [r1, #0x14] + sub r0, r0, #1 + str r0, [r1, #0x14] + ldr r0, [r5, #0x100] + cmp r0, #0 + bne _021F0934 + ldr r1, [sp] + ldr r0, [r1, #0x14] + cmp r0, #0 + bgt _021F0934 + ldr r0, [r1, #0x10] + bl FUN_021DD82C + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [sp] + bl FUN_021F83EC + cmp r0, #0 + beq _021F0934 + ldr r1, [sp] + mov r0, r4 + bl FUN_021F85A0 +_021F0934: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F0940: .word 0x0220D690 + + arm_func_start FUN_021F0944 +FUN_021F0944: ; 0x021F0944 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021F0960 + ldr r3, [r0] + cmp r3, #0 + bne _021F096C +_021F0960: + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F096C: + ldr r2, [r3, #0x108] + cmp r2, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r2, [r3, #0x1d8] + cmp r2, #4 + bne _021F09A0 + ldr r1, _021F09AC ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F09A0: + bl FUN_021F1984 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F09AC: .word 0x0220D690 + + arm_func_start FUN_021F09B0 +FUN_021F09B0: ; 0x021F09B0 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _021F0B0C ; =0x00000408 + sub sp, sp, ip + movs r6, r0 + mov r5, r1 + beq _021F09D4 + ldr r4, [r6] + cmp r4, #0 + bne _021F09E4 +_021F09D4: + ldr ip, _021F0B0C ; =0x00000408 + mov r0, #2 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} +_021F09E4: + ldr r1, [r4, #0x108] + cmp r1, #0 + ldrne ip, _021F0B0C ; =0x00000408 + movne r0, #0 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, [r4, #0x1d8] + cmp r1, #4 + bne _021F0A20 + ldr r1, _021F0B10 ; =0x0220D690 + bl FUN_021FAEEC + ldr ip, _021F0B0C ; =0x00000408 + mov r0, #2 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} +_021F0A20: + cmp r2, #0 + bne _021F0A40 + ldr r1, _021F0B14 ; =0x0220D784 + bl FUN_021FAEEC + ldr ip, _021F0B0C ; =0x00000408 + mov r0, #2 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} +_021F0A40: + mov r1, r2 + ldr r2, _021F0B18 ; =0x00000401 + add r0, sp, #0 + bl FUN_021FB3DC + ldrsb r0, [sp] + cmp r0, #0 + beq _021F0A7C + add r2, sp, #0 + mov r1, #0x2f +_021F0A64: + ldrsb r0, [r2] + cmp r0, #0x5c + streqb r1, [r2] + ldrsb r0, [r2, #1]! + cmp r0, #0 + bne _021F0A64 +_021F0A7C: + ldr r2, _021F0B1C ; =0x0220D794 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F0B20 ; =0x0220D6C0 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F0B24 ; =0x0220D7A0 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r2, r5 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F0B28 ; =0x0220D7B0 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + add r2, sp, #0 + bl FUN_021F2F9C + ldr r2, _021F0B2C ; =0x0220D6CC + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, #0 + ldr ip, _021F0B0C ; =0x00000408 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F0B0C: .word 0x00000408 +_021F0B10: .word 0x0220D690 +_021F0B14: .word 0x0220D784 +_021F0B18: .word 0x00000401 +_021F0B1C: .word 0x0220D794 +_021F0B20: .word 0x0220D6C0 +_021F0B24: .word 0x0220D7A0 +_021F0B28: .word 0x0220D7B0 +_021F0B2C: .word 0x0220D6CC + + arm_func_start FUN_021F0B30 +FUN_021F0B30: ; 0x021F0B30 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021F0B4C + ldr ip, [r0] + cmp ip, #0 + bne _021F0B58 +_021F0B4C: + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0B58: + ldr r3, [ip, #0x108] + cmp r3, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r3, [ip, #0x1d8] + cmp r3, #4 + bne _021F0B8C + ldr r1, _021F0B98 ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0B8C: + bl FUN_021F50B8 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F0B98: .word 0x0220D690 + + arm_func_start FUN_021F0B9C +FUN_021F0B9C: ; 0x021F0B9C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x20c + movs r5, r0 + beq _021F0BC0 + ldr r4, [r5] + cmp r4, #0 + beq _021F0BC0 + cmp r1, #0 + bne _021F0BCC +_021F0BC0: + add sp, sp, #0x20c + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F0BCC: + ldr lr, [sp, #0x218] + cmp lr, #0 + bne _021F0BEC + ldr r1, _021F0C7C ; =0x0220D6D4 + bl FUN_021FAEEC + add sp, sp, #0x20c + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F0BEC: + ldr ip, [r4, #0x108] + cmp ip, #0 + beq _021F0C44 + mov r0, #0 + add lr, sp, #8 + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov ip, #0x10 +_021F0C10: + stmia lr!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _021F0C10 + ldr r2, [sp, #0x21c] + str r0, [lr] + ldr r3, [sp, #0x218] + add r1, sp, #8 + mov r0, r5 + blx r3 + add sp, sp, #0x20c + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F0C44: + ldr ip, [r4, #0x1d8] + cmp ip, #4 + bne _021F0C64 + ldr r1, _021F0C80 ; =0x0220D690 + bl FUN_021FAEEC + add sp, sp, #0x20c + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F0C64: + ldr ip, [sp, #0x21c] + str lr, [sp] + str ip, [sp, #4] + bl FUN_021F4E64 + add sp, sp, #0x20c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F0C7C: .word 0x0220D6D4 +_021F0C80: .word 0x0220D690 + + arm_func_start FUN_021F0C84 +FUN_021F0C84: ; 0x021F0C84 + stmdb sp!, {r4, lr} + sub sp, sp, #0x30 + cmp r0, #0 + beq _021F0CA0 + ldr r4, [r0] + cmp r4, #0 + bne _021F0CAC +_021F0CA0: + add sp, sp, #0x30 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0CAC: + ldr ip, [sp, #0x48] + cmp ip, #0 + bne _021F0CCC + ldr r1, _021F0D4C ; =0x0220D6D4 + bl FUN_021FAEEC + add sp, sp, #0x30 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0CCC: + ldr r4, [r4, #0x108] + cmp r4, #0 + beq _021F0D0C + add r1, sp, #0x1c + mov r4, #0 + str r4, [r1] + str r4, [r1, #4] + str r4, [r1, #8] + ldr r2, [sp, #0x4c] + ldr r3, _021F0D50 ; =0x00000601 + str r4, [r1, #0xc] + str r3, [sp, #0x24] + blx ip + add sp, sp, #0x30 + mov r0, r4 + ldmia sp!, {r4, pc} +_021F0D0C: + ldr r4, [sp, #0x38] + ldr lr, [sp, #0x3c] + str r4, [sp] + ldr r4, [sp, #0x40] + str lr, [sp, #4] + str r4, [sp, #8] + mov r4, #0 + ldr lr, [sp, #0x44] + str r4, [sp, #0xc] + str lr, [sp, #0x10] + ldr lr, [sp, #0x4c] + str ip, [sp, #0x14] + str lr, [sp, #0x18] + bl FUN_021FA770 + add sp, sp, #0x30 + ldmia sp!, {r4, pc} + .align 2, 0 +_021F0D4C: .word 0x0220D6D4 +_021F0D50: .word 0x00000601 + + arm_func_start FUN_021F0D54 +FUN_021F0D54: ; 0x021F0D54 + stmdb sp!, {r4, lr} + movs r4, r0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r1, #0x108] + cmp r1, #0 + ldmneia sp!, {r4, pc} + mov r1, #1 + bl FUN_021F35F4 + mov r0, r4 + bl FUN_021F14C0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F0D8C +FUN_021F0D8C: ; 0x021F0D8C + stmdb sp!, {r4, lr} + sub sp, sp, #0x48 + movs lr, r0 + beq _021F0DA8 + ldr ip, [lr] + cmp ip, #0 + bne _021F0DB4 +_021F0DA8: + add sp, sp, #0x48 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0DB4: + cmp r1, #0 + beq _021F0DC8 + ldrsb r4, [r1] + cmp r4, #0 + bne _021F0DD4 +_021F0DC8: + add sp, sp, #0x48 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0DD4: + cmp r2, #0 + beq _021F0DE8 + ldrsb r4, [r2] + cmp r4, #0 + bne _021F0DF4 +_021F0DE8: + add sp, sp, #0x48 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0DF4: + ldr r4, [sp, #0x54] + cmp r4, #0 + bne _021F0E14 + ldr r1, _021F0EA8 ; =0x0220D6D4 + bl FUN_021FAEEC + add sp, sp, #0x48 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F0E14: + ldr ip, [ip, #0x108] + cmp ip, #0 + beq _021F0E5C + add r3, sp, #0x24 + mov r0, #0 + mov r2, r3 + mov r1, r0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2, {r0, r1} + ldr r2, [sp, #0x58] + mov r0, lr + mov r1, r3 + blx r4 + add sp, sp, #0x48 + mov r0, #0 + ldmia sp!, {r4, pc} +_021F0E5C: + ldr lr, _021F0EAC ; =0x0220D7BC + mov ip, #0 + str lr, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str ip, [sp, #0xc] + str r3, [sp, #0x10] + ldr r1, [sp, #0x50] + str ip, [sp, #0x14] + str r1, [sp, #0x18] + ldr ip, [sp, #0x58] + str r4, [sp, #0x1c] + mov r1, lr + mov r2, lr + mov r3, lr + str ip, [sp, #0x20] + bl FUN_021F4670 + add sp, sp, #0x48 + ldmia sp!, {r4, pc} + .align 2, 0 +_021F0EA8: .word 0x0220D6D4 +_021F0EAC: .word 0x0220D7BC + + arm_func_start FUN_021F0EB0 +FUN_021F0EB0: ; 0x021F0EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021F0ECC + ldr ip, [r0] + cmp ip, #0 + bne _021F0ED8 +_021F0ECC: + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0ED8: + cmp r1, #0 + blt _021F0EE8 + cmp r1, #6 + blt _021F0EFC +_021F0EE8: + ldr r1, _021F0F14 ; =0x0220D7C0 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0EFC: + add r0, ip, r1, lsl #3 + str r2, [r0, #0x1a4] + str r3, [r0, #0x1a8] + mov r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F0F14: .word 0x0220D7C0 + + arm_func_start FUN_021F0F18 +FUN_021F0F18: ; 0x021F0F18 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + beq _021F0F34 + ldr r1, [r0] + cmp r1, #0 + bne _021F0F40 +_021F0F34: + add sp, sp, #4 + mov r0, #2 + ldmfd sp!, {pc} +_021F0F40: + ldr r1, [r1, #0x108] + cmp r1, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r1, #0 + bl FUN_021F0FD4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021F0F64 +FUN_021F0F64: ; 0x021F0F64 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021F1620 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021F0F94 +FUN_021F0F94: ; 0x021F0F94 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _021F0FD0 ; =0x02210E5C + ldr r3, [r3] + cmp r3, #1 + addne sp, sp, #4 + movne r0, #2 + ldmneia sp!, {pc} + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #2 + ldmeqia sp!, {pc} + bl FUN_021F1668 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021F0FD0: .word 0x02210E5C + + arm_func_start FUN_021F0FD4 +FUN_021F0FD4: ; 0x021F0FD4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + ldr r7, [sl] + mov sb, r1 + ldr r0, [r7, #0x1d8] + mov r6, #0 + cmp r0, #4 + bls _021F100C + ldr r0, _021F117C ; =0x0220D7D0 + ldr r1, _021F1180 ; =0x0220D8C8 + ldr r3, _021F1184 ; =0x000001B5 + mov r2, r6 + bl __msl_assertion_failed +_021F100C: + ldr r0, [r7, #0x1d8] + cmp r0, #1 + bne _021F10A8 + mov r4, #0 + mov r5, #1 + mov fp, #0xa +_021F1024: + mov r0, sl + bl FUN_021F3880 + movs r6, r0 + bne _021F104C + cmp sb, #0 + beq _021F104C + ldr r0, [r7, #0x1d8] + cmp r0, #1 + moveq r8, r5 + beq _021F1050 +_021F104C: + mov r8, r4 +_021F1050: + cmp r8, #0 + beq _021F1060 + mov r0, fp + bl FUN_021F0250 +_021F1060: + cmp r8, #0 + bne _021F1024 + cmp r6, #0 + beq _021F10A8 + add r1, sp, #0 + mov r0, sl + mov r2, #1 + bl FUN_021F6C38 + cmp r0, #0 + ldrne r0, [sp] + movne r1, #4 + strne r1, [r0, #0x1c] + bne _021F10A8 + ldr r0, _021F1188 ; =0x0220D8D0 + ldr r1, _021F1180 ; =0x0220D8C8 + ldr r3, _021F118C ; =0x000001DB + mov r2, #0 + bl __msl_assertion_failed +_021F10A8: + ldr r0, [r7, #0x1d8] + sub r0, r0, #2 + cmp r0, #1 + bhi _021F10E0 + cmp r6, #0 + bne _021F10CC + mov r0, sl + bl FUN_021F1190 + mov r6, r0 +_021F10CC: + cmp r6, #0 + bne _021F10E0 + mov r0, sl + bl FUN_021F775C + mov r6, r0 +_021F10E0: + cmp r6, #0 + bne _021F10F4 + mov r0, sl + bl FUN_021F8974 + mov r6, r0 +_021F10F4: + ldr r1, [r7, #0x424] + str r1, [sp] + cmp r1, #0 + beq _021F1140 +_021F1104: + ldr r0, [r1, #0x1c] + cmp r0, #0 + ldreq r0, [r1, #0x20] + streq r0, [sp] + beq _021F1134 + mov r0, sl + bl FUN_021F6E44 + ldr r1, [sp] + mov r0, sl + ldr r2, [r1, #0x20] + str r2, [sp] + bl FUN_021F6C84 +_021F1134: + ldr r1, [sp] + cmp r1, #0 + bne _021F1104 +_021F1140: + mov r0, sl + mov r1, sb + bl FUN_021F3170 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r7, #0x41c] + cmp r0, #0 + beq _021F1170 + mov r0, sl + mov r1, #0 + bl FUN_021F35F4 +_021F1170: + mov r0, r6 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F117C: .word 0x0220D7D0 +_021F1180: .word 0x0220D8C8 +_021F1184: .word 0x000001B5 +_021F1188: .word 0x0220D8D0 +_021F118C: .word 0x000001DB + + arm_func_start FUN_021F1190 +FUN_021F1190: ; 0x021F1190 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov fp, #0 + mov r5, r0 + str fp, [sp, #0x18] + ldr r4, [r5] + mov r0, #0x800 + str r0, [sp, #8] + add sb, r4, #0x1f0 + add r8, r4, #0x1e4 + mov sl, #1 + mov r0, #4 + str r0, [sp, #0xc] + mov r6, #0xa +_021F11C8: + mov r0, r5 + add r1, r4, #0x1f4 + bl FUN_021F5DF8 + ldr r0, _021F1494 ; =0x0220D8D4 + str sl, [sp] + str r0, [sp, #4] + ldr r1, [r4, #0x1d4] + mov r0, r5 + add r2, r4, #0x1f4 + add r3, sp, #0x18 + bl FUN_021F28AC + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sp, #0x18 + str r0, [sp] + ldr r0, _021F1494 ; =0x0220D8D4 + add r2, r4, #0x1dc + str r0, [sp, #4] + ldr r1, [r4, #0x1d4] + mov r0, r5 + add r3, sp, #0x14 + bl FUN_021F2A2C + cmp r0, #0 + beq _021F1264 + cmp r0, #3 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, _021F1498 ; =0x0220D8D8 + mov r0, r5 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1264: + ldr r0, [r4, #0x1dc] + ldr r1, _021F149C ; =0x0220D904 + bl strstr + movs r7, r0 + beq _021F1428 +_021F1278: + strb fp, [r7] + ldr r1, _021F14A0 ; =0x0220D90C + ldr r2, [r4, #0x1dc] + mov r0, r5 + bl FUN_021FB3D0 + ldr r0, [r4, #0x1dc] + sub r1, r7, r0 + str r1, [sp, #0x14] + ldr r0, [r4, #0x1f0] + cmp r1, r0 + ble _021F12EC + cmp r1, #0x800 + ldrlt r1, [sp, #8] + ldr r0, [sb] + add r0, r0, r1 + str r0, [sb] + ldr r1, [r4, #0x1f0] + ldr r0, [r4, #0x1ec] + add r1, r1, #1 + bl FUN_021DD844 + cmp r0, #0 + bne _021F12E8 + ldr r1, _021F14A4 ; =0x0220D918 + mov r0, r5 + bl FUN_021FAEEC + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F12E8: + str r0, [r4, #0x1ec] +_021F12EC: + ldr r2, [sp, #0x14] + ldr r0, [r4, #0x1ec] + ldr r1, [r4, #0x1dc] + add r2, r2, #1 + bl memcpy + ldr r0, [r4, #0x1dc] + add r1, r7, #7 + ldr r2, [r8] + sub r0, r1, r0 + sub r0, r2, r0 + str r0, [r8] + ldr r2, [r4, #0x1e4] + ldr r0, [r4, #0x1dc] + add r2, r2, #1 + bl memmove + ldr r7, [r4, #0x1ec] + ldr r1, _021F14A8 ; =0x0220D928 + mov r0, r7 + bl strstr + cmp r0, #0 + beq _021F1398 + add r0, r0, #4 + bl atol + mov r7, r0 + mov r0, r5 + add r1, sp, #0x10 + mov r2, r7 + bl FUN_021F6C38 + cmp r0, #0 + bne _021F1378 + ldr r1, _021F14AC ; =0x0220D930 + mov r2, r7 + mov r0, r5 + bl FUN_021FB3D0 + b _021F1414 +_021F1378: + mov r0, r5 + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x1ec] + bl FUN_021F6B50 + cmp r0, #0 + beq _021F1414 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1398: + mov r1, r7 + mov r0, r5 + mov r2, sl + bl FUN_021FB2F8 + cmp r0, #0 + addne sp, sp, #0x1c + movne r0, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r7, [r4, #0x1ec] + ldr r1, _021F14B0 ; =0x0220D958 + ldr r2, [sp, #0xc] + mov r0, r7 + bl strncmp + cmp r0, #0 + bne _021F13F0 + mov r1, r7 + mov r0, r5 + bl FUN_021F1C48 + cmp r0, #0 + beq _021F1414 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F13F0: + ldr r1, _021F14B4 ; =0x0220D960 + mov r0, r7 + mov r2, r6 + bl strncmp + cmp r0, #0 + beq _021F1414 + ldr r1, _021F14B8 ; =0x0220D968 + mov r0, r5 + bl FUN_021FB3D0 +_021F1414: + ldr r0, [r4, #0x1dc] + ldr r1, _021F149C ; =0x0220D904 + bl strstr + movs r7, r0 + bne _021F1278 +_021F1428: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _021F1468 + ldr r2, _021F14BC ; =0x0220D998 + mov r3, #4 + mov r0, r5 + mov r1, #7 + str r3, [r4, #0x1d8] + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x1c + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1468: + mov r0, r5 + bl FUN_021F6BF8 + movs r7, r0 + beq _021F1480 + mov r0, r6 + bl FUN_021F0250 +_021F1480: + cmp r7, #0 + bne _021F11C8 + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F1494: .word 0x0220D8D4 +_021F1498: .word 0x0220D8D8 +_021F149C: .word 0x0220D904 +_021F14A0: .word 0x0220D90C +_021F14A4: .word 0x0220D918 +_021F14A8: .word 0x0220D928 +_021F14AC: .word 0x0220D930 +_021F14B0: .word 0x0220D958 +_021F14B4: .word 0x0220D960 +_021F14B8: .word 0x0220D968 +_021F14BC: .word 0x0220D998 + + arm_func_start FUN_021F14C0 +FUN_021F14C0: ; 0x021F14C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r4, [r5] + mov r1, #0 + strb r1, [r4, #0x110] + strb r1, [r4, #0x12f] + strb r1, [r4, #0x144] + mvn r0, #0 + str r0, [r4, #0x1d4] + str r1, [r4, #0x1d8] + str r1, [r4, #0x1e4] + str r1, [r4, #0x1e8] + str r1, [r4, #0x1e0] + ldr r0, [r4, #0x1dc] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x1dc] + str r0, [r4, #0x1dc] + str r0, [r4, #0x1f0] + ldr r0, [r4, #0x1ec] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x1ec] + str r0, [r4, #0x1ec] + str r0, [r4, #0x1fc] + str r0, [r4, #0x200] + str r0, [r4, #0x1f8] + ldr r0, [r4, #0x1f4] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x1f4] + str r0, [r4, #0x1f4] + str r0, [r4, #0x448] + str r0, [r4, #0x44c] + str r0, [r4, #0x444] + ldr r0, [r4, #0x440] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x440] + str r0, [r4, #0x440] + str r0, [r4, #0x458] + str r0, [r4, #0x45c] + str r0, [r4, #0x454] + ldr r0, [r4, #0x450] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x450] + str r0, [r4, #0x450] + mvn r0, #0 + str r0, [r4, #0x204] + mov r0, #2 + str r0, [r4, #0x20c] + ldr r1, [r4, #0x424] + cmp r1, #0 + beq _021F15B4 +_021F15A0: + mov r0, r5 + bl FUN_021F6C84 + ldr r1, [r4, #0x424] + cmp r1, #0 + bne _021F15A0 +_021F15B4: + mov r2, #0 + str r2, [r4, #0x424] + ldr r1, _021F1600 ; =FUN_021F1604 + mov r0, r5 + str r2, [r4, #0x430] + bl FUN_021F848C + mov r0, #0 + str r0, [r4, #0x19c] + str r0, [r4, #0x1a0] + str r0, [r4, #0x198] + str r0, [r4, #0x210] + str r0, [r4, #0x41c] + str r0, [r4, #0x434] + mvn r1, #0 + str r1, [r4, #0x214] + strb r0, [r4, #0x218] + strb r0, [r4, #0x318] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F1600: .word FUN_021F1604 + + arm_func_start FUN_021F1604 +FUN_021F1604: ; 0x021F1604 + mov r0, #0 + str r0, [r1, #8] + str r0, [r1, #0x10] + str r0, [r1, #0x14] + str r0, [r1, #0x18] + mov r0, #1 + bx lr + + arm_func_start FUN_021F1620 +FUN_021F1620: ; 0x021F1620 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r4, [r5] + mov r1, #1 + bl FUN_021F35F4 + ldr r0, [r4, #0x460] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x460] + ldr r0, [r4, #0x428] + bl FUN_021EF5B0 + mov r0, r4 + bl FUN_021DD82C + mov r0, #0 + str r0, [r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021F1668 +FUN_021F1668: ; 0x021F1668 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r0, #0 + str r0, [r6] + mov r0, #0x490 + mov r5, r1 + mov r4, r2 + bl FUN_021DD860 + str r0, [sp] + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + mov r1, #0 + mov r2, #0x490 + bl Call_FillMemWithValue + ldr r0, [sp] + mov r3, #0 + strb r3, [r0] + ldr r0, [sp] + mov r2, #1 + str r3, [r0, #0x418] + ldr r1, [sp] + add r0, sp, #0 + str r2, [r1, #0x100] + ldr r1, [sp] + str r3, [r1, #0x104] + ldr r1, [sp] + str r3, [r1, #0x108] + ldr r1, [sp] + str r3, [r1, #0x10c] + ldr r1, [sp] + str r5, [r1, #0x46c] + ldr r1, [sp] + str r4, [r1, #0x470] + bl FUN_021F8870 + cmp r0, #0 + bne _021F1720 + ldr r0, [sp] + bl FUN_021DD82C + mov r0, #0 + str r0, [sp] + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021F1720: + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x420] + mov r3, r1 +_021F1730: + ldr r0, [sp] + add r0, r0, r1, lsl #3 + str r3, [r0, #0x1a4] + ldr r0, [sp] + add r0, r0, r1, lsl #3 + add r1, r1, #1 + str r3, [r0, #0x1a8] + cmp r1, #6 + blt _021F1730 + ldr r2, [sp] + ldr r1, _021F17AC ; =0x0220D9C0 + add r0, sp, #0 + str r3, [r2, #0x460] + bl FUN_021FB3D0 + add r0, sp, #0 + bl FUN_021F14C0 + movs r4, r0 + beq _021F178C + add r0, sp, #0 + bl FUN_021F1620 + add sp, sp, #8 + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} +_021F178C: + bl FUN_021F024C + bl FUN_021F025C + bl srand + ldr r1, [sp] + mov r0, #0 + str r1, [r6] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F17AC: .word 0x0220D9C0 + + arm_func_start FUN_021F17B0 +FUN_021F17B0: ; 0x021F17B0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + add r2, sp, #0 + ldr r5, [r6] + bl FUN_021F85E8 + cmp r0, #0 + bne _021F17E8 + ldr r1, _021F1938 ; =0x0220D9E4 + mov r0, r6 + bl FUN_021FAEEC + add sp, sp, #8 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F17E8: + ldr r2, _021F193C ; =0x0220D9F8 + mov r0, r6 + add r1, r5, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F1940 ; =0x0220DA04 + mov r0, r6 + add r1, r5, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r5, #0x198] + mov r0, r6 + add r1, r5, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F1944 ; =0x0220DA10 + mov r0, r6 + add r1, r5, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r5, #0x1f4 + ldr r2, [sp] + ldr r2, [r2] + bl FUN_021F2F64 + mov r0, r6 + add r1, r5, #0x1f4 + ldr r2, _021F1948 ; =0x0220DA20 + bl FUN_021F2F9C + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021F192C + ldr r4, [r0] + cmp r4, #0 + bge _021F187C + ldr r0, _021F194C ; =0x0220DA28 + ldr r1, _021F1950 ; =0x0220DA34 + ldr r3, _021F1954 ; =0x000001FD + mov r2, #0 + bl __msl_assertion_failed +_021F187C: + ldr r0, [sp] + ldr r0, [r0, #8] + ldr r0, [r0, #8] + bl FUN_021DD82C + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #8] + str r1, [r0, #8] + ldr r0, [sp] + ldr r0, [r0, #8] + ldr r0, [r0, #0xc] + bl FUN_021DD82C + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #8] + str r1, [r0, #0xc] + ldr r0, [sp] + ldr r0, [r0, #8] + bl FUN_021DD82C + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [sp] + bl FUN_021F83EC + cmp r0, #0 + beq _021F18F0 + ldr r1, [sp] + mov r0, r6 + bl FUN_021F85A0 +_021F18F0: + ldr r0, [r5, #0x430] + sub r0, r0, #1 + str r0, [r5, #0x430] + ldr r0, [r5, #0x430] + cmp r0, #0 + bge _021F191C + ldr r0, _021F1958 ; =0x0220DA40 + ldr r1, _021F1950 ; =0x0220DA34 + mov r2, #0 + mov r3, #0x204 + bl __msl_assertion_failed +_021F191C: + ldr r1, _021F195C ; =FUN_021F1960 + mov r0, r6 + mov r2, r4 + bl FUN_021F848C +_021F192C: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F1938: .word 0x0220D9E4 +_021F193C: .word 0x0220D9F8 +_021F1940: .word 0x0220DA04 +_021F1944: .word 0x0220DA10 +_021F1948: .word 0x0220DA20 +_021F194C: .word 0x0220DA28 +_021F1950: .word 0x0220DA34 +_021F1954: .word 0x000001FD +_021F1958: .word 0x0220DA40 +_021F195C: .word FUN_021F1960 + + arm_func_start FUN_021F1960 +FUN_021F1960: ; 0x021F1960 + ldr r1, [r1, #8] + cmp r1, #0 + beq _021F197C + ldr r0, [r1] + cmp r0, r2 + subgt r0, r0, #1 + strgt r0, [r1] +_021F197C: + mov r0, #1 + bx lr + + arm_func_start FUN_021F1984 +FUN_021F1984: ; 0x021F1984 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + add r2, sp, #0 + ldr r5, [r4] + bl FUN_021F85E8 + cmp r0, #0 + bne _021F19BC + ldr r1, _021F1A60 ; =0x0220D9E4 + mov r0, r4 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F19BC: + ldr r1, [sp] + ldr r0, [r1, #0x10] + cmp r0, #0 + bne _021F19E4 + ldr r1, _021F1A60 ; =0x0220D9E4 + mov r0, r4 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #2 + ldmia sp!, {r4, r5, pc} +_021F19E4: + mov r0, r4 + bl FUN_021F265C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, [sp] + ldr r0, [r1, #0x14] + sub r0, r0, #1 + str r0, [r1, #0x14] + ldr r0, [r5, #0x100] + cmp r0, #0 + bne _021F1A54 + ldr r1, [sp] + ldr r0, [r1, #0x14] + cmp r0, #0 + bgt _021F1A54 + ldr r0, [r1, #0x10] + bl FUN_021DD82C + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [sp] + bl FUN_021F83EC + cmp r0, #0 + beq _021F1A54 + ldr r1, [sp] + mov r0, r4 + bl FUN_021F85A0 +_021F1A54: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F1A60: .word 0x0220D9E4 + + arm_func_start FUN_021F1A64 +FUN_021F1A64: ; 0x021F1A64 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_021F7720 + movs r8, r0 + bne _021F1B3C + add r2, sp, #0 + mov r0, r7 + mov r1, r6 + bl FUN_021F85E8 + cmp r0, #0 + beq _021F1ABC + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021F1ABC + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021F1AD8 +_021F1ABC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl FUN_021F1B60 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F1AD8: + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl FUN_021F7674 + movs r8, r0 + addeq sp, sp, #8 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0 + bne _021F1B24 + mov r0, r7 + mov r1, r8 + bl FUN_021F7610 + cmp r0, #0 + beq _021F1B3C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F1B24: + mov r0, r7 + mov r1, r8 + bl FUN_021F7478 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_021F1B3C: + mov r0, r7 + mov r1, r8 + mov r2, r5 + mov r3, r4 + bl FUN_021F72EC + cmp r0, #0 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_021F1B60 +FUN_021F1B60: ; 0x021F1B60 + stmdb sp!, {r4, r5, r6, r7, lr} + ldr ip, _021F1C2C ; =0x00000DB4 + sub sp, sp, ip + mov r7, r0 + mov r5, r2 + mov r6, r1 + ldr r2, _021F1C30 ; =0x00000DAD + add r0, sp, #0 + mov r1, r3 + ldr r4, [r7] + bl FUN_021FB3DC + ldr r2, _021F1C34 ; =0x0220DA6C + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r7 + mov r2, r5 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F1C38 ; =0x0220DA04 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F1C3C ; =0x0220DA74 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r2, r6 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F1C40 ; =0x0220DA78 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r7 + add r1, r4, #0x1f4 + add r2, sp, #0 + bl FUN_021F2F9C + ldr r2, _021F1C44 ; =0x0220DA20 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, #0 + ldr ip, _021F1C2C ; =0x00000DB4 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F1C2C: .word 0x00000DB4 +_021F1C30: .word 0x00000DAD +_021F1C34: .word 0x0220DA6C +_021F1C38: .word 0x0220DA04 +_021F1C3C: .word 0x0220DA74 +_021F1C40: .word 0x0220DA78 +_021F1C44: .word 0x0220DA20 + + arm_func_start FUN_021F1C48 +FUN_021F1C48: ; 0x021F1C48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr ip, _021F2618 ; =0x0000113C + sub sp, sp, ip + mov r4, r1 + mov sl, r0 + ldr r1, _021F261C ; =0x0220DA6C + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + ldr r6, [sl] + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F1CAC + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1CAC: + add r0, sp, #0x38 + bl atol + mov r5, r0 + ldr r1, _021F2624 ; =0x0220DAB0 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F1D04 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1D04: + add r0, sp, #0x38 + bl atol + mov r8, r0 + ldr r1, _021F2628 ; =0x0220DAB4 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + bl FUN_021FB1F0 + cmp r0, #0 + beq _021F1D3C + add r0, sp, #0x38 + bl atol + mov sb, r0 + b _021F1D48 +_021F1D3C: + mov r0, #0 + bl FUN_021EFAC8 + mov sb, r0 +_021F1D48: + cmp r5, #0x64 + bgt _021F1D7C + cmp r5, #0x64 + bge _021F2078 + cmp r5, #2 + bgt _021F2608 + cmp r5, #1 + blt _021F2608 + cmp r5, #1 + beq _021F1DA0 + cmp r5, #2 + beq _021F1EB4 + b _021F2608 +_021F1D7C: + cmp r5, #0x66 + bgt _021F2608 + cmp r5, #0x65 + blt _021F2608 + cmp r5, #0x65 + beq _021F2408 + cmp r5, #0x66 + beq _021F25A8 + b _021F2608 +_021F1DA0: + ldr r1, [r6, #0x1bc] + ldr r0, [r6, #0x1c0] + cmp r1, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + beq _021F2608 + mov r0, #0xc + bl FUN_021DD860 + movs r5, r0 + bne _021F1DE4 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1DE4: + ldr r1, _021F2630 ; =0x0220DA78 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F1E30 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1E30: + add r0, sp, #0x38 + bl strlen + add r0, r0, #1 + bl FUN_021DD860 + str r0, [r5, #8] + ldr r0, [r5, #8] + cmp r0, #0 + bne _021F1E6C + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1E6C: + add r1, sp, #0x38 + bl strcpy + str r8, [r5] + str sb, [r5, #4] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r1, sp, #8 + mov r0, sl + mov r3, r5 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F2608 + ldr ip, _021F2618 ; =0x0000113C + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1EB4: + mov r0, sl + mov r1, r8 + bl FUN_021F8624 + movs r5, r0 + bne _021F1EE4 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1EE4: + ldr r1, _021F2630 ; =0x0220DA78 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F1F30 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1F30: + ldr r1, _021F2634 ; =0x0220DACC + add r0, sp, #0x38 + bl strstr + movs r4, r0 + bne _021F1F74 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1F74: + mov r1, #0 + add r0, r4, #8 + strb r1, [r4] + bl strlen + cmp r0, #0x20 + beq _021F1FBC + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F1FBC: + ldr r0, [r5, #0x10] + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #0x10] + add r0, r4, #8 + bl FUN_021F0208 + str r0, [r5, #0x10] + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + ldr r1, [r6, #0x1ac] + ldr r0, [r6, #0x1b0] + cmp r1, #0 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + beq _021F2608 + ldr r0, _021F2638 ; =0x0000040C + bl FUN_021DD860 + movs r4, r0 + bne _021F2028 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2028: + ldr r2, _021F263C ; =0x00000401 + add r1, sp, #0x38 + add r0, r4, #8 + bl FUN_021FB3DC + str r8, [r4] + str sb, [r4, #4] + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + add r1, sp, #0x20 + mov r0, sl + mov r3, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F2608 + ldr ip, _021F2618 ; =0x0000113C + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2078: + mov r0, sl + mov r1, r8 + bl FUN_021F8624 + movs r5, r0 + bne _021F20A8 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F20A8: + ldr r0, [r5, #8] + cmp r0, #0 + bne _021F211C + mov r0, #0x18 + bl FUN_021DD860 + str r0, [r5, #8] + ldr r2, [r5, #8] + cmp r2, #0 + bne _021F20E8 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F20E8: + mov r1, #6 + mov r0, #0 +_021F20F0: + strb r0, [r2], #1 + strb r0, [r2], #1 + strb r0, [r2], #1 + strb r0, [r2], #1 + subs r1, r1, #1 + bne _021F20F0 + ldr r1, [r6, #0x430] + add r0, r1, #1 + str r0, [r6, #0x430] + ldr r0, [r5, #8] + str r1, [r0] +_021F211C: + ldr r1, _021F2630 ; =0x0220DA78 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + ldr r7, [r5, #8] + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F216C + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F216C: + ldr r1, _021F2640 ; =0x0220DAD8 + add r0, sp, #0x38 + add r2, sp, #0x28 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F21B8 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F21B8: + add r0, sp, #0x28 + bl atol + str r0, [r7, #4] + ldr r0, [r7, #8] + bl FUN_021DD82C + mov r0, #0 + add r2, sp, #0x1000 + str r0, [r7, #8] + ldr r1, _021F2644 ; =0x0220DADC + add r0, sp, #0x38 + add r2, r2, #0x38 + mov r3, #0x100 + bl FUN_021FB1F0 + cmp r0, #0 + addeq r0, sp, #0x1000 + moveq r1, #0 + addeq r0, r0, #8 + streqb r1, [r0, #0x30] + add r0, sp, #0x1000 + add r0, r0, #0x38 + bl FUN_021F0208 + str r0, [r7, #8] + ldr r0, [r7, #8] + cmp r0, #0 + bne _021F2238 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2238: + ldr r0, [r7, #0xc] + bl FUN_021DD82C + add r2, sp, #0x1000 + mov r4, #0 + ldr r1, _021F2648 ; =0x0220DAE4 + add r0, sp, #0x38 + add r2, r2, #0x38 + mov r3, #0x100 + str r4, [r7, #0xc] + bl FUN_021FB1F0 + cmp r0, #0 + addeq r0, sp, #0x1000 + moveq r1, r4 + addeq r0, r0, #8 + streqb r1, [r0, #0x30] + add r0, sp, #0x1000 + add r0, r0, #0x38 + bl FUN_021F0208 + str r0, [r7, #0xc] + ldr r0, [r7, #0xc] + cmp r0, #0 + bne _021F22AC + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F22AC: + ldr r1, _021F264C ; =0x0220DAEC + add r0, sp, #0x38 + add r2, sp, #0x28 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [r7, #0x10] + beq _021F232C + add r0, sp, #0x28 + bl atol + mov r5, r0 + add r0, sp, #0x28 + bl atol + mov r4, r0 + add r0, sp, #0x28 + bl atol + mov fp, r0 + add r0, sp, #0x28 + bl atol + mov r1, fp, lsr #0x18 + mov r0, r0, lsr #8 + mov r2, r4, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r5, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 + str r0, [r7, #0x10] +_021F232C: + ldr r1, _021F2650 ; =0x0220DAF4 + add r0, sp, #0x38 + add r2, sp, #0x28 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [r7, #0x14] + beq _021F2380 + add r0, sp, #0x28 + bl atol + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r7, #0x14] +_021F2380: + ldr r1, [r6, #0x1b4] + ldr r0, [r6, #0x1b8] + cmp r1, #0 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + beq _021F2608 + mov r0, #0xc + bl FUN_021DD860 + movs r3, r0 + bne _021F23C4 + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F23C4: + str r8, [r3] + ldr r1, [r7] + mov r0, #0 + str r1, [r3, #8] + str sb, [r3, #4] + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + add r1, sp, #0x18 + mov r0, sl + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F2608 + ldr ip, _021F2618 ; =0x0000113C + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2408: + ldr r1, _021F2630 ; =0x0220DA78 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F2454 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2454: + ldr r1, _021F2650 ; =0x0220DAF4 + add r0, sp, #0x38 + bl strstr + cmp r0, #0 + bne _021F2498 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2498: + ldrsb r1, [r0, #3] + cmp r1, #0 + bne _021F24D4 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F24D4: + add r0, r0, #3 + bl atol + mov r4, r0 + ldr r1, _021F2654 ; =0x0220DAF8 + add r0, sp, #0x38 + bl strstr + movs r1, r0 + addeq r0, sp, #0x1000 + moveq r1, #0 + addeq r0, r0, #8 + streqb r1, [r0, #0x30] + beq _021F2518 + add r0, sp, #0x1000 + add r0, r0, #0x38 + add r1, r1, #3 + mov r2, #0x100 + bl FUN_021FB3DC +_021F2518: + ldr r1, [r6, #0x1c4] + ldr r0, [r6, #0x1c8] + cmp r1, #0 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + beq _021F2608 + mov r0, #0x108 + bl FUN_021DD860 + movs r5, r0 + bne _021F255C + ldr r1, _021F262C ; =0x0220DABC + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F2618 ; =0x0000113C + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F255C: + add r1, sp, #0x1000 + str r8, [r5] + add r1, r1, #0x38 + add r0, r5, #8 + str r4, [r5, #4] + bl strcpy + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r1, sp, #0x10 + mov r0, sl + mov r3, r5 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F2608 + ldr ip, _021F2618 ; =0x0000113C + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F25A8: + ldr r1, _021F2630 ; =0x0220DA78 + add r2, sp, #0x38 + mov r0, r4 + mov r3, #0x1000 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F25F4 + ldr r2, _021F2620 ; =0x0220DA80 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F2618 ; =0x0000113C + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F25F4: + ldr r3, _021F2658 ; =0x0220DAFC + mov r0, sl + mov r1, r8 + mov r2, #0x67 + bl FUN_021F1A64 +_021F2608: + mov r0, #0 + ldr ip, _021F2618 ; =0x0000113C + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F2618: .word 0x0000113C +_021F261C: .word 0x0220DA6C +_021F2620: .word 0x0220DA80 +_021F2624: .word 0x0220DAB0 +_021F2628: .word 0x0220DAB4 +_021F262C: .word 0x0220DABC +_021F2630: .word 0x0220DA78 +_021F2634: .word 0x0220DACC +_021F2638: .word 0x0000040C +_021F263C: .word 0x00000401 +_021F2640: .word 0x0220DAD8 +_021F2644: .word 0x0220DADC +_021F2648: .word 0x0220DAE4 +_021F264C: .word 0x0220DAEC +_021F2650: .word 0x0220DAF4 +_021F2654: .word 0x0220DAF8 +_021F2658: .word 0x0220DAFC + + arm_func_start FUN_021F265C +FUN_021F265C: ; 0x021F265C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + ldr r2, _021F26F0 ; =0x0220DB00 + mov r5, r1 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F26F4 ; =0x0220DA04 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F26F8 ; =0x0220DB0C + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, [r5] + bl FUN_021F2F64 + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F26FC ; =0x0220DB1C + bl FUN_021F2F9C + ldr r2, [r5, #0x10] + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F2700 ; =0x0220DA20 + bl FUN_021F2F9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F26F0: .word 0x0220DB00 +_021F26F4: .word 0x0220DA04 +_021F26F8: .word 0x0220DB0C +_021F26FC: .word 0x0220DB1C +_021F2700: .word 0x0220DA20 + + arm_func_start FUN_021F2704 +FUN_021F2704: ; 0x021F2704 + stmdb sp!, {r4, lr} + movs r4, r1 + beq _021F2728 + ldr r0, [r4] + cmp r0, #0 + beq _021F2728 + ldr r1, [r4, #0xc] + cmp r1, #0 + bne _021F2730 +_021F2728: + mov r0, #0 + ldmia sp!, {r4, pc} +_021F2730: + ldr r0, [r4, #8] + sub r0, r0, r1 + str r0, [r4, #8] + ldr r2, [r4, #8] + cmp r2, #0 + beq _021F2758 + ldr r0, [r4] + ldr r1, [r4, #0xc] + add r1, r0, r1 + bl memmove +_021F2758: + ldr r2, [r4] + ldr r1, [r4, #8] + mov r0, #0 + strb r0, [r2, r1] + str r0, [r4, #0xc] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F2770 +FUN_021F2770: ; 0x021F2770 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r5, r2 + mov r0, #0 + mov r6, r1 + str r0, [r5] + ldr r1, [r6, #8] + mov r7, r3 + cmp r1, #5 + addlt sp, sp, #0x14 + ldmltia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + mov r1, #0xa + bl strchr + movs r4, r0 + beq _021F2894 + ldr r1, _021F28A0 ; =0x0220DB24 + sub r0, r4, #5 + mov r2, #5 + bl strncmp + cmp r0, #0 + addne sp, sp, #0x14 + movne r0, #3 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #0 + strb r0, [r4] + ldr r0, [r6] + ldr r1, _021F28A4 ; =0x0220DB2C + add r2, sp, #0 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0 + bl atol + str r0, [r7] + ldr r0, [r6] + ldr r1, _021F28A8 ; =0x0220DB30 + add r2, sp, #0 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0 + bl atol + ldr r2, [r6] + add r1, r0, #1 + sub r2, r4, r2 + ldr r3, [r6, #8] + add r2, r1, r2 + cmp r3, r2 + ble _021F288C + ldrsb r2, [r4, r1] + cmp r2, #0 + addne sp, sp, #0x14 + movne r0, #3 + ldmneia sp!, {r4, r5, r6, r7, pc} + add r3, r4, #1 + ldr r2, [sp, #0x28] + str r3, [r5] + str r0, [r2] + ldr r0, [r6] + sub r0, r4, r0 + add r0, r1, r0 + add r0, r0, #1 + str r0, [r6, #0xc] + b _021F2894 +_021F288C: + mov r0, #0xa + strb r0, [r4] +_021F2894: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F28A0: .word 0x0220DB24 +_021F28A4: .word 0x0220DB2C +_021F28A8: .word 0x0220DB30 + + arm_func_start FUN_021F28AC +FUN_021F28AC: ; 0x021F28AC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov sl, r0 + str r2, [sp, #0xc] + mov sb, r1 + str r3, [sp, #0x10] + movs r0, r2 + ldr r8, [sp, #0x44] + bne _021F28E4 + ldr r0, _021F2A0C ; =0x0220DB38 + ldr r1, _021F2A10 ; =0x0220DB50 + ldr r3, _021F2A14 ; =0x000001B9 + mov r2, #0 + bl __msl_assertion_failed +_021F28E4: + ldr r0, [sp, #0xc] + mov r7, #0 + ldr fp, [r0, #8] + ldr r4, [r0, #0xc] + ldr r5, [r0] + subs r6, fp, r4 + addeq sp, sp, #0x1c + moveq r0, r7 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2908: + add r1, sp, #0x14 + str r1, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + add r2, r4, r7 + mov r0, sl + mov r1, sb + mov r3, r6 + add r2, r5, r2 + str r8, [sp, #8] + bl FUN_021F2E68 + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x18] + cmp r0, #0 + addne r7, r7, r0 + subne r6, r6, r0 + cmp r0, #0 + beq _021F2960 + cmp r6, #0 + bne _021F2908 +_021F2960: + ldr r0, [sp, #0x40] + cmp r0, #0 + beq _021F298C + cmp r7, #0 + ble _021F2990 + mov r0, r5 + add r1, r5, r7 + add r2, r6, #1 + bl memmove + sub fp, fp, r7 + b _021F2990 +_021F298C: + add r4, r4, r7 +_021F2990: + cmp fp, #0 + bge _021F29AC + ldr r0, _021F2A18 ; =0x0220DB5C + ldr r1, _021F2A10 ; =0x0220DB50 + ldr r3, _021F2A1C ; =0x000001DE + mov r2, #0 + bl __msl_assertion_failed +_021F29AC: + cmp r4, #0 + bge _021F29C8 + ldr r0, _021F2A20 ; =0x0220DB68 + ldr r1, _021F2A10 ; =0x0220DB50 + ldr r3, _021F2A24 ; =0x000001DF + mov r2, #0 + bl __msl_assertion_failed +_021F29C8: + cmp r4, fp + ble _021F29E4 + ldr r0, _021F2A28 ; =0x0220DB74 + ldr r1, _021F2A10 ; =0x0220DB50 + mov r2, #0 + mov r3, #0x1e0 + bl __msl_assertion_failed +_021F29E4: + ldr r0, [sp, #0xc] + str fp, [r0, #8] + str r4, [r0, #0xc] + ldr r0, [sp, #0x10] + cmp r0, #0 + ldrne r1, [sp, #0x14] + strne r1, [r0] + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F2A0C: .word 0x0220DB38 +_021F2A10: .word 0x0220DB50 +_021F2A14: .word 0x000001B9 +_021F2A18: .word 0x0220DB5C +_021F2A1C: .word 0x000001DE +_021F2A20: .word 0x0220DB68 +_021F2A24: .word 0x000001DF +_021F2A28: .word 0x0220DB74 + + arm_func_start FUN_021F2A2C +FUN_021F2A2C: ; 0x021F2A2C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov fp, r0 + ldr r0, [sp, #0x3c] + mov sl, r1 + mvn r1, #0 + str r2, [sp] + str r3, [sp, #4] + cmp sl, r1 + str r0, [sp, #0x3c] + bne _021F2A6C + ldr r0, _021F2C28 ; =0x0220DB80 + ldr r1, _021F2C2C ; =0x0220DB50 + mov r2, #0 + mov r3, #0x150 + bl __msl_assertion_failed +_021F2A6C: + ldr r0, [sp] + cmp r0, #0 + bne _021F2A8C + ldr r0, _021F2C30 ; =0x0220DB98 + ldr r1, _021F2C2C ; =0x0220DB50 + ldr r3, _021F2C34 ; =0x00000151 + mov r2, #0 + bl __msl_assertion_failed +_021F2A8C: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021F2AAC + ldr r0, _021F2C38 ; =0x0220DBAC + ldr r1, _021F2C2C ; =0x0220DB50 + ldr r3, _021F2C3C ; =0x00000152 + mov r2, #0 + bl __msl_assertion_failed +_021F2AAC: + ldr r0, [sp, #0x38] + cmp r0, #0 + bne _021F2ACC + ldr r0, _021F2C40 ; =0x0220DBC0 + ldr r1, _021F2C2C ; =0x0220DB50 + ldr r3, _021F2C44 ; =0x00000153 + mov r2, #0 + bl __msl_assertion_failed +_021F2ACC: + ldr r0, [sp] + mov r5, #0 + ldr sb, [r0] + ldr r8, [r0, #8] + ldr r7, [r0, #4] + mov r0, #1 + mov r4, r5 + str r5, [sp, #8] + str r5, [sp, #0x10] + str r0, [sp, #0xc] +_021F2AF4: + add r0, r8, #0x800 + cmp r0, r7 + ble _021F2B30 + mov r7, r0 + add r1, r0, #1 + mov r0, sb + bl FUN_021DD844 + movs sb, r0 + bne _021F2B30 + ldr r1, _021F2C48 ; =0x0220DBD4 + mov r0, fp + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2B30: + ldr r3, [sp, #8] + mov r0, sl + add r1, sb, r8 + sub r2, r7, r8 + bl FUN_021EFC78 + mov r6, r0 + mvn r0, #0 + cmp r6, r0 + bne _021F2B98 + mov r0, sl + bl FUN_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _021F2BBC + mvn r1, #0x19 + cmp r0, r1 + beq _021F2BBC + mvn r1, #0x4b + cmp r0, r1 + beq _021F2BBC + ldr r1, _021F2C4C ; =0x0220DBE4 + mov r0, fp + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2B98: + cmp r6, #0 + addne r8, r8, r6 + addne r5, r5, r6 + bne _021F2BBC + ldr r1, _021F2C50 ; =0x0220DC10 + ldr r2, [sp, #0x3c] + mov r0, fp + ldr r4, [sp, #0xc] + bl FUN_021FB3D0 +_021F2BBC: + ldr r0, [sp, #0x10] + strb r0, [sb, r8] + mvn r0, #0 + cmp r6, r0 + beq _021F2BE0 + cmp r4, #0 + bne _021F2BE0 + cmp r5, #0x20000 + blt _021F2AF4 +_021F2BE0: + cmp r5, #0 + beq _021F2BFC + ldr r1, _021F2C54 ; =0x0220DC34 + ldr r2, [sp, #0x3c] + mov r0, fp + mov r3, r5 + bl FUN_021FB3D0 +_021F2BFC: + ldr r0, [sp] + ldr r1, [sp, #0x38] + str sb, [r0] + str r8, [r0, #8] + str r7, [r0, #4] + ldr r0, [sp, #4] + str r5, [r0] + str r4, [r1] + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F2C28: .word 0x0220DB80 +_021F2C2C: .word 0x0220DB50 +_021F2C30: .word 0x0220DB98 +_021F2C34: .word 0x00000151 +_021F2C38: .word 0x0220DBAC +_021F2C3C: .word 0x00000152 +_021F2C40: .word 0x0220DBC0 +_021F2C44: .word 0x00000153 +_021F2C48: .word 0x0220DBD4 +_021F2C4C: .word 0x0220DBE4 +_021F2C50: .word 0x0220DC10 +_021F2C54: .word 0x0220DC34 + + arm_func_start FUN_021F2C58 +FUN_021F2C58: ; 0x021F2C58 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov r0, r4 + bl strlen + mov r3, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_021F2C88 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F2C88 +FUN_021F2C88: ; 0x021F2C88 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, r1 + ldr r1, [sb, #0x28] + mov sl, r0 + mov r8, r2 + mov r7, r3 + cmp r1, #0 + bne _021F2CC0 + ldr r0, _021F2D80 ; =0x0220DC4C + ldr r1, _021F2D84 ; =0x0220DB50 + mov r2, #0 + mov r3, #0xfb + bl __msl_assertion_failed +_021F2CC0: + cmp r7, #0 + mov r6, #0 + addeq sp, sp, #0x14 + moveq r0, r6 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sb, #0x30] + ldr r0, [sb, #0x34] + subs r0, r1, r0 + bne _021F2D4C + ldr r0, [sb, #0x38] + bl FUN_021EF06C + cmp r0, #0 + bne _021F2D4C + ldr fp, _021F2D88 ; =0x0220DC70 + add r5, sp, #0xc + add r4, sp, #0x10 +_021F2D00: + str r5, [sp] + str r4, [sp, #4] + str fp, [sp, #8] + ldr r1, [sb, #8] + mov r0, sl + mov r3, r7 + add r2, r8, r6 + bl FUN_021F2E68 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x10] + cmp r0, #0 + addne r6, r6, r0 + subne r7, r7, r0 + cmp r0, #0 + beq _021F2D4C + cmp r7, #0 + bne _021F2D00 +_021F2D4C: + cmp r7, #0 + beq _021F2D74 + mov r0, sl + mov r3, r7 + add r1, sb, #0x28 + add r2, r8, r6 + bl FUN_021F2FCC + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F2D74: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F2D80: .word 0x0220DC4C +_021F2D84: .word 0x0220DB50 +_021F2D88: .word 0x0220DC70 + + arm_func_start FUN_021F2D8C +FUN_021F2D8C: ; 0x021F2D8C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r1 + ldr r1, [r4, #0x28] + mov r5, r0 + cmp r1, #0 + bne _021F2DC0 + ldr r0, _021F2E5C ; =0x0220DC4C + ldr r1, _021F2E60 ; =0x0220DB50 + mov r2, #0 + mov r3, #0xde + bl __msl_assertion_failed +_021F2DC0: + ldr r1, [r4, #0x30] + ldr r0, [r4, #0x34] + subs r0, r1, r0 + bne _021F2E3C + ldr r0, [r4, #0x38] + bl FUN_021EF06C + cmp r0, #0 + bne _021F2E3C + add r0, sp, #0xc + str r0, [sp] + add r1, sp, #0x10 + ldr r0, _021F2E64 ; =0x0220DC70 + str r1, [sp, #4] + str r0, [sp, #8] + ldr r1, [r4, #8] + add r2, sp, #0x28 + mov r0, r5 + mov r3, #1 + bl FUN_021F2E68 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, lr} + addne sp, sp, #0x10 + bxne lr + ldr r0, [sp, #0x10] + cmp r0, #0 + addne sp, sp, #0x14 + movne r0, #0 + ldmneia sp!, {r4, r5, lr} + addne sp, sp, #0x10 + bxne lr +_021F2E3C: + ldrsb r2, [sp, #0x28] + mov r0, r5 + add r1, r4, #0x28 + bl FUN_021F30D4 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_021F2E5C: .word 0x0220DC4C +_021F2E60: .word 0x0220DB50 +_021F2E64: .word 0x0220DC70 + + arm_func_start FUN_021F2E68 +FUN_021F2E68: ; 0x021F2E68 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + mov r7, r0 + mov r1, r2 + mov r2, r3 + mov r0, r8 + mov r3, #0 + ldr r6, [sp, #0x18] + ldr r5, [sp, #0x1c] + ldr r4, [sp, #0x20] + bl FUN_021EFC24 + mvn r1, #0 + cmp r0, r1 + bne _021F2F20 + mov r0, r8 + bl FUN_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _021F2F10 + mvn r1, #0x19 + cmp r0, r1 + beq _021F2F10 + mvn r1, #0x4b + cmp r0, r1 + beq _021F2F10 + ldrsb r0, [r4] + cmp r0, #0x50 + bne _021F2EE8 + ldrsb r0, [r4, #1] + cmp r0, #0x52 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_021F2EE8: + ldr r2, _021F2F5C ; =0x0220DC74 + mov r0, r7 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r7 + mov r1, #3 + mov r2, #0 + bl FUN_021F3500 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F2F10: + mov r0, #0 + str r0, [r5] + str r0, [r6] + b _021F2F54 +_021F2F20: + cmp r0, #0 + strne r0, [r5] + movne r0, #0 + strne r0, [r6] + bne _021F2F54 + ldr r1, _021F2F60 ; =0x0220DC9C + mov r0, r7 + mov r2, r4 + bl FUN_021FB3D0 + mov r0, #0 + str r0, [r5] + mov r0, #1 + str r0, [r6] +_021F2F54: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F2F5C: .word 0x0220DC74 +_021F2F60: .word 0x0220DC9C + + arm_func_start FUN_021F2F64 +FUN_021F2F64: ; 0x021F2F64 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r1 + mov r5, r0 + ldr r1, _021F2F98 ; =0x0220DC48 + add r0, sp, #0 + bl sprintf + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + bl FUN_021F2F9C + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F2F98: .word 0x0220DC48 + + arm_func_start FUN_021F2F9C +FUN_021F2F9C: ; 0x021F2F9C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov r0, r4 + bl strlen + mov r3, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_021F2FCC + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F2FCC +FUN_021F2FCC: ; 0x021F2FCC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + movs r8, r2 + mov sl, r0 + mov sb, r1 + mov r7, r3 + bne _021F2FF8 + ldr r0, _021F30C0 ; =0x0220DCC0 + ldr r1, _021F30C4 ; =0x0220DB50 + mov r2, #0 + mov r3, #0x51 + bl __msl_assertion_failed +_021F2FF8: + cmp r7, #0 + bge _021F3014 + ldr r0, _021F30C8 ; =0x0220DCD0 + ldr r1, _021F30C4 ; =0x0220DB50 + mov r2, #0 + mov r3, #0x52 + bl __msl_assertion_failed +_021F3014: + cmp sb, #0 + bne _021F3030 + ldr r0, _021F30CC ; =0x0220DB38 + ldr r1, _021F30C4 ; =0x0220DB50 + mov r2, #0 + mov r3, #0x53 + bl __msl_assertion_failed +_021F3030: + cmp r8, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r6, [sb, #8] + ldr r5, [sb, #4] + ldr r4, [sb] + sub r0, r5, r6 + cmp r0, r7 + bge _021F308C + cmp r7, #0x800 + movlt r0, #0x800 + movge r0, r7 + add r5, r5, r0 + mov r0, r4 + add r1, r5, #1 + bl FUN_021DD844 + movs r4, r0 + bne _021F308C + ldr r1, _021F30D0 ; =0x0220DBD4 + mov r0, sl + bl FUN_021FAEEC + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021F308C: + mov r1, r8 + mov r2, r7 + add r0, r4, r6 + bl memcpy + add r1, r6, r7 + mov r0, #0 + strb r0, [r4, r1] + ldr r1, [sb, #8] + add r1, r1, r7 + str r1, [sb, #8] + str r5, [sb, #4] + str r4, [sb] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021F30C0: .word 0x0220DCC0 +_021F30C4: .word 0x0220DB50 +_021F30C8: .word 0x0220DCD0 +_021F30CC: .word 0x0220DB38 +_021F30D0: .word 0x0220DBD4 + + arm_func_start FUN_021F30D4 +FUN_021F30D4: ; 0x021F30D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r4, r1 + mov r8, r0 + mov r7, r2 + bne _021F30FC + ldr r0, _021F3164 ; =0x0220DB38 + ldr r1, _021F3168 ; =0x0220DB50 + mov r2, #0 + mov r3, #0x25 + bl __msl_assertion_failed +_021F30FC: + ldr r6, [r4, #8] + ldr r5, [r4, #4] + ldr r0, [r4] + cmp r5, r6 + bne _021F3138 + add r5, r5, #0x800 + add r1, r5, #1 + bl FUN_021DD844 + cmp r0, #0 + bne _021F3138 + ldr r1, _021F316C ; =0x0220DBD4 + mov r0, r8 + bl FUN_021FAEEC + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3138: + strb r7, [r0, r6] + add r1, r6, #1 + mov r2, #0 + strb r2, [r0, r1] + ldr r1, [r4, #8] + add r1, r1, #1 + str r1, [r4, #8] + str r5, [r4, #4] + str r0, [r4] + mov r0, r2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F3164: .word 0x0220DB38 +_021F3168: .word 0x0220DB50 +_021F316C: .word 0x0220DBD4 + + arm_func_start FUN_021F3170 +FUN_021F3170: ; 0x021F3170 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + movs sb, r1 + ldr r8, [sl] + beq _021F3214 + ldr r7, [r8, #0x438] + ldr r6, [r8, #0x43c] + mov r5, #0 + str r5, [r8, #0x438] + mov r1, r7 + str r5, [r8, #0x43c] + cmp r7, #0 + beq _021F31F0 +_021F31A4: + ldr r0, [r1, #0x10] + ldr r4, [r1, #0x14] + cmp r0, sb + beq _021F31C0 + ldr r0, [r1, #0xc] + cmp r0, #1 + bne _021F31E0 +_021F31C0: + mov r0, sl + cmp r5, #0 + strne r4, [r5, #0x14] + moveq r7, r4 + cmp r6, r1 + moveq r6, r5 + bl FUN_021F3260 + b _021F31E4 +_021F31E0: + mov r5, r1 +_021F31E4: + mov r1, r4 + cmp r4, #0 + bne _021F31A4 +_021F31F0: + ldr r0, [r8, #0x438] + cmp r0, #0 + ldrne r0, [r8, #0x43c] + strne r7, [r0, #0x14] + strne r6, [r8, #0x43c] + streq r7, [r8, #0x438] + streq r6, [r8, #0x43c] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021F3214: + ldr r1, [r8, #0x438] + cmp r1, #0 + beq _021F3258 + mov r4, #0 +_021F3224: + str r4, [r8, #0x438] + str r4, [r8, #0x43c] + cmp r1, #0 + beq _021F324C +_021F3234: + ldr r5, [r1, #0x14] + mov r0, sl + bl FUN_021F3260 + mov r1, r5 + cmp r5, #0 + bne _021F3234 +_021F324C: + ldr r1, [r8, #0x438] + cmp r1, #0 + bne _021F3224 +_021F3258: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + + arm_func_start FUN_021F3260 +FUN_021F3260: ; 0x021F3260 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + ldr r1, [r7] + mov r4, r0 + cmp r1, #0 + bne _021F328C + ldr r0, _021F3448 ; =0x0220DCE0 + ldr r1, _021F344C ; =0x0220DD00 + mov r2, #0 + mov r3, #0x6e + bl __msl_assertion_failed +_021F328C: + ldr r0, [r7, #8] + cmp r0, #0 + bne _021F32AC + ldr r0, _021F3450 ; =0x0220DD10 + ldr r1, _021F344C ; =0x0220DD00 + mov r2, #0 + mov r3, #0x6f + bl __msl_assertion_failed +_021F32AC: + ldr r1, [r7, #8] + ldr r2, [r7, #4] + ldr r3, [r7] + mov r0, r4 + blx r3 + ldr r0, [r7, #0xc] + cmp r0, #2 + bne _021F32E8 + ldr r0, [r7, #8] + ldr r0, [r0, #8] + bl FUN_021DD82C + ldr r0, [r7, #8] + mov r1, #0 + str r1, [r0, #8] + b _021F342C +_021F32E8: + cmp r0, #3 + bne _021F3368 + ldr r5, [r7, #8] + mov r6, #0 + ldr r0, [r5, #0x38] + cmp r0, #0 + ble _021F3344 + mov r4, r6 + mov r8, r6 +_021F330C: + ldr r0, [r5, #0x3c] + ldr r0, [r0, r6, lsl #2] + bl FUN_021DD82C + ldr r0, [r5, #0x3c] + str r4, [r0, r6, lsl #2] + ldr r0, [r5, #0x40] + ldr r0, [r0, r6, lsl #2] + bl FUN_021DD82C + ldr r0, [r5, #0x40] + str r8, [r0, r6, lsl #2] + ldr r0, [r5, #0x38] + add r6, r6, #1 + cmp r6, r0 + blt _021F330C +_021F3344: + ldr r0, [r5, #0x3c] + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x40] + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #0x40] + b _021F342C +_021F3368: + cmp r0, #4 + bne _021F3388 + ldr r4, [r7, #8] + ldr r0, [r4, #0xc] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0xc] + b _021F342C +_021F3388: + cmp r0, #7 + bne _021F33B0 + ldr r4, [r7, #8] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021F342C + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x10] + b _021F342C +_021F33B0: + cmp r0, #8 + bne _021F33D8 + ldr r4, [r7, #8] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F342C + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #8] + b _021F342C +_021F33D8: + cmp r0, #9 + bne _021F342C + ldr r4, [r7, #8] + mov r5, #0 + ldr r0, [r4, #4] + cmp r0, #0 + ble _021F341C + mov r6, r5 +_021F33F8: + ldr r0, [r4, #8] + ldr r0, [r0, r5, lsl #2] + bl FUN_021DD82C + ldr r0, [r4, #8] + str r6, [r0, r5, lsl #2] + ldr r0, [r4, #4] + add r5, r5, #1 + cmp r5, r0 + blt _021F33F8 +_021F341C: + ldr r0, [r4, #8] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #8] +_021F342C: + ldr r0, [r7, #8] + bl FUN_021DD82C + mov r1, #0 + mov r0, r7 + str r1, [r7, #8] + bl FUN_021DD82C + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F3448: .word 0x0220DCE0 +_021F344C: .word 0x0220DD00 +_021F3450: .word 0x0220DD10 + + arm_func_start FUN_021F3454 +FUN_021F3454: ; 0x021F3454 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #0x18 + mov r5, r3 + ldr r4, [r6] + bl FUN_021DD860 + cmp r0, #0 + bne _021F3494 + ldr r1, _021F34FC ; =0x0220DD24 + mov r0, r6 + bl FUN_021FAEEC + mov r0, #1 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_021F3494: + ldr r3, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x20] + str r3, [r0] + str r2, [r0, #4] + str r5, [r0, #8] + cmp r1, #0 + ldrne r1, [r1, #0x18] + ldr r2, [sp, #0x24] + strne r1, [r0, #0x10] + moveq r1, #0 + streq r1, [r0, #0x10] + mov r1, #0 + str r2, [r0, #0xc] + str r1, [r0, #0x14] + ldr r1, [r4, #0x438] + cmp r1, #0 + streq r0, [r4, #0x438] + ldr r1, [r4, #0x43c] + cmp r1, #0 + strne r0, [r1, #0x14] + str r0, [r4, #0x43c] + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_021F34FC: .word 0x0220DD24 + + arm_func_start FUN_021F3500 +FUN_021F3500: ; 0x021F3500 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r4, r0 + ldr r5, [r4] + mov r7, r1 + mov r6, r2 + cmp r5, #0 + bne _021F3534 + ldr r0, _021F35E4 ; =0x0220DD34 + ldr r1, _021F35E8 ; =0x0220DD00 + mov r2, #0 + mov r3, #0x23 + bl __msl_assertion_failed +_021F3534: + cmp r7, #0 + bne _021F3550 + ldr r0, _021F35EC ; =0x0220DD48 + ldr r1, _021F35E8 ; =0x0220DD00 + mov r2, #0 + mov r3, #0x24 + bl __msl_assertion_failed +_021F3550: + cmp r6, #1 + beq _021F3574 + cmp r6, #0 + beq _021F3574 + ldr r0, _021F35F0 ; =0x0220DD60 + ldr r1, _021F35E8 ; =0x0220DD00 + mov r2, #0 + mov r3, #0x25 + bl __msl_assertion_failed +_021F3574: + cmp r6, #1 + moveq r0, #1 + streq r0, [r5, #0x41c] + ldr r1, [r5, #0x1a4] + ldr r0, [r5, #0x1a8] + cmp r1, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #0x10 + bl FUN_021DD860 + movs r3, r0 + strne r7, [r3] + strne r6, [r3, #0xc] + ldrne r0, [r5, #0x418] + add r1, sp, #8 + strne r0, [r3, #4] + strne r5, [r3, #8] + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F35E4: .word 0x0220DD34 +_021F35E8: .word 0x0220DD00 +_021F35EC: .word 0x0220DD48 +_021F35F0: .word 0x0220DD60 + + arm_func_start FUN_021F35F4 +FUN_021F35F4: ; 0x021F35F4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r0 + ldr r4, [r5] + ldr r2, [r4, #0x1d8] + cmp r2, #4 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r2, #0 + beq _021F36E0 + cmp r1, #0 + beq _021F3658 + cmp r2, #3 + bne _021F3658 + ldr r2, _021F37A8 ; =0x0220DDD0 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r5 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F37AC ; =0x0220DDE4 + mov r0, r5 + add r1, r4, #0x1f4 + bl FUN_021F2F9C +_021F3658: + mov r1, #1 + ldr r0, _021F37B0 ; =0x0220DDEC + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r4, #0x1d4] + add r3, sp, #8 + mov r0, r5 + add r2, r4, #0x1f4 + bl FUN_021F28AC + ldr r0, [r4, #0x1d4] + mvn r1, #0 + cmp r0, r1 + beq _021F36A4 + mov r1, #2 + bl FUN_021EFD80 + ldr r0, [r4, #0x1d4] + bl FUN_021EFD9C + mvn r0, #0 + str r0, [r4, #0x1d4] +_021F36A4: + ldr r0, [r4, #0x204] + mvn r1, #0 + cmp r0, r1 + beq _021F36CC + mov r1, #2 + bl FUN_021EFD80 + ldr r0, [r4, #0x204] + bl FUN_021EFD9C + mvn r0, #0 + str r0, [r4, #0x204] +_021F36CC: + mov r0, #4 + str r0, [r4, #0x1d8] + mov r0, #0 + str r0, [r4, #0x19c] + str r0, [r4, #0x1a0] +_021F36E0: + ldr r0, [r4, #0x1dc] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x1dc] + ldr r0, [r4, #0x1ec] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x1ec] + ldr r0, [r4, #0x1f4] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x1f4] + ldr r0, [r4, #0x440] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x440] + ldr r0, [r4, #0x450] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x450] + ldr r1, [r4, #0x424] + cmp r1, #0 + beq _021F3750 +_021F373C: + mov r0, r5 + bl FUN_021F6C84 + ldr r1, [r4, #0x424] + cmp r1, #0 + bne _021F373C +_021F3750: + mov r0, #0 + str r0, [r4, #0x424] + ldr r6, [r4, #0x434] + cmp r6, #0 + beq _021F377C +_021F3764: + mov r1, r6 + ldr r6, [r6, #0x3c] + mov r0, r5 + bl FUN_021F79E0 + cmp r6, #0 + bne _021F3764 +_021F377C: + mov r6, #0 + str r6, [r4, #0x434] + ldr r4, _021F37B4 ; =FUN_021F37B8 +_021F3788: + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl FUN_021F848C + cmp r0, #0 + beq _021F3788 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F37A8: .word 0x0220DDD0 +_021F37AC: .word 0x0220DDE4 +_021F37B0: .word 0x0220DDEC +_021F37B4: .word FUN_021F37B8 + + arm_func_start FUN_021F37B8 +FUN_021F37B8: ; 0x021F37B8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r1, [r5, #8] + mov r6, r0 + cmp r1, #0 + ldr r4, [r6] + beq _021F381C + ldr r0, [r4, #0x104] + cmp r0, #0 + bne _021F381C + ldr r0, [r1, #8] + bl FUN_021DD82C + ldr r0, [r5, #8] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r5, #8] + ldr r0, [r0, #0xc] + bl FUN_021DD82C + ldr r0, [r5, #8] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r5, #8] + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #8] +_021F381C: + ldr r0, [r5, #0x10] + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #0x10] + ldr r0, [r5, #0x18] + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #0x18] + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021F3864 + ldr r0, [r4, #0x104] + cmp r0, #1 + bne _021F3878 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021F3878 +_021F3864: + mov r0, r6 + mov r1, r5 + bl FUN_021F85A0 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021F3878: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F3880 +FUN_021F3880: ; 0x021F3880 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r4, [r5] + add r2, sp, #0 + ldr r1, [r4, #0x1d4] + bl FUN_021FB0FC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, [sp] + cmp r0, #4 + bne _021F38E0 + ldr r1, _021F3920 ; =0x00000107 + ldr r2, _021F3924 ; =0x0220DDF0 + mov r0, r5 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #4 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #4 + mov r0, #4 + ldmia sp!, {r4, r5, pc} +_021F38E0: + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + cmp r0, #3 + beq _021F390C + ldr r0, _021F3928 ; =0x0220DE18 + ldr r1, _021F392C ; =0x0220DE30 + ldr r3, _021F3930 ; =0x000002EF + mov r2, #0 + bl __msl_assertion_failed +_021F390C: + mov r0, #2 + str r0, [r4, #0x1d8] + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F3920: .word 0x00000107 +_021F3924: .word 0x0220DDF0 +_021F3928: .word 0x0220DE18 +_021F392C: .word 0x0220DE30 +_021F3930: .word 0x000002EF + + arm_func_start FUN_021F3934 +FUN_021F3934: ; 0x021F3934 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x2a0 + mov r6, r2 + mov r8, r0 + mov r7, r1 + mov r1, r6 + mov r2, #0 + ldr r5, [r8] + bl FUN_021FB2F8 + cmp r0, #0 + beq _021F3A34 + ldr r2, [r5, #0x418] + ldr r0, _021F3FC0 ; =0x00000106 + cmp r2, r0 + bne _021F3994 + ldr r1, [r5, #0x1a0] + cmp r1, #0 + beq _021F3994 + mov r0, r8 + bl FUN_021F85B4 + mov r0, #0 + str r0, [r5, #0x19c] + str r0, [r5, #0x1a0] + b _021F39C8 +_021F3994: + ldr r0, _021F3FC4 ; =0x00000201 + cmp r2, r0 + bne _021F39C8 + ldr r1, _021F3FC8 ; =0x0220DE40 + add r2, sp, #0x4e + mov r0, r6 + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + beq _021F39C8 + add r0, sp, #0x4e + bl atol + str r0, [r5, #0x1a0] +_021F39C8: + ldr r1, _021F3FCC ; =0x0220DE48 + mov r0, r6 + bl strstr + cmp r0, #0 + beq _021F3A08 + ldr r1, [r5, #0x418] + mov r0, r8 + mov r2, r5 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #4 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3A08: + ldr r1, [r5, #0x418] + mov r0, r8 + mov r2, r5 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #4 + mov r2, #0 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3A34: + ldr r0, [r7, #0x14] + ldr r4, [r7, #4] + cmp r0, #1 + beq _021F3A58 + cmp r0, #2 + beq _021F3C48 + cmp r0, #3 + beq _021F3B38 + b _021F3FB4 +_021F3A58: + ldr r1, _021F3FD0 ; =0x0220DE50 + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _021F3A9C + ldr r2, _021F3FD4 ; =0x0220DE58 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3A9C: + ldr r1, _021F3FD8 ; =0x0220DE88 + mov r0, r6 + mov r2, r4 + mov r3, #0x80 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3AE4 + ldr r2, _021F3FD4 ; =0x0220DE58 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3AE4: + ldr r0, [r4, #0x304] + cmp r0, #0 + beq _021F3B14 + mov r0, r8 + mov r1, r4 + bl FUN_021F401C + cmp r0, #0 + addne sp, sp, #0x2a0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, #3 + str r0, [r7, #0x14] + b _021F3FB4 +_021F3B14: + mov r0, r8 + mov r1, r4 + bl FUN_021F42B8 + cmp r0, #0 + addne sp, sp, #0x2a0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, #2 + str r0, [r7, #0x14] + b _021F3FB4 +_021F3B38: + ldr r1, _021F3FDC ; =0x0220DE94 + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _021F3B7C + ldr r2, _021F3FD4 ; =0x0220DE58 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3B7C: + ldr r1, _021F3FE0 ; =0x0220DE9C + add r2, sp, #0x4e + mov r0, r6 + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3BC4 + ldr r2, _021F3FE4 ; =0x0220DEA8 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3BC4: + add r0, sp, #0x4e + bl atol + str r0, [r5, #0x19c] + ldr r1, _021F3FE8 ; =0x0220DED8 + add r2, sp, #0x4e + mov r0, r6 + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3C18 + ldr r2, _021F3FE4 ; =0x0220DEA8 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3C18: + add r0, sp, #0x4e + bl atol + str r0, [r5, #0x1a0] + mov r0, r8 + mov r1, r4 + bl FUN_021F42B8 + cmp r0, #0 + addne sp, sp, #0x2a0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, #2 + str r0, [r7, #0x14] + b _021F3FB4 +_021F3C48: + ldr r1, _021F3FEC ; =0x0220DEE4 + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _021F3C8C + ldr r2, _021F3FD4 ; =0x0220DE58 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3C8C: + ldr r1, _021F3FF0 ; =0x0220DEEC + add r2, sp, #0x4e + mov r0, r6 + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3CD4 + ldr r2, _021F3FE4 ; =0x0220DEA8 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3CD4: + add r0, sp, #0x4e + bl atol + str r0, [r5, #0x198] + ldr r1, _021F3FE0 ; =0x0220DE9C + add r2, sp, #0x4e + mov r0, r6 + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3D28 + ldr r2, _021F3FE4 ; =0x0220DEA8 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3D28: + add r0, sp, #0x4e + bl atol + str r0, [r5, #0x19c] + ldr r1, _021F3FE8 ; =0x0220DED8 + add r2, sp, #0x4e + mov r0, r6 + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3D7C + ldr r2, _021F3FE4 ; =0x0220DEA8 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3D7C: + add r0, sp, #0x4e + bl atol + str r0, [r5, #0x1a0] + ldr r1, _021F3FF4 ; =0x0220DEF8 + add r2, sp, #0x39 + mov r0, r6 + mov r3, #0x15 + bl FUN_021FB1F0 + ldr r2, _021F3FF8 ; =0x00000474 + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x39] + ldr r1, _021F3FFC ; =0x0220DF08 + mov r0, r6 + add r2, r5, r2 + mov r3, #0x19 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streqb r0, [r5, #0x474] + ldrsb r0, [r4, #0xc2] + cmp r0, #0 + addne r0, r4, #0xc2 + bne _021F3E14 + add r0, r5, #0x100 + ldrsb r0, [r0, #0x2f] + cmp r0, #0 + ldrne r0, _021F4000 ; =0x0000012F + addne r0, r5, r0 + bne _021F3E14 + add r0, sp, #0x200 + ldr r1, _021F4004 ; =0x0220DF10 + add r0, r0, #0x4e + add r2, r5, #0x110 + add r3, r5, #0x144 + bl sprintf + add r0, sp, #0x200 + add r0, r0, #0x4e +_021F3E14: + str r0, [sp] + str r4, [sp, #4] + add r2, r4, #0x80 + str r2, [sp, #8] + add r2, r4, #0xa1 + ldr r1, _021F4008 ; =0x0220DF18 + ldr r3, _021F400C ; =0x0220DF28 + add r0, sp, #0x4e + str r2, [sp, #0xc] + bl sprintf + add r0, sp, #0x4e + bl strlen + mov r1, r0 + add r0, sp, #0x4e + add r2, sp, #0x18 + bl FUN_021EF794 + ldr r1, _021F4010 ; =0x0220DF5C + mov r0, r6 + add r2, sp, #0x4e + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F3E9C + ldr r2, _021F3FE4 ; =0x0220DEA8 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3E9C: + add r0, sp, #0x18 + add r1, sp, #0x4e + mov r2, #0x20 + bl memcmp + cmp r0, #0 + beq _021F3EE0 + ldr r2, _021F4014 ; =0x0220DF64 + mov r0, r8 + mov r1, #0x108 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x2a0 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3EE0: + ldr r0, [r5, #0x100] + cmp r0, #0 + beq _021F3F08 + ldr r1, [r5, #0x1a0] + mov r0, r8 + bl FUN_021F8624 + ldr r1, [r5, #0x1a0] + str r1, [r0] + ldr r1, [r5, #0x19c] + str r1, [r0, #4] +_021F3F08: + mov r0, #3 + str r0, [r5, #0x1d8] + ldr r1, [r7, #0xc] + ldr r0, [r7, #0x10] + cmp r1, #0 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + beq _021F3FA8 + mov r0, #0x20 + bl FUN_021DD860 + movs r4, r0 + bne _021F3F50 + ldr r1, _021F4018 ; =0x0220DF84 + mov r0, r8 + bl FUN_021FAEEC + add sp, sp, #0x2a0 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F3F50: + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r1, [r5, #0x1a0] + mov r0, #0 + str r1, [r4, #4] + str r0, [r4] + add r1, sp, #0x39 + add r0, r4, #8 + mov r2, #0x15 + bl FUN_021FB3DC + str r7, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, sp, #0x10 + mov r0, r8 + mov r3, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + addne sp, sp, #0x2a0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_021F3FA8: + mov r0, r8 + mov r1, r7 + bl FUN_021F6C84 +_021F3FB4: + mov r0, #0 + add sp, sp, #0x2a0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F3FC0: .word 0x00000106 +_021F3FC4: .word 0x00000201 +_021F3FC8: .word 0x0220DE40 +_021F3FCC: .word 0x0220DE48 +_021F3FD0: .word 0x0220DE50 +_021F3FD4: .word 0x0220DE58 +_021F3FD8: .word 0x0220DE88 +_021F3FDC: .word 0x0220DE94 +_021F3FE0: .word 0x0220DE9C +_021F3FE4: .word 0x0220DEA8 +_021F3FE8: .word 0x0220DED8 +_021F3FEC: .word 0x0220DEE4 +_021F3FF0: .word 0x0220DEEC +_021F3FF4: .word 0x0220DEF8 +_021F3FF8: .word 0x00000474 +_021F3FFC: .word 0x0220DF08 +_021F4000: .word 0x0000012F +_021F4004: .word 0x0220DF10 +_021F4008: .word 0x0220DF18 +_021F400C: .word 0x0220DF28 +_021F4010: .word 0x0220DF5C +_021F4014: .word 0x0220DF64 +_021F4018: .word 0x0220DF84 + + arm_func_start FUN_021F401C +FUN_021F401C: ; 0x021F401C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xec + mov fp, r0 + ldr r4, [fp] + ldr r0, _021F4278 ; =0x00000177 + mov r5, r1 + add r0, r4, r0 + bl strlen + mov sb, r0 + ldr r0, _021F427C ; =0x79707367 + bl FUN_021EFA2C + cmp sb, #0 + mov sl, #0 + bls _021F4090 + add r8, sp, #0 + mov r7, sl + mov r6, #0xff +_021F4060: + mov r0, r7 + mov r1, r6 + bl FUN_021EF9FC + add r1, r4, sl + add r1, r1, #0x100 + add sl, sl, #1 + ldrsb r1, [r1, #0x77] + mov r0, r0, lsl #0x18 + cmp sl, sb + eor r0, r1, r0, asr #24 + strb r0, [r8], #1 + blo _021F4060 +_021F4090: + add r0, sp, #0 + mov r6, #0 + add r1, sp, #0x1f + mov r2, sb + mov r3, #1 + strb r6, [r0, sl] + bl FUN_021EF820 + ldr r2, _021F4280 ; =0x0220DF94 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F4284 ; =0x0220DFA0 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, fp + add r1, r4, #0x1f4 + add r2, r4, #0x144 + bl FUN_021F2F9C + ldr r2, _021F4288 ; =0x0220DFA8 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, fp + add r1, r4, #0x1f4 + add r2, r4, #0x110 + bl FUN_021F2F9C + ldr r2, _021F428C ; =0x0220DFB0 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, fp + add r1, r4, #0x1f4 + add r2, sp, #0x1f + bl FUN_021F2F9C + ldr r2, _021F4290 ; =0x0220DFC0 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x46c] + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F4294 ; =0x0220DFCC + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F4298 ; =0x02210EA0 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F429C ; =0x0220DFD8 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x470] + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F42A0 ; =0x0220DEF8 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F42A4 ; =0x0000012F + mov r0, fp + add r1, r4, #0x1f4 + add r2, r4, r2 + bl FUN_021F2F9C + add r0, r5, #0x200 + ldrsb r0, [r0, #0xc2] + cmp r0, #0 + beq _021F424C + ldr r0, _021F42A8 ; =0x000002C2 + add r0, r5, r0 + bl strlen + mov sl, r0 + ldr r0, _021F427C ; =0x79707367 + bl FUN_021EFA2C + cmp sl, #0 + mov r8, r6 + bls _021F4210 + add sb, sp, #0x4c + mov r7, r8 + mov r6, #0xff +_021F41E0: + mov r0, r7 + mov r1, r6 + bl FUN_021EF9FC + add r1, r5, r8 + add r1, r1, #0x200 + add r8, r8, #1 + ldrsb r1, [r1, #0xc2] + mov r0, r0, lsl #0x18 + cmp r8, sl + eor r0, r1, r0, asr #24 + strb r0, [sb], #1 + blo _021F41E0 +_021F4210: + add r0, sp, #0x4c + mov r5, #0 + add r1, sp, #0x8d + mov r2, sl + mov r3, #1 + strb r5, [r0, r8] + bl FUN_021EF820 + ldr r2, _021F42AC ; =0x0220DFE8 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + add r2, sp, #0x8d + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C +_021F424C: + ldr r2, _021F42B0 ; =0x0220DFF4 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F42B4 ; =0x0220DDE4 + mov r0, fp + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, #0 + add sp, sp, #0xec + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F4278: .word 0x00000177 +_021F427C: .word 0x79707367 +_021F4280: .word 0x0220DF94 +_021F4284: .word 0x0220DFA0 +_021F4288: .word 0x0220DFA8 +_021F428C: .word 0x0220DFB0 +_021F4290: .word 0x0220DFC0 +_021F4294: .word 0x0220DFCC +_021F4298: .word 0x02210EA0 +_021F429C: .word 0x0220DFD8 +_021F42A0: .word 0x0220DEF8 +_021F42A4: .word 0x0000012F +_021F42A8: .word 0x000002C2 +_021F42AC: .word 0x0220DFE8 +_021F42B0: .word 0x0220DFF4 +_021F42B4: .word 0x0220DDE4 + + arm_func_start FUN_021F42B8 +FUN_021F42B8: ; 0x021F42B8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x28c + mov r5, r1 + mov r6, r0 + add r0, r5, #0x80 + mov r1, #0x20 + ldr r4, [r6] + bl FUN_021F4C48 + add r0, r5, #0x100 + ldrsb r0, [r0, #0xc2] + cmp r0, #0 + ldrne r0, _021F4614 ; =0x000001C2 + addne r7, r5, r0 + ldreq r0, _021F4618 ; =0x00000177 + addeq r7, r4, r0 + mov r0, r7 + bl strlen + mov r1, r0 + mov r0, r7 + add r2, r5, #0xa1 + bl FUN_021EF794 + ldrsb r0, [r5, #0xc2] + cmp r0, #0 + addne r0, r5, #0xc2 + bne _021F4354 + add r0, r4, #0x100 + ldrsb r0, [r0, #0x2f] + cmp r0, #0 + ldrne r0, _021F461C ; =0x0000012F + addne r0, r4, r0 + bne _021F4354 + add r0, sp, #0x200 + ldr r1, _021F4620 ; =0x0220DF10 + add r0, r0, #0x35 + add r2, r4, #0x110 + add r3, r4, #0x144 + bl sprintf + add r0, sp, #0x200 + add r0, r0, #0x35 +_021F4354: + str r0, [sp] + add r0, r5, #0x80 + str r0, [sp, #4] + ldr r1, _021F4624 ; =0x0220DF18 + ldr r3, _021F4628 ; =0x0220DF28 + add r0, sp, #0x35 + str r5, [sp, #8] + add r2, r5, #0xa1 + str r2, [sp, #0xc] + bl sprintf + add r0, sp, #0x35 + bl strlen + mov r1, r0 + add r0, sp, #0x35 + add r2, sp, #0x14 + bl FUN_021EF794 + ldr r0, [r4, #0x100] + cmp r0, #0 + beq _021F43D0 + add r3, sp, #0x10 + mov r0, r6 + add r1, r4, #0x110 + add r2, r4, #0x144 + bl FUN_021F84F4 + ldr r0, [sp, #0x10] + cmp r0, #0 + ldrne r0, [r0, #4] + strne r0, [r4, #0x19c] + ldrne r0, [sp, #0x10] + ldrne r0, [r0] + strne r0, [r4, #0x1a0] +_021F43D0: + ldr r2, _021F462C ; =0x0220DFFC + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F4630 ; =0x0220DE88 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + add r2, r5, #0x80 + bl FUN_021F2F9C + ldrsb r0, [r5, #0xc2] + cmp r0, #0 + beq _021F4430 + ldr r2, _021F4634 ; =0x0220E004 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + add r2, r5, #0xc2 + bl FUN_021F2F9C + b _021F44A8 +_021F4430: + add r0, r4, #0x100 + ldrsb r0, [r0, #0x2f] + cmp r0, #0 + beq _021F4468 + ldr r2, _021F4638 ; =0x0220DEF8 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, _021F461C ; =0x0000012F + mov r0, r6 + add r1, r4, #0x1f4 + add r2, r4, r2 + bl FUN_021F2F9C + b _021F44A8 +_021F4468: + ldr r2, _021F463C ; =0x0220E010 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + add r2, r4, #0x110 + bl FUN_021F2F9C + ldr r2, _021F4640 ; =0x0220E018 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + add r2, r4, #0x144 + bl FUN_021F2F9C +_021F44A8: + ldr r0, [r4, #0x19c] + cmp r0, #0 + beq _021F44D4 + ldr r2, _021F4644 ; =0x0220DE9C + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x19c] + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 +_021F44D4: + ldr r0, [r4, #0x1a0] + cmp r0, #0 + beq _021F4500 + ldr r2, _021F4648 ; =0x0220DED8 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x1a0] + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 +_021F4500: + ldr r2, _021F464C ; =0x0220E01C + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + add r2, sp, #0x14 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r0, [r4, #0x10c] + cmp r0, #1 + bne _021F453C + ldr r2, _021F4650 ; =0x0220E028 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C +_021F453C: + ldr r2, _021F4654 ; =0x0220E034 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r1, [r4, #0x208] + mov r0, r6 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r2, r1, asr #8 + mov r1, r1, lsl #8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r2, r1, lsl #0x10 + add r1, r4, #0x1f4 + mov r2, r2, asr #0x10 + bl FUN_021F2F64 + ldr r2, _021F4658 ; =0x0220DFC0 + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x46c] + mov r0, r6 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F465C ; =0x0220DFCC + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F4660 ; =0x02210EA0 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F4664 ; =0x0220DFD8 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, [r4, #0x470] + bl FUN_021F2F64 + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F4668 ; =0x0220DFF4 + bl FUN_021F2F9C + mov r0, r6 + add r1, r4, #0x1f4 + ldr r2, _021F466C ; =0x0220DDE4 + bl FUN_021F2F9C + mov r0, #0 + add sp, sp, #0x28c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F4614: .word 0x000001C2 +_021F4618: .word 0x00000177 +_021F461C: .word 0x0000012F +_021F4620: .word 0x0220DF10 +_021F4624: .word 0x0220DF18 +_021F4628: .word 0x0220DF28 +_021F462C: .word 0x0220DFFC +_021F4630: .word 0x0220DE88 +_021F4634: .word 0x0220E004 +_021F4638: .word 0x0220DEF8 +_021F463C: .word 0x0220E010 +_021F4640: .word 0x0220E018 +_021F4644: .word 0x0220DE9C +_021F4648: .word 0x0220DED8 +_021F464C: .word 0x0220E01C +_021F4650: .word 0x0220E028 +_021F4654: .word 0x0220E034 +_021F4658: .word 0x0220DFC0 +_021F465C: .word 0x0220DFCC +_021F4660: .word 0x02210EA0 +_021F4664: .word 0x0220DFD8 +_021F4668: .word 0x0220DFF4 +_021F466C: .word 0x0220DDE4 + + arm_func_start FUN_021F4670 +FUN_021F4670: ; 0x021F4670 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r4, [r8] + mov r7, r1 + ldr r1, [r4, #0x1d8] + mov r6, r2 + mov r5, r3 + cmp r1, #4 + bne _021F46A8 + bl FUN_021F14C0 + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_021F46A8: + ldr r0, [r4, #0x1d8] + cmp r0, #0 + beq _021F46CC + ldr r1, _021F48AC ; =0x0220E03C + mov r0, r8 + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F46CC: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _021F46EC + cmp r0, #1 + bne _021F46F8 + mov r0, #1 + str r0, [r4, #0x10c] + b _021F4710 +_021F46EC: + mov r0, #0 + str r0, [r4, #0x10c] + b _021F4710 +_021F46F8: + ldr r1, _021F48B0 ; =0x0220E050 + mov r0, r8 + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F4710: + mov r3, #1 + mov r1, r7 + add r0, r4, #0x110 + mov r2, #0x1f + str r3, [r4, #0x10c] + bl FUN_021FB3DC + ldr r0, _021F48B4 ; =0x0000012F + mov r1, r6 + add r0, r4, r0 + mov r2, #0x15 + bl FUN_021FB3DC + mov r1, r5 + add r0, r4, #0x144 + mov r2, #0x33 + bl FUN_021FB3DC + ldr r0, _021F48B8 ; =0x00000177 + ldr r1, [sp, #0x28] + add r0, r4, r0 + mov r2, #0x1f + bl FUN_021FB3DC + add r0, r4, #0x144 + bl FUN_021F01C4 + mov r0, #0x308 + bl FUN_021DD860 + movs r4, r0 + bne _021F4790 + ldr r1, _021F48BC ; =0x0220DF84 + mov r0, r8 + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F4790: + mov r1, #0 + mov r2, #0x308 + bl Call_FillMemWithValue + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x2c] + str r0, [r4, #0x304] + ldrsb r0, [r1] + cmp r0, #0 + beq _021F47E4 + ldr r0, [sp, #0x30] + ldrsb r0, [r0] + cmp r0, #0 + beq _021F47E4 + add r0, r4, #0xc2 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r0, _021F48C0 ; =0x000001C2 + ldr r1, [sp, #0x30] + add r0, r4, r0 + mov r2, #0x100 + bl FUN_021FB3DC +_021F47E4: + ldr r1, [sp, #0x34] + cmp r1, #0 + beq _021F4800 + ldr r0, _021F48C4 ; =0x000002C2 + mov r2, #0x41 + add r0, r4, r0 + bl FUN_021FB3DC +_021F4800: + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x44] + str r1, [sp] + str r0, [sp, #4] + ldr r5, [sp, #0x48] + add r3, sp, #0xc + mov r0, r8 + mov r2, r4 + mov r1, #0 + str r5, [sp, #8] + bl FUN_021F6D8C + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0xc] + mov r0, r8 + bl FUN_021F48C8 + movs r4, r0 + beq _021F4878 + ldr r1, [sp, #0xc] + mov r0, r8 + str r4, [r1, #0x1c] + ldr r1, [sp, #0xc] + bl FUN_021F6E44 + mov r0, r8 + mov r1, #0 + bl FUN_021F35F4 + add sp, sp, #0x10 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F4878: + ldr r1, [sp, #0xc] + ldr r0, [r1, #8] + cmp r0, #0 + beq _021F48A0 + ldr r1, [r1, #0x18] + mov r0, r8 + bl FUN_021F0FD4 + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_021F48A0: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F48AC: .word 0x0220E03C +_021F48B0: .word 0x0220E050 +_021F48B4: .word 0x0000012F +_021F48B8: .word 0x00000177 +_021F48BC: .word 0x0220DF84 +_021F48C0: .word 0x000001C2 +_021F48C4: .word 0x000002C2 + + arm_func_start FUN_021F48C8 +FUN_021F48C8: ; 0x021F48C8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r4, [r6] + mov r5, r1 + ldr r0, [r4, #0x10c] + cmp r0, #0 + bne _021F4A70 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4, #0x204] + ldr r0, [r4, #0x204] + mvn r1, #0 + cmp r0, r1 + bne _021F4938 + ldr r2, _021F4C1C ; =0x0220E064 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4938: + mov r1, #0 + bl FUN_021F017C + cmp r0, #0 + bne _021F4974 + ldr r2, _021F4C20 ; =0x0220E08C + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4974: + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + mov r0, #2 + strb r0, [sp, #1] + ldr r0, [r4, #0x204] + mov r2, #8 + bl FUN_021EFD28 + mvn r1, #0 + cmp r0, r1 + bne _021F49D0 + ldr r2, _021F4C24 ; =0x0220E0C0 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F49D0: + ldr r0, [r4, #0x204] + mov r1, #5 + bl FUN_021EFCC8 + mvn r1, #0 + cmp r0, r1 + bne _021F4A14 + ldr r2, _021F4C28 ; =0x0220E0E8 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4A14: + mov r0, #8 + str r0, [sp, #8] + ldr r0, [r4, #0x204] + add r1, sp, #0 + add r2, sp, #8 + bl FUN_021EFB5C + mvn r1, #0 + cmp r0, r1 + bne _021F4A64 + ldr r2, _021F4C2C ; =0x0220E114 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4A64: + ldrh r0, [sp, #2] + str r0, [r4, #0x208] + b _021F4A80 +_021F4A70: + mvn r0, #0 + str r0, [r4, #0x204] + mov r0, #0 + str r0, [r4, #0x208] +_021F4A80: + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4, #0x1d4] + ldr r0, [r4, #0x1d4] + mvn r1, #0 + cmp r0, r1 + bne _021F4AD0 + ldr r2, _021F4C1C ; =0x0220E064 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4AD0: + mov r1, #0 + bl FUN_021F017C + cmp r0, #0 + bne _021F4B0C + ldr r2, _021F4C20 ; =0x0220E08C + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4B0C: + ldr r0, _021F4C30 ; =0x0220DD90 + bl FUN_0209A6EC + cmp r0, #0 + bne _021F4B48 + ldr r2, _021F4C34 ; =0x0220E144 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4B48: + add r1, sp, #0 + mov r2, #0 + str r2, [r1] + str r2, [r1, #4] + mov r1, #2 + strb r1, [sp, #1] + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [sp, #4] + cmp r0, #0 + bne _021F4B88 + ldr r0, _021F4C38 ; =0x0220E178 + ldr r1, _021F4C3C ; =0x0220DE30 + mov r3, #0x90 + bl __msl_assertion_failed +_021F4B88: + ldr r0, _021F4C40 ; =0x0000CC74 + add r1, sp, #0 + strh r0, [sp, #2] + ldr r0, [r4, #0x1d4] + mov r2, #8 + bl FUN_021EFCE4 + mvn r1, #0 + cmp r0, r1 + bne _021F4C04 + ldr r0, [r4, #0x1d4] + bl FUN_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _021F4C04 + mvn r1, #0x19 + cmp r0, r1 + beq _021F4C04 + mvn r1, #0x4b + cmp r0, r1 + beq _021F4C04 + ldr r2, _021F4C44 ; =0x0220E198 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F4C04: + mov r0, #1 + str r0, [r5, #0x14] + str r0, [r4, #0x1d8] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F4C1C: .word 0x0220E064 +_021F4C20: .word 0x0220E08C +_021F4C24: .word 0x0220E0C0 +_021F4C28: .word 0x0220E0E8 +_021F4C2C: .word 0x0220E114 +_021F4C30: .word 0x0220DD90 +_021F4C34: .word 0x0220E144 +_021F4C38: .word 0x0220E178 +_021F4C3C: .word 0x0220DE30 +_021F4C40: .word 0x0000CC74 +_021F4C44: .word 0x0220E198 + + arm_func_start FUN_021F4C48 +FUN_021F4C48: ; 0x021F4C48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r1 + mov sb, r0 + cmp r8, #0 + mov r7, #0 + ble _021F4CA0 + ldr r6, _021F4CB0 ; =0x0220E1C0 + ldr r5, _021F4CB4 ; =0x08421085 + ldr r4, _021F4CB8 ; =0x0000003E +_021F4C70: + bl rand + umull r1, r2, r0, r5 + sub r1, r0, r2 + add r2, r2, r1, lsr #1 + mov r2, r2, lsr #5 + umull r1, r2, r4, r2 + sub r2, r0, r1 + ldrsb r0, [r6, r2] + strb r0, [sb, r7] + add r7, r7, #1 + cmp r7, r8 + blt _021F4C70 +_021F4CA0: + mov r0, #0 + strb r0, [sb, r7] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021F4CB0: .word 0x0220E1C0 +_021F4CB4: .word 0x08421085 +_021F4CB8: .word 0x0000003E + + arm_func_start FUN_021F4CBC +FUN_021F4CBC: ; 0x021F4CBC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0xc] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r0] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0] + ldr r0, [r4, #0xc] + ldr r0, [r0, #4] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #4] + ldr r0, [r4, #0xc] + ldr r0, [r0, #8] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0xc] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x10] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x14] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0xc8] + bl FUN_021DD82C + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0xc8] + ldr r0, [r4, #0xc] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0xc] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F4D88 +FUN_021F4D88: ; 0x021F4D88 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, [r0] + mov r5, r1 + ldr r0, [r0, #0x100] + mov r4, r2 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl FUN_021F4CBC + mov r0, #0xf0 + bl FUN_021DD860 + str r0, [r5, #0xc] + ldr r6, [r5, #0xc] + cmp r6, #0 + beq _021F4E50 + mov lr, r4 + mov ip, #0xf +_021F4DD0: + ldmia lr!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _021F4DD0 + ldr r0, [r4] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1] + ldr r0, [r4, #4] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1, #4] + ldr r0, [r4, #8] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1, #8] + ldr r0, [r4, #0xc] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1, #0xc] + ldr r0, [r4, #0x10] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1, #0x10] + ldr r0, [r4, #0x14] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1, #0x14] + ldr r0, [r4, #0xc8] + bl FUN_021F0208 + ldr r1, [r5, #0xc] + str r0, [r1, #0xc8] +_021F4E50: + ldr r0, [r5, #0xc] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F4E64 +FUN_021F4E64: ; 0x021F4E64 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r8, r0 + ldr r0, [r8] + mov r4, #0 + str r4, [sp, #0x10] + ldr r5, [sp, #0x38] + cmp r2, #1 + ldr r0, [r0, #0x100] + moveq r4, #1 + cmp r0, #0 + moveq r4, #0 + mov r7, r1 + mov r6, r3 + cmp r5, #0 + beq _021F4F94 + cmp r4, #0 + beq _021F4F94 + add r2, sp, #0xc + mov r0, r8 + mov r1, r7 + bl FUN_021F85E8 + cmp r0, #0 + beq _021F4F94 + ldr r0, [sp, #0xc] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _021F4F94 + mov r0, #0x204 + bl FUN_021DD860 + movs r4, r0 + bne _021F4EFC + ldr r1, _021F5014 ; =0x0220E200 + mov r0, r8 + bl FUN_021FAEEC + add sp, sp, #0x20 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F4EFC: + ldr r0, [sp, #0xc] + mov r1, r4 + ldr r0, [r0, #0xc] + bl FUN_021F66D4 + mov r2, #0 + str r2, [r4] + str r7, [r4, #4] + ldr r7, [sp, #0x3c] + str r5, [sp, #0x14] + str r7, [sp, #0x18] + mov r0, #1 + str r0, [sp] + str r5, [sp, #4] + add r3, sp, #0x10 + mov r0, r8 + mov r1, #2 + str r7, [sp, #8] + bl FUN_021F6D8C + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r2, [sp, #0x10] + mov r0, #0 + ldr r5, [r2, #0x18] + add r1, sp, #0x14 + str r2, [sp] + str r0, [sp, #4] + mov r0, r8 + mov r3, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x10] + mov r0, r8 + bl FUN_021F6C84 + b _021F4FE8 +_021F4F94: + str r6, [sp] + ldr r4, [sp, #0x3c] + str r5, [sp, #4] + add r3, sp, #0x10 + mov r0, r8 + mov r1, #2 + mov r2, #0 + str r4, [sp, #8] + bl FUN_021F6D8C + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x10] + mov r0, r8 + ldr r5, [r1, #0x18] + mov r1, r7 + mov r2, r5 + bl FUN_021F5018 + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_021F4FE8: + cmp r6, #0 + beq _021F5008 + mov r0, r8 + mov r1, r5 + bl FUN_021F0FD4 + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_021F5008: + mov r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F5014: .word 0x0220E200 + + arm_func_start FUN_021F5018 +FUN_021F5018: ; 0x021F5018 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + ldr r4, [r7] + mov r5, r2 + mov r6, r1 + ldr r2, _021F50A8 ; =0x0220E210 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + ldr r2, _021F50AC ; =0x0220E228 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F9C + mov r2, r6 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + mov r0, r7 + add r1, r4, #0x1f4 + ldr r2, _021F50B0 ; =0x0220E234 + bl FUN_021F2F9C + mov r2, r5 + mov r0, r7 + add r1, r4, #0x1f4 + bl FUN_021F2F64 + mov r0, r7 + add r1, r4, #0x1f4 + ldr r2, _021F50B4 ; =0x0220E23C + bl FUN_021F2F9C + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F50A8: .word 0x0220E210 +_021F50AC: .word 0x0220E228 +_021F50B0: .word 0x0220E234 +_021F50B4: .word 0x0220E23C + + arm_func_start FUN_021F50B8 +FUN_021F50B8: ; 0x021F50B8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x100 + mov r6, r0 + movs r5, r2 + ldr r4, [r6] + bne _021F50E4 + ldr r1, _021F5810 ; =0x0220E264 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F50E4: + sub r1, r1, #0x700 + cmp r1, #0x1e + addls pc, pc, r1, lsl #2 + b _021F57EC +_021F50F4: ; jump table + b _021F5170 ; case 0 + b _021F51D0 ; case 1 + b _021F5234 ; case 2 + b _021F529C ; case 3 + b _021F5300 ; case 4 + b _021F5330 ; case 5 + b _021F54BC ; case 6 + b _021F5360 ; case 7 + b _021F5390 ; case 8 + b _021F53C0 ; case 9 + b _021F57EC ; case 10 + b _021F5418 ; case 11 + b _021F57EC ; case 12 + b _021F54EC ; case 13 + b _021F5514 ; case 14 + b _021F553C ; case 15 + b _021F556C ; case 16 + b _021F5594 ; case 17 + b _021F55C4 ; case 18 + b _021F57EC ; case 19 + b _021F55EC ; case 20 + b _021F5614 ; case 21 + b _021F563C ; case 22 + b _021F566C ; case 23 + b _021F569C ; case 24 + b _021F56CC ; case 25 + b _021F56FC ; case 26 + b _021F572C ; case 27 + b _021F575C ; case 28 + b _021F578C ; case 29 + b _021F57BC ; case 30 +_021F5170: + ldrsb r1, [r5] + cmp r1, #0 + bne _021F5190 + ldr r1, _021F5810 ; =0x0220E264 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F5190: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x1f + bl FUN_021FB3DC + add r1, sp, #0 + add r0, r4, #0x110 + mov r2, #0x1f + bl FUN_021FB3DC + ldr r1, _021F5814 ; =0x0220E274 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F51D0: + ldrsb r1, [r5] + cmp r1, #0 + bne _021F51F0 + ldr r1, _021F5810 ; =0x0220E264 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F51F0: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x15 + bl FUN_021FB3DC + ldr r0, _021F5818 ; =0x0000012F + add r1, sp, #0 + add r0, r4, r0 + mov r2, #0x15 + bl FUN_021FB3DC + ldr r1, _021F581C ; =0x0220E27C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5234: + ldrsb r1, [r5] + cmp r1, #0 + bne _021F5254 + ldr r1, _021F5810 ; =0x0220E264 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F5254: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x33 + bl FUN_021FB3DC + add r0, sp, #0 + bl FUN_021F01C4 + add r1, sp, #0 + add r0, r4, #0x144 + mov r2, #0x33 + bl FUN_021FB3DC + ldr r1, _021F5820 ; =0x0220E28C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F529C: + ldrsb r1, [r5] + cmp r1, #0 + bne _021F52BC + ldr r1, _021F5810 ; =0x0220E264 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F52BC: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x1f + bl FUN_021FB3DC + ldr r0, _021F5824 ; =0x00000177 + add r1, sp, #0 + add r0, r4, r0 + mov r2, #0x1f + bl FUN_021FB3DC + ldr r1, _021F5828 ; =0x0220E294 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5300: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x1f + bl FUN_021FB3DC + ldr r1, _021F582C ; =0x0220E2A0 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5330: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x1f + bl FUN_021FB3DC + ldr r1, _021F5830 ; =0x0220E2AC + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5360: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x4c + bl FUN_021FB3DC + ldr r1, _021F5834 ; =0x0220E2B8 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5390: + add r0, sp, #0 + mov r1, r5 + mov r2, #0xb + bl FUN_021FB3DC + ldr r1, _021F5838 ; =0x0220E2C4 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F53C0: + mov r0, r5 + bl strlen + cmp r0, #2 + beq _021F53E8 + ldr r1, _021F583C ; =0x0220E2D0 + mov r0, r6 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F53E8: + add r0, sp, #0 + mov r1, r5 + mov r2, #3 + bl FUN_021FB3DC + ldr r1, _021F5840 ; =0x0220E2E8 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5418: + ldrsb r1, [r5] + cmp r1, #0 + blt _021F5434 + cmp r1, #0x80 + bge _021F5434 + ldr r0, _021F5844 ; =0x0210428C + ldrb r1, [r0, r1] +_021F5434: + mov r0, r1, lsl #0x18 + mov r0, r0, asr #0x18 + cmp r0, #0x4d + bne _021F5460 + ldr r0, _021F5848 ; =0x0220E2F8 + add r2, sp, #0 + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r2] + strb r0, [r2, #1] + b _021F549C +_021F5460: + cmp r0, #0x46 + bne _021F5484 + ldr r0, _021F584C ; =0x0220E2FC + add r2, sp, #0 + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r2] + strb r0, [r2, #1] + b _021F549C +_021F5484: + ldr r0, _021F5850 ; =0x0220E300 + add r2, sp, #0 + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r2] + strb r0, [r2, #1] +_021F549C: + ldr r1, _021F5854 ; =0x0220E304 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F54BC: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5858 ; =0x0220E30C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F54EC: + mov r0, r5 + bl atol + mov r2, r0 + ldr r1, _021F585C ; =0x0000070D + mov r0, r6 + bl FUN_021F58A0 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5514: + mov r0, r5 + bl atol + mov r2, r0 + ldr r1, _021F5860 ; =0x0000070E + mov r0, r6 + bl FUN_021F58A0 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F553C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5864 ; =0x0220E318 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F556C: + mov r0, r5 + bl atol + mov r2, r0 + mov r0, r6 + mov r1, #0x710 + bl FUN_021F58A0 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5594: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5868 ; =0x0220E32C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F55C4: + mov r0, r5 + bl atol + mov r2, r0 + ldr r1, _021F586C ; =0x00000712 + mov r0, r6 + bl FUN_021F58A0 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F55EC: + mov r0, r5 + bl atol + mov r2, r0 + ldr r1, _021F5870 ; =0x00000714 + mov r0, r6 + bl FUN_021F58A0 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F5614: + mov r0, r5 + bl atol + mov r2, r0 + ldr r1, _021F5874 ; =0x00000715 + mov r0, r6 + bl FUN_021F58A0 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F563C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5878 ; =0x0220E340 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F566C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x33 + bl FUN_021FB3DC + ldr r1, _021F587C ; =0x0220E34C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F569C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5880 ; =0x0220E354 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F56CC: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5884 ; =0x0220E35C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F56FC: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5888 ; =0x0220E364 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F572C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F588C ; =0x0220E36C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F575C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5890 ; =0x0220E374 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F578C: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5894 ; =0x0220E37C + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F57BC: + add r0, sp, #0 + mov r1, r5 + mov r2, #0x100 + bl FUN_021FB3DC + ldr r1, _021F5898 ; =0x0220E384 + add r2, sp, #0 + mov r0, r6 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5804 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} +_021F57EC: + ldr r1, _021F589C ; =0x0220E248 + mov r0, r6 + bl FUN_021FAEEC + add sp, sp, #0x100 + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_021F5804: + mov r0, #0 + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F5810: .word 0x0220E264 +_021F5814: .word 0x0220E274 +_021F5818: .word 0x0000012F +_021F581C: .word 0x0220E27C +_021F5820: .word 0x0220E28C +_021F5824: .word 0x00000177 +_021F5828: .word 0x0220E294 +_021F582C: .word 0x0220E2A0 +_021F5830: .word 0x0220E2AC +_021F5834: .word 0x0220E2B8 +_021F5838: .word 0x0220E2C4 +_021F583C: .word 0x0220E2D0 +_021F5840: .word 0x0220E2E8 +_021F5844: .word 0x0210428C +_021F5848: .word 0x0220E2F8 +_021F584C: .word 0x0220E2FC +_021F5850: .word 0x0220E300 +_021F5854: .word 0x0220E304 +_021F5858: .word 0x0220E30C +_021F585C: .word 0x0000070D +_021F5860: .word 0x0000070E +_021F5864: .word 0x0220E318 +_021F5868: .word 0x0220E32C +_021F586C: .word 0x00000712 +_021F5870: .word 0x00000714 +_021F5874: .word 0x00000715 +_021F5878: .word 0x0220E340 +_021F587C: .word 0x0220E34C +_021F5880: .word 0x0220E354 +_021F5884: .word 0x0220E35C +_021F5888: .word 0x0220E364 +_021F588C: .word 0x0220E36C +_021F5890: .word 0x0220E374 +_021F5894: .word 0x0220E37C +_021F5898: .word 0x0220E384 +_021F589C: .word 0x0220E248 + + arm_func_start FUN_021F58A0 +FUN_021F58A0: ; 0x021F58A0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r3, _021F5D08 ; =0x00000706 + mov r4, r0 + sub r1, r1, r3 + cmp r1, #0x18 + addls pc, pc, r1, lsl #2 + b _021F5CE4 +_021F58C0: ; jump table + b _021F59F8 ; case 0 + b _021F5CE4 ; case 1 + b _021F5924 ; case 2 + b _021F5CE4 ; case 3 + b _021F5CE4 ; case 4 + b _021F596C ; case 5 + b _021F5A24 ; case 6 + b _021F5A50 ; case 7 + b _021F5A7C ; case 8 + b _021F5CE4 ; case 9 + b _021F5AB4 ; case 10 + b _021F5CE4 ; case 11 + b _021F5AEC ; case 12 + b _021F5B24 ; case 13 + b _021F5B50 ; case 14 + b _021F5B7C ; case 15 + b _021F5CE4 ; case 16 + b _021F5CE4 ; case 17 + b _021F5BB0 ; case 18 + b _021F5BDC ; case 19 + b _021F5C08 ; case 20 + b _021F5C34 ; case 21 + b _021F5C60 ; case 22 + b _021F5C8C ; case 23 + b _021F5CB8 ; case 24 +_021F5924: + cmp r2, #0 + bge _021F5940 + ldr r1, _021F5D0C ; =0x0220E38C + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F5940: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D14 ; =0x0220E2C4 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F596C: + cmp r2, #0x500 + beq _021F5990 + ldr r1, _021F5D18 ; =0x00000501 + cmp r2, r1 + beq _021F59AC + ldr r1, _021F5D1C ; =0x00000502 + cmp r2, r1 + beq _021F59C8 + b _021F59E4 +_021F5990: + ldr r1, _021F5D20 ; =0x0220E304 + ldr r2, _021F5D24 ; =0x0220E2F8 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F59AC: + ldr r1, _021F5D20 ; =0x0220E304 + ldr r2, _021F5D28 ; =0x0220E2FC + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F59C8: + ldr r1, _021F5D20 ; =0x0220E304 + ldr r2, _021F5D2C ; =0x0220E300 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F59E4: + ldr r1, _021F5D30 ; =0x0220E3A0 + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F59F8: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D34 ; =0x0220E30C + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5A24: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D38 ; =0x0220E3B0 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5A50: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D3C ; =0x0220E3C0 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5A7C: + mov r0, r2, asr #3 + add r2, r2, r0, lsr #28 + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + mov r2, r2, asr #4 + bl sprintf + ldr r1, _021F5D40 ; =0x0220E3CC + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5AB4: + mov r0, r2, asr #1 + add r2, r2, r0, lsr #30 + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + mov r2, r2, asr #2 + bl sprintf + ldr r1, _021F5D44 ; =0x0220E3D8 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5AEC: + mov r0, r2, asr #1 + add r2, r2, r0, lsr #30 + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + mov r2, r2, asr #2 + bl sprintf + ldr r1, _021F5D48 ; =0x0220E3E8 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5B24: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D4C ; =0x0220E3F8 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5B50: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D50 ; =0x0220E408 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5B7C: + ldr r1, _021F5D10 ; =0x0220E244 + cmp r2, #0 + movne r2, #1 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D54 ; =0x0220E41C + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5D78 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5BB0: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D58 ; =0x0220E354 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5BDC: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D5C ; =0x0220E35C + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5C08: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D60 ; =0x0220E364 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5C34: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D64 ; =0x0220E36C + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5C60: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D68 ; =0x0220E374 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5C8C: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D6C ; =0x0220E37C + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5CB8: + ldr r1, _021F5D10 ; =0x0220E244 + add r0, sp, #0 + bl sprintf + ldr r1, _021F5D70 ; =0x0220E384 + add r2, sp, #0 + mov r0, r4 + bl FUN_021F5DB8 + cmp r0, #0 + beq _021F5CFC + add sp, sp, #0x10 + ldmia sp!, {r4, pc} +_021F5CE4: + ldr r1, _021F5D74 ; =0x0220E248 + mov r0, r4 + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #2 + ldmia sp!, {r4, pc} +_021F5CFC: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021F5D08: .word 0x00000706 +_021F5D0C: .word 0x0220E38C +_021F5D10: .word 0x0220E244 +_021F5D14: .word 0x0220E2C4 +_021F5D18: .word 0x00000501 +_021F5D1C: .word 0x00000502 +_021F5D20: .word 0x0220E304 +_021F5D24: .word 0x0220E2F8 +_021F5D28: .word 0x0220E2FC +_021F5D2C: .word 0x0220E300 +_021F5D30: .word 0x0220E3A0 +_021F5D34: .word 0x0220E30C +_021F5D38: .word 0x0220E3B0 +_021F5D3C: .word 0x0220E3C0 +_021F5D40: .word 0x0220E3CC +_021F5D44: .word 0x0220E3D8 +_021F5D48: .word 0x0220E3E8 +_021F5D4C: .word 0x0220E3F8 +_021F5D50: .word 0x0220E408 +_021F5D54: .word 0x0220E41C +_021F5D58: .word 0x0220E354 +_021F5D5C: .word 0x0220E35C +_021F5D60: .word 0x0220E364 +_021F5D64: .word 0x0220E36C +_021F5D68: .word 0x0220E374 +_021F5D6C: .word 0x0220E37C +_021F5D70: .word 0x0220E384 +_021F5D74: .word 0x0220E248 + + arm_func_start FUN_021F5D78 +FUN_021F5D78: ; 0x021F5D78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + mov r5, r2 + mov r2, r1 + add r1, r4, #0x450 + bl FUN_021F2F9C + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r2, r5 + add r1, r4, #0x450 + bl FUN_021F2F9C + cmp r0, #0 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F5DB8 +FUN_021F5DB8: ; 0x021F5DB8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + mov r5, r2 + mov r2, r1 + add r1, r4, #0x440 + bl FUN_021F2F9C + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r2, r5 + add r1, r4, #0x440 + bl FUN_021F2F9C + cmp r0, #0 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F5DF8 +FUN_021F5DF8: ; 0x021F5DF8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6] + mov r5, r1 + ldr r2, [r4, #0x448] + cmp r2, #0 + ble _021F5E54 + ldr r2, _021F5EB0 ; =0x0220E42C + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r6 + mov r1, r5 + bl FUN_021F2F64 + ldr r2, [r4, #0x440] + mov r0, r6 + mov r1, r5 + bl FUN_021F2F9C + ldr r2, _021F5EB4 ; =0x0220E23C + mov r0, r6 + mov r1, r5 + bl FUN_021F2F9C + mov r0, #0 + str r0, [r4, #0x448] +_021F5E54: + ldr r0, [r4, #0x458] + cmp r0, #0 + ble _021F5EA8 + ldr r2, _021F5EB8 ; =0x0220E444 + mov r0, r6 + mov r1, r5 + bl FUN_021F2F9C + ldr r2, [r4, #0x198] + mov r0, r6 + mov r1, r5 + bl FUN_021F2F64 + ldr r2, [r4, #0x450] + mov r0, r6 + mov r1, r5 + bl FUN_021F2F9C + ldr r2, _021F5EB4 ; =0x0220E23C + mov r0, r6 + mov r1, r5 + bl FUN_021F2F9C + mov r0, #0 + str r0, [r4, #0x458] +_021F5EA8: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F5EB0: .word 0x0220E42C +_021F5EB4: .word 0x0220E23C +_021F5EB8: .word 0x0220E444 + + arm_func_start FUN_021F5EBC +FUN_021F5EBC: ; 0x021F5EBC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x26c + mov r4, r2 + mov sl, r0 + mov fp, r1 + mov r1, r4 + mov r2, #1 + ldr r8, [sl] + bl FUN_021FB2F8 + cmp r0, #0 + addne sp, sp, #0x26c + movne r0, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F6648 ; =0x0220E458 + mov r0, r4 + mov r2, #4 + bl strncmp + cmp r0, #0 + beq _021F5F34 + ldr r2, _021F664C ; =0x0220E460 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x26c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F5F34: + ldr r1, _021F6650 ; =0x0220E228 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F5F7C + ldr r2, _021F664C ; =0x0220E460 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x26c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F5F7C: + add r0, sp, #0x14 + bl atol + mov sb, r0 + cmp sb, #0 + bgt _021F5FA4 + ldr r0, _021F6654 ; =0x0220E490 + ldr r1, _021F6658 ; =0x0220E4A0 + ldr r3, _021F665C ; =0x0000015A + mov r2, #0 + bl __msl_assertion_failed +_021F5FA4: + add r2, sp, #8 + mov r0, sl + mov r1, sb + bl FUN_021F85E8 + mov r0, #0 + add r6, sp, #0x12c + mov r1, r0 + mov r2, r0 + mov r3, r0 + mov r5, #7 +_021F5FCC: + stmia r6!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _021F5FCC + stmia r6!, {r0, r1, r2, r3} + add r3, sp, #0x73 + add r1, sp, #0xbb + add r2, sp, #0x54 + add r5, sp, #0x88 + add r0, sp, #0xda + str r3, [sp, #0x130] + add r3, sp, #0x21c + str r1, [sp, #0x138] + str r5, [sp, #0x134] + add r5, sp, #0xf9 + str r0, [sp, #0x13c] + str r3, [sp, #0x140] + ldr r1, _021F6660 ; =0x0220E274 + mov r0, r4 + mov r3, #0x1f + str r2, [sp, #0x12c] + str r5, [sp, #0x1f4] + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x12c] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x130] + ldr r1, _021F6664 ; =0x0220E27C + mov r0, r4 + mov r3, #0x15 + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x130] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x134] + ldr r1, _021F6668 ; =0x0220E28C + mov r0, r4 + mov r3, #0x33 + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x134] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x138] + ldr r1, _021F666C ; =0x0220E2A0 + mov r0, r4 + mov r3, #0x1f + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x138] + moveq r1, #0 + streqb r1, [r0] + ldr r2, [sp, #0x13c] + ldr r1, _021F6670 ; =0x0220E2AC + mov r0, r4 + mov r3, #0x1f + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x13c] + moveq r1, #0 + streqb r1, [r0] + ldr r1, _021F6674 ; =0x0220E30C + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + mvneq r0, #0 + streq r0, [sp, #0x144] + beq _021F60F8 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x144] +_021F60F8: + ldr r2, [sp, #0x140] + ldr r1, _021F6678 ; =0x0220E2B8 + mov r0, r4 + mov r3, #0x4c + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x140] + moveq r1, #0 + streqb r1, [r0] + ldr r1, _021F667C ; =0x0220E2C4 + add r2, sp, #0x148 + mov r0, r4 + mov r3, #0xb + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + add r2, sp, #0x100 + streqb r0, [sp, #0x148] + ldr r1, _021F6680 ; =0x0220E2E8 + add r2, r2, #0x53 + mov r0, r4 + mov r3, #3 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x153] + ldr r1, _021F6684 ; =0x0220E4AC + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x158] + beq _021F6194 + add r0, sp, #0x14 + bl atod + bl _d2f + str r0, [sp, #0x158] +_021F6194: + ldr r1, _021F6688 ; =0x0220E4B4 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x15c] + beq _021F61C8 + add r0, sp, #0x14 + bl atod + bl _d2f + str r0, [sp, #0x15c] +_021F61C8: + ldr r1, _021F668C ; =0x0220E4BC + add r2, sp, #0x160 + mov r0, r4 + mov r3, #0x80 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streqb r0, [sp, #0x160] + ldr r1, _021F6690 ; =0x0220E258 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x1e0] + streq r0, [sp, #0x1e4] + streq r0, [sp, #0x1e8] + beq _021F6244 + add r0, sp, #0x14 + bl atol + add r5, sp, #0x1e8 + mov r1, r0 + add r2, sp, #0x1e0 + add r3, sp, #0x1e4 + mov r0, sl + str r5, [sp] + bl FUN_021F68D8 + cmp r0, #0 + addne sp, sp, #0x26c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F6244: + ldr r1, _021F6694 ; =0x0220E304 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, _021F6698 ; =0x00000502 + streq r0, [sp, #0x1ec] + beq _021F6290 + ldrsb r0, [sp, #0x14] + cmp r0, #0x30 + moveq r0, #0x500 + streq r0, [sp, #0x1ec] + beq _021F6290 + cmp r0, #0x31 + ldreq r0, _021F669C ; =0x00000501 + streq r0, [sp, #0x1ec] + ldrne r0, _021F6698 ; =0x00000502 + strne r0, [sp, #0x1ec] +_021F6290: + ldr r1, _021F66A0 ; =0x0220E4C4 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + mvneq r0, #0 + streq r0, [sp, #0x1f0] + beq _021F62C0 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x1f0] +_021F62C0: + ldr r2, [sp, #0x1f4] + ldr r1, _021F66A4 ; =0x0220E34C + mov r0, r4 + mov r3, #0x33 + bl FUN_021FB1F0 + cmp r0, #0 + ldreq r0, [sp, #0x1f4] + moveq r1, #0 + streqb r1, [r0] + ldr r1, _021F66A8 ; =0x0220E354 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x1f8] + beq _021F6314 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x1f8] +_021F6314: + ldr r1, _021F66AC ; =0x0220E35C + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x1fc] + beq _021F6344 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x1fc] +_021F6344: + ldr r1, _021F66B0 ; =0x0220E364 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x200] + beq _021F6374 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x200] +_021F6374: + ldr r1, _021F66B4 ; =0x0220E36C + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x204] + beq _021F63A4 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x204] +_021F63A4: + ldr r1, _021F66B8 ; =0x0220E374 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x208] + beq _021F63D4 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x208] +_021F63D4: + ldr r1, _021F66BC ; =0x0220E37C + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x20c] + beq _021F6404 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x20c] +_021F6404: + ldr r1, _021F66C0 ; =0x0220E384 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x210] + beq _021F6434 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x210] +_021F6434: + ldr r1, _021F66C4 ; =0x0220E4CC + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x214] + beq _021F6464 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x214] +_021F6464: + ldr r1, _021F66C8 ; =0x0220E4D4 + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp, #0x218] + beq _021F6494 + add r0, sp, #0x14 + bl atol + str r0, [sp, #0x218] +_021F6494: + ldr r1, _021F66CC ; =0x0220E4DC + add r2, sp, #0x14 + mov r0, r4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F64DC + ldr r2, _021F664C ; =0x0220E460 + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x26c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F64DC: + ldr r7, [r8, #0x434] + ldr r6, [r8, #0x100] + cmp r7, #0 + beq _021F653C + mov r5, #0x66 + mov r4, #1 +_021F64F4: + ldr r0, [r7, #0xc] + cmp r0, sb + bne _021F6530 + ldr r0, [r7] + cmp r0, #0x65 + bne _021F6530 + ldr r0, [sp, #8] + cmp r0, #0 + bne _021F6528 + mov r0, sl + mov r1, sb + bl FUN_021F8624 + str r0, [sp, #8] +_021F6528: + mov r6, r4 + str r5, [r7] +_021F6530: + ldr r7, [r7, #0x3c] + cmp r7, #0 + bne _021F64F4 +_021F653C: + ldr r0, [sp, #8] + cmp r0, #0 + bne _021F6564 + ldr r0, [r8, #0x100] + cmp r0, #0 + beq _021F6564 + mov r0, sl + mov r1, sb + bl FUN_021F8624 + str r0, [sp, #8] +_021F6564: + cmp r6, #0 + beq _021F6594 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + bl FUN_021DD82C + ldr r1, [sp, #8] + mov r2, #0 + add r0, sp, #0x14 + str r2, [r1, #0x18] + bl FUN_021F0208 + ldr r1, [sp, #8] + str r0, [r1, #0x18] +_021F6594: + ldr r0, [r8, #0x100] + cmp r0, #0 + beq _021F65B0 + ldr r1, [sp, #8] + add r2, sp, #0x12c + mov r0, sl + bl FUN_021F4D88 +_021F65B0: + ldr r1, [fp, #0xc] + ldr r0, [fp, #0x10] + cmp r1, #0 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + beq _021F6630 + mov r0, #0x204 + bl FUN_021DD860 + movs r4, r0 + bne _021F65F0 + ldr r1, _021F66D0 ; =0x0220E200 + mov r0, sl + bl FUN_021FAEEC + add sp, sp, #0x26c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F65F0: + add r0, sp, #0x12c + mov r1, r4 + bl FUN_021F66D4 + mov r0, #0 + str r0, [r4] + str sb, [r4, #4] + str fp, [sp] + str r0, [sp, #4] + add r1, sp, #0xc + mov r0, sl + mov r3, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + addne sp, sp, #0x26c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F6630: + mov r0, sl + mov r1, fp + bl FUN_021F6C84 + mov r0, #0 + add sp, sp, #0x26c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F6648: .word 0x0220E458 +_021F664C: .word 0x0220E460 +_021F6650: .word 0x0220E228 +_021F6654: .word 0x0220E490 +_021F6658: .word 0x0220E4A0 +_021F665C: .word 0x0000015A +_021F6660: .word 0x0220E274 +_021F6664: .word 0x0220E27C +_021F6668: .word 0x0220E28C +_021F666C: .word 0x0220E2A0 +_021F6670: .word 0x0220E2AC +_021F6674: .word 0x0220E30C +_021F6678: .word 0x0220E2B8 +_021F667C: .word 0x0220E2C4 +_021F6680: .word 0x0220E2E8 +_021F6684: .word 0x0220E4AC +_021F6688: .word 0x0220E4B4 +_021F668C: .word 0x0220E4BC +_021F6690: .word 0x0220E258 +_021F6694: .word 0x0220E304 +_021F6698: .word 0x00000502 +_021F669C: .word 0x00000501 +_021F66A0: .word 0x0220E4C4 +_021F66A4: .word 0x0220E34C +_021F66A8: .word 0x0220E354 +_021F66AC: .word 0x0220E35C +_021F66B0: .word 0x0220E364 +_021F66B4: .word 0x0220E36C +_021F66B8: .word 0x0220E374 +_021F66BC: .word 0x0220E37C +_021F66C0: .word 0x0220E384 +_021F66C4: .word 0x0220E4CC +_021F66C8: .word 0x0220E4D4 +_021F66CC: .word 0x0220E4DC +_021F66D0: .word 0x0220E200 + + arm_func_start FUN_021F66D4 +FUN_021F66D4: ; 0x021F66D4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + ldr r1, [r5] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #8] + beq _021F6704 + add r0, r4, #8 + mov r2, #0x1f + bl FUN_021FB3DC +_021F6704: + ldr r1, [r5, #4] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x27] + beq _021F6724 + add r0, r4, #0x27 + mov r2, #0x15 + bl FUN_021FB3DC +_021F6724: + ldr r1, [r5, #8] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x3c] + beq _021F6744 + add r0, r4, #0x3c + mov r2, #0x33 + bl FUN_021FB3DC +_021F6744: + ldr r1, [r5, #0xc] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x6f] + beq _021F6764 + add r0, r4, #0x6f + mov r2, #0x1f + bl FUN_021FB3DC +_021F6764: + ldr r1, [r5, #0x10] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x8e] + beq _021F6784 + add r0, r4, #0x8e + mov r2, #0x1f + bl FUN_021FB3DC +_021F6784: + ldr r1, [r5, #0x14] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0xad] + beq _021F67A4 + add r0, r4, #0xad + mov r2, #0x4c + bl FUN_021FB3DC +_021F67A4: + ldr r3, [r5, #0x18] + add r0, r4, #0x100 + add r1, r5, #0x1c + mov r2, #0xb + str r3, [r4, #0xfc] + bl FUN_021FB3DC + ldr r0, _021F68D4 ; =0x0000010B + add r1, r5, #0x27 + add r0, r4, r0 + mov r2, #3 + bl FUN_021FB3DC + ldr r0, [r5, #0x2c] + adds r1, r5, #0x34 + str r0, [r4, #0x110] + ldr r0, [r5, #0x30] + str r0, [r4, #0x114] + moveq r0, #0 + streqb r0, [r4, #0x118] + beq _021F67FC + add r0, r4, #0x118 + mov r2, #0x80 + bl FUN_021FB3DC +_021F67FC: + ldr r0, [r5, #0xb4] + str r0, [r4, #0x198] + ldr r0, [r5, #0xb8] + str r0, [r4, #0x19c] + ldr r0, [r5, #0xbc] + str r0, [r4, #0x1a0] + ldr r0, [r5, #0xc0] + str r0, [r4, #0x1a4] + ldr r0, [r5, #0xc4] + str r0, [r4, #0x1a8] + ldr r1, [r5, #0xc8] + cmp r1, #0 + moveq r0, #0 + streqb r0, [r4, #0x1ac] + beq _021F6844 + add r0, r4, #0x1ac + mov r2, #0x33 + bl FUN_021FB3DC +_021F6844: + ldr r0, [r5, #0x18] + str r0, [r4, #0xfc] + ldr r0, [r5, #0x2c] + str r0, [r4, #0x110] + ldr r0, [r5, #0x30] + str r0, [r4, #0x114] + ldr r0, [r5, #0xb4] + str r0, [r4, #0x198] + ldr r0, [r5, #0xb8] + str r0, [r4, #0x19c] + ldr r0, [r5, #0xbc] + str r0, [r4, #0x1a0] + ldr r0, [r5, #0xc0] + str r0, [r4, #0x1a4] + ldr r0, [r5, #0xc4] + str r0, [r4, #0x1a8] + ldr r0, [r5, #0xcc] + str r0, [r4, #0x1e0] + ldr r0, [r5, #0xd0] + str r0, [r4, #0x1e4] + ldr r0, [r5, #0xd4] + str r0, [r4, #0x1e8] + ldr r0, [r5, #0xd8] + str r0, [r4, #0x1ec] + ldr r0, [r5, #0xdc] + str r0, [r4, #0x1f0] + ldr r0, [r5, #0xe0] + str r0, [r4, #0x1f4] + ldr r0, [r5, #0xe4] + str r0, [r4, #0x1f8] + ldr r0, [r5, #0xe8] + str r0, [r4, #0x1fc] + ldr r0, [r5, #0xec] + str r0, [r4, #0x200] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F68D4: .word 0x0000010B + + arm_func_start FUN_021F68D8 +FUN_021F68D8: ; 0x021F68D8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr ip, _021F6978 ; =0x0000FFFF + mov r4, r1, asr #0x18 + mov lr, r1, asr #0x10 + and r7, r4, #0xff + mov r4, r0 + and r6, lr, #0xff + and r5, r1, ip + mov sb, r2 + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r8, r3 + bl FUN_021F6988 + cmp r0, #0 + bne _021F6930 + ldr r0, _021F697C ; =0x0220E4E4 + ldr r1, _021F6980 ; =0x0220E4A0 + mov r2, #0 + mov r3, #0xb7 + bl __msl_assertion_failed +_021F6930: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_021F6988 + cmp r0, #0 + strne r7, [sb] + ldrne r0, [sp, #0x20] + strne r6, [r8] + strne r5, [r0] + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r1, _021F6984 ; =0x0220E4FC + mov r0, r4 + bl FUN_021FAEEC + mov r0, #2 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021F6978: .word 0x0000FFFF +_021F697C: .word 0x0220E4E4 +_021F6980: .word 0x0220E4A0 +_021F6984: .word 0x0220E4FC + + arm_func_start FUN_021F6988 +FUN_021F6988: ; 0x021F6988 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + cmp r0, #0 + bne _021F69B0 + cmp r1, #0 + bne _021F69B0 + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} +_021F69B0: + cmp r0, #0 + blt _021F69C8 + cmp r1, #0 + blt _021F69C8 + cmp r2, #0 + bge _021F69D4 +_021F69C8: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F69D4: + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _021F6ACC +_021F69E0: ; jump table + b _021F6A14 ; case 0 + b _021F6A28 ; case 1 + b _021F6A50 ; case 2 + b _021F6A28 ; case 3 + b _021F6A3C ; case 4 + b _021F6A28 ; case 5 + b _021F6A3C ; case 6 + b _021F6A28 ; case 7 + b _021F6A28 ; case 8 + b _021F6A3C ; case 9 + b _021F6A28 ; case 10 + b _021F6A3C ; case 11 + b _021F6A28 ; case 12 +_021F6A14: + cmp r0, #0 + beq _021F6AD8 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F6A28: + cmp r0, #0x1f + ble _021F6AD8 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F6A3C: + cmp r0, #0x1e + ble _021F6AD8 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F6A50: + mov r4, r2, lsr #0x1f + rsb r3, r4, r2, lsl #30 + adds r3, r4, r3, ror #30 + bne _021F6A80 + ldr ip, _021F6B3C ; =0x51EB851F + ldr lr, _021F6B40 ; =0x00000064 + smull r3, r5, ip, r2 + mov r5, r5, asr #5 + add r5, r4, r5 + smull r3, ip, lr, r5 + subs r5, r2, r3 + bne _021F6AA4 +_021F6A80: + ldr lr, _021F6B3C ; =0x51EB851F + mov r3, r2, lsr #0x1f + smull ip, r4, lr, r2 + mov r4, r4, asr #7 + ldr lr, _021F6B44 ; =0x00000190 + add r4, r3, r4 + smull r3, ip, lr, r4 + subs r4, r2, r3 + bne _021F6AB8 +_021F6AA4: + cmp r0, #0x1d + ble _021F6AD8 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F6AB8: + cmp r0, #0x1c + ble _021F6AD8 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F6ACC: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021F6AD8: + ldr r3, _021F6B48 ; =0x0000076C + cmp r2, r3 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, pc} + ldr r3, _021F6B4C ; =0x0000081F + cmp r2, r3 + addgt sp, sp, #4 + movgt r0, #0 + ldmgtia sp!, {r4, r5, pc} + cmp r2, r3 + bne _021F6B30 + cmp r1, #6 + addgt sp, sp, #4 + movgt r0, #0 + ldmgtia sp!, {r4, r5, pc} + cmp r1, #6 + bne _021F6B30 + cmp r0, #6 + addgt sp, sp, #4 + movgt r0, #0 + ldmgtia sp!, {r4, r5, pc} +_021F6B30: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F6B3C: .word 0x51EB851F +_021F6B40: .word 0x00000064 +_021F6B44: .word 0x00000190 +_021F6B48: .word 0x0000076C +_021F6B4C: .word 0x0000081F + + arm_func_start FUN_021F6B50 +FUN_021F6B50: ; 0x021F6B50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r1 + ldr r3, [r5] + mov r4, #0 + cmp r3, #4 + addls pc, pc, r3, lsl #2 + b _021F6BB4 +_021F6B70: ; jump table + b _021F6B84 ; case 0 + b _021F6B90 ; case 1 + b _021F6B9C ; case 2 + b _021F6BB4 ; case 3 + b _021F6BA8 ; case 4 +_021F6B84: + bl FUN_021F3934 + mov r4, r0 + b _021F6BD4 +_021F6B90: + bl FUN_021F8710 + mov r4, r0 + b _021F6BD4 +_021F6B9C: + bl FUN_021F5EBC + mov r4, r0 + b _021F6BD4 +_021F6BA8: + bl FUN_021FADE8 + mov r4, r0 + b _021F6BD4 +_021F6BB4: + ldr r1, _021F6BE8 ; =0x0220E50C + mov r2, r3 + bl FUN_021FB3D0 + ldr r0, _021F6BEC ; =0x0220E554 + ldr r1, _021F6BF0 ; =0x0220E558 + ldr r3, _021F6BF4 ; =0x00000146 + mov r2, #0 + bl __msl_assertion_failed +_021F6BD4: + cmp r4, #0 + strne r4, [r5, #0x1c] + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F6BE8: .word 0x0220E50C +_021F6BEC: .word 0x0220E554 +_021F6BF0: .word 0x0220E558 +_021F6BF4: .word 0x00000146 + + arm_func_start FUN_021F6BF8 +FUN_021F6BF8: ; 0x021F6BF8 + ldr r0, [r0] + ldr r1, [r0, #0x424] + cmp r1, #0 + beq _021F6C30 +_021F6C08: + ldr r0, [r1, #8] + cmp r0, #0 + beq _021F6C24 + ldr r0, [r1] + cmp r0, #3 + movne r0, #1 + bxne lr +_021F6C24: + ldr r1, [r1, #0x20] + cmp r1, #0 + bne _021F6C08 +_021F6C30: + mov r0, #0 + bx lr + + arm_func_start FUN_021F6C38 +FUN_021F6C38: ; 0x021F6C38 + ldr r0, [r0] + ldr r3, [r0, #0x424] + cmp r3, #0 + beq _021F6C70 +_021F6C48: + ldr r0, [r3, #0x18] + cmp r0, r2 + bne _021F6C64 + cmp r1, #0 + strne r3, [r1] + mov r0, #1 + bx lr +_021F6C64: + ldr r3, [r3, #0x20] + cmp r3, #0 + bne _021F6C48 +_021F6C70: + cmp r1, #0 + movne r0, #0 + strne r0, [r1] + mov r0, #0 + bx lr + + arm_func_start FUN_021F6C84 +FUN_021F6C84: ; 0x021F6C84 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, [r0] + mov r3, #0 + ldr r2, [ip, #0x424] + cmp r2, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_021F6CA4: + cmp r2, r1 + bne _021F6CCC + cmp r3, #0 + ldreq r2, [r2, #0x20] + streq r2, [ip, #0x424] + ldrne r2, [r1, #0x20] + strne r2, [r3, #0x20] + bl FUN_021F6CE4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021F6CCC: + mov r3, r2 + ldr r2, [r2, #0x20] + cmp r2, #0 + bne _021F6CA4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021F6CE4 +FUN_021F6CE4: ; 0x021F6CE4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r1 + ldr r1, [r5] + ldr r2, [r0] + cmp r1, #3 + bne _021F6D64 + ldr r0, [r2, #0x210] + ldr r4, [r5, #4] + sub r0, r0, #1 + str r0, [r2, #0x210] + ldr r0, [r2, #0x210] + cmp r0, #0 + bge _021F6D30 + ldr r0, _021F6D84 ; =0x0220E568 + ldr r1, _021F6D88 ; =0x0220E558 + mov r2, #0 + mov r3, #0xb6 + bl __msl_assertion_failed +_021F6D30: + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_021EFD80 + ldr r0, [r4, #4] + bl FUN_021EFD9C + ldr r0, [r4, #0x18] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #8] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #8] +_021F6D64: + ldr r0, [r5, #4] + bl FUN_021DD82C + mov r1, #0 + mov r0, r5 + str r1, [r5, #4] + bl FUN_021DD82C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F6D84: .word 0x0220E568 +_021F6D88: .word 0x0220E558 + + arm_func_start FUN_021F6D8C +FUN_021F6D8C: ; 0x021F6D8C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r0, #0x24 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [r8] + bl FUN_021DD860 + cmp r0, #0 + bne _021F6DC8 + ldr r1, _021F6E40 ; =0x0220E588 + mov r0, r8 + bl FUN_021FAEEC + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021F6DC8: + str r7, [r0] + ldr r1, [sp, #0x18] + str r6, [r0, #4] + str r1, [r0, #8] + mov r1, #0 + str r1, [r0, #0x14] + cmp r7, #0 + moveq r1, #1 + streq r1, [r0, #0x18] + beq _021F6E10 + ldr r2, [r4, #0x20c] + add r1, r2, #1 + str r1, [r4, #0x20c] + str r2, [r0, #0x18] + ldr r1, [r4, #0x20c] + cmp r1, #2 + movlt r1, #2 + strlt r1, [r4, #0x20c] +_021F6E10: + mov r3, #0 + ldr r2, [sp, #0x1c] + str r3, [r0, #0x1c] + ldr r1, [sp, #0x20] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + ldr r1, [r4, #0x424] + str r1, [r0, #0x20] + str r0, [r4, #0x424] + str r0, [r5] + mov r0, r3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F6E40: .word 0x0220E588 + + arm_func_start FUN_021F6E44 +FUN_021F6E44: ; 0x021F6E44 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + movs r7, r0 + mov r6, r1 + ldr r5, [r7] + bne _021F6E70 + ldr r0, _021F7168 ; =0x0220E598 + ldr r1, _021F716C ; =0x0220E558 + mov r2, #0 + mov r3, #0x22 + bl __msl_assertion_failed +_021F6E70: + ldr r0, [r7] + cmp r0, #0 + bne _021F6E90 + ldr r0, _021F7170 ; =0x0220E5AC + ldr r1, _021F716C ; =0x0220E558 + mov r2, #0 + mov r3, #0x23 + bl __msl_assertion_failed +_021F6E90: + cmp r6, #0 + bne _021F6EAC + ldr r0, _021F7174 ; =0x0220E5C0 + ldr r1, _021F716C ; =0x0220E558 + mov r2, #0 + mov r3, #0x24 + bl __msl_assertion_failed +_021F6EAC: + ldr r1, [r6, #0xc] + ldr r0, [r6, #0x10] + cmp r1, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + beq _021F715C + ldr r0, [r6] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _021F7148 +_021F6ED4: ; jump table + b _021F6EE8 ; case 0 + b _021F6F70 ; case 1 + b _021F6FEC ; case 2 + b _021F7058 ; case 3 + b _021F70DC ; case 4 +_021F6EE8: + mov r0, #0x20 + bl FUN_021DD860 + movs r4, r0 + bne _021F6F10 + ldr r1, _021F7178 ; =0x0220E588 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F6F10: + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r1, [r6, #0x1c] + ldr r0, _021F717C ; =0x00000201 + str r1, [r4] + ldr r1, [r5, #0x418] + mov r3, r4 + cmp r1, r0 + ldreq r1, [r5, #0x1a0] + moveq r0, #0 + streq r1, [r4, #4] + streq r0, [r5, #0x1a0] + str r6, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, sp, #8 + mov r0, r7 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F715C + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F6F70: + mov r0, #8 + bl FUN_021DD860 + movs r3, r0 + bne _021F6F98 + ldr r1, _021F7178 ; =0x0220E588 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F6F98: + mov r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r3] + str r6, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F715C + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F6FEC: + mov r0, #0x204 + bl FUN_021DD860 + movs r4, r0 + bne _021F7014 + ldr r1, _021F7178 ; =0x0220E588 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7014: + mov r1, #0 + mov r2, #0x204 + bl Call_FillMemWithValue + ldr r1, [r6, #0x1c] + mov r0, #0 + str r1, [r4] + str r6, [sp] + str r0, [sp, #4] + add r1, sp, #8 + mov r0, r7 + mov r3, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F715C + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7058: + mov r0, #0x10 + bl FUN_021DD860 + movs r3, r0 + bne _021F7080 + ldr r1, _021F7178 ; =0x0220E588 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7080: + mov r2, r3 + mov r1, #4 + mov r0, #0 +_021F708C: + strb r0, [r2], #1 + strb r0, [r2], #1 + strb r0, [r2], #1 + strb r0, [r2], #1 + subs r1, r1, #1 + bne _021F708C + ldr r1, [r6, #0x1c] + mov r0, #0 + str r1, [r3] + str r0, [r3, #0xc] + str r6, [sp] + str r0, [sp, #4] + add r1, sp, #8 + mov r0, r7 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F715C + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F70DC: + mov r0, #4 + bl FUN_021DD860 + movs r3, r0 + bne _021F7104 + ldr r1, _021F7178 ; =0x0220E588 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7104: + mov r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + ldr r0, [r6, #0x1c] + add r1, sp, #8 + str r0, [r3] + str r6, [sp] + str r2, [sp, #4] + mov r0, r7 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F715C + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7148: + ldr r0, _021F7180 ; =0x0220E554 + ldr r1, _021F716C ; =0x0220E558 + mov r2, #0 + mov r3, #0x6b + bl __msl_assertion_failed +_021F715C: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F7168: .word 0x0220E598 +_021F716C: .word 0x0220E558 +_021F7170: .word 0x0220E5AC +_021F7174: .word 0x0220E5C0 +_021F7178: .word 0x0220E588 +_021F717C: .word 0x00000201 +_021F7180: .word 0x0220E554 + + arm_func_start FUN_021F7184 +FUN_021F7184: ; 0x021F7184 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x24 + movs r6, r1 + mov r7, r0 + mov r5, r2 + mov r4, r3 + bne _021F71B4 + ldr r0, _021F7258 ; =0x0220E5D4 + ldr r1, _021F725C ; =0x0220E5E4 + ldr r3, _021F7260 ; =0x00000389 + mov r2, #0 + bl __msl_assertion_failed +_021F71B4: + mvn r0, #0 + cmp r5, #0 + ldreq r5, _021F7264 ; =0x0220E5F0 + cmp r4, r0 + bne _021F71D4 + mov r0, r5 + bl strlen + mov r4, r0 +_021F71D4: + ldr r1, _021F7268 ; =0x0220E5F4 + add r0, sp, #0 + mov r2, r4 + bl sprintf + add r2, sp, #0 + mov r0, r7 + mov r1, r6 + bl FUN_021F2C58 + cmp r0, #0 + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl FUN_021F2C88 + cmp r0, #0 + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #0 + bl FUN_021F2D8C + cmp r0, #0 + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, #0 + bl FUN_021EFAC8 + add r0, r0, #0x12c + str r0, [r6, #0x10] + mov r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F7258: .word 0x0220E5D4 +_021F725C: .word 0x0220E5E4 +_021F7260: .word 0x00000389 +_021F7264: .word 0x0220E5F0 +_021F7268: .word 0x0220E5F4 + + arm_func_start FUN_021F726C +FUN_021F726C: ; 0x021F726C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x4c + mov sb, r0 + mov r8, r1 + mov r7, r2 + cmp r3, #0 + ldr r6, [r3, #4] + ldr r5, [r3] + ldr r4, [r3, #8] + bne _021F72A8 + ldr r0, _021F72DC ; =0x0220E604 + ldr r1, _021F72E0 ; =0x0220E5E4 + ldr r3, _021F72E4 ; =0x00000376 + mov r2, #0 + bl __msl_assertion_failed +_021F72A8: + ldr r1, _021F72E8 ; =0x0220E610 + str r6, [sp] + add r0, sp, #8 + mov r2, r7 + mov r3, r5 + str r4, [sp, #4] + bl sprintf + add r2, sp, #8 + mov r0, sb + mov r1, r8 + bl FUN_021F2C58 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021F72DC: .word 0x0220E604 +_021F72E0: .word 0x0220E5E4 +_021F72E4: .word 0x00000376 +_021F72E8: .word 0x0220E610 + + arm_func_start FUN_021F72EC +FUN_021F72EC: ; 0x021F72EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + movs r7, r1 + mov r8, r0 + mov r6, r2 + mov r5, r3 + bne _021F731C + ldr r0, _021F745C ; =0x0220E5D4 + ldr r1, _021F7460 ; =0x0220E5E4 + mov r2, #0 + mov r3, #0x340 + bl __msl_assertion_failed +_021F731C: + cmp r5, #0 + bne _021F7338 + ldr r0, _021F7464 ; =0x0220E624 + ldr r1, _021F7460 ; =0x0220E5E4 + ldr r3, _021F7468 ; =0x00000341 + mov r2, #0 + bl __msl_assertion_failed +_021F7338: + mov r0, r5 + bl strlen + add r1, sp, #0 + mov r2, #0 + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + str r2, [r1, #0xc] + str r2, [r1, #0x10] + str r2, [r1, #0x14] + mov r4, r0 + ldr r2, _021F746C ; =0x0220E634 + mov r0, r8 + str r6, [sp, #0x10] + bl FUN_021F2F9C + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #0 + mov r0, r8 + mov r2, r6 + bl FUN_021F2F64 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r2, _021F7470 ; =0x0220E638 + add r1, sp, #0 + mov r0, r8 + bl FUN_021F2F9C + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #0 + mov r0, r8 + mov r2, r4 + bl FUN_021F2F64 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r2, _021F7474 ; =0x0220E640 + add r1, sp, #0 + mov r0, r8 + bl FUN_021F2F9C + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr ip, [sp, #8] + add r1, sp, #0 + mov r0, r8 + mov r2, r5 + mov r3, r4 + str ip, [sp, #0x14] + bl FUN_021F2FCC + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #0 + mov r0, r8 + mov r2, #0 + bl FUN_021F30D4 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r7, #0x38] + add r1, sp, #0 + bl FUN_021EEFA8 + mov r0, #0 + bl FUN_021EFAC8 + add r0, r0, #0x12c + str r0, [r7, #0x10] + mov r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021F745C: .word 0x0220E5D4 +_021F7460: .word 0x0220E5E4 +_021F7464: .word 0x0220E624 +_021F7468: .word 0x00000341 +_021F746C: .word 0x0220E634 +_021F7470: .word 0x0220E638 +_021F7474: .word 0x0220E640 + + arm_func_start FUN_021F7478 +FUN_021F7478: ; 0x021F7478 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + ldr r1, [r4, #0xc] + add r2, sp, #8 + mov r5, r0 + bl FUN_021F85E8 + cmp r0, #0 + bne _021F74B4 + ldr r1, _021F7600 ; =0x0220E648 + mov r0, r5 + bl FUN_021FAEEC + add sp, sp, #0xc + mov r0, #3 + ldmia sp!, {r4, r5, pc} +_021F74B4: + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4, #8] + ldr r0, [r4, #8] + mvn r1, #0 + cmp r0, r1 + bne _021F7504 + ldr r2, _021F7604 ; =0x0220E664 + mov r0, r5 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #0 + bl FUN_021F3500 + add sp, sp, #0xc + mov r0, #3 + ldmia sp!, {r4, r5, pc} +_021F7504: + mov r1, #0 + bl FUN_021F017C + cmp r0, #0 + bne _021F7540 + ldr r2, _021F7608 ; =0x0220E68C + mov r0, r5 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #0 + bl FUN_021F3500 + add sp, sp, #0xc + mov r0, #3 + ldmia sp!, {r4, r5, pc} +_021F7540: + ldr r0, [r4, #8] + bl FUN_021F7854 + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + mov r0, #2 + ldr r3, [sp, #8] + strb r0, [sp, #1] + ldr r0, [r3, #8] + mov r2, #8 + ldr r0, [r0, #0x10] + str r0, [sp, #4] + ldr r0, [r3, #8] + ldr r0, [r0, #0x14] + strh r0, [sp, #2] + ldr r0, [r4, #8] + bl FUN_021EFCE4 + mvn r1, #0 + cmp r0, r1 + bne _021F75EC + ldr r0, [r4, #8] + bl FUN_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _021F75EC + mvn r1, #0x19 + cmp r0, r1 + beq _021F75EC + mvn r1, #0x4b + cmp r0, r1 + beq _021F75EC + ldr r2, _021F760C ; =0x0220E6C0 + mov r0, r5 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0xc + mov r0, #3 + ldmia sp!, {r4, r5, pc} +_021F75EC: + mov r0, #0x67 + str r0, [r4] + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021F7600: .word 0x0220E648 +_021F7604: .word 0x0220E664 +_021F7608: .word 0x0220E68C +_021F760C: .word 0x0220E6C0 + + arm_func_start FUN_021F7610 +FUN_021F7610: ; 0x021F7610 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r2, #0 + str r2, [sp] + mov r4, r1 + str r2, [sp, #4] + add r3, sp, #0xc + mov r1, #2 + mov r5, r0 + str r2, [sp, #8] + bl FUN_021F6D8C + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, pc} + ldr r0, [sp, #0xc] + ldr r1, [r4, #0xc] + ldr r2, [r0, #0x18] + mov r0, r5 + bl FUN_021F5018 + cmp r0, #0 + moveq r0, #0x65 + streq r0, [r4] + moveq r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021F7674 +FUN_021F7674: ; 0x021F7674 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r5, [r0] + mov r0, #0x40 + mov r7, r1 + mov r6, r2 + bl FUN_021DD860 + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, #0 + mov r2, #0x40 + bl Call_FillMemWithValue + mov r0, #0x64 + str r0, [r4] + str r6, [r4, #4] + mvn r0, #0 + str r0, [r4, #8] + mov r0, #0 + str r7, [r4, #0xc] + bl FUN_021EFAC8 + add r0, r0, #0x12c + str r0, [r4, #0x10] + ldr r3, [r5, #0x434] + ldr r2, _021F7700 ; =FUN_021F7704 + mov r0, #0x18 + mov r1, #0 + str r3, [r4, #0x3c] + bl FUN_021EF0E4 + str r0, [r4, #0x38] + mov r0, r4 + str r4, [r5, #0x434] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F7700: .word FUN_021F7704 + + arm_func_start FUN_021F7704 +FUN_021F7704: ; 0x021F7704 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F7720 +FUN_021F7720: ; 0x021F7720 + ldr r0, [r0] + ldr r0, [r0, #0x434] + cmp r0, #0 + beq _021F7754 +_021F7730: + ldr r2, [r0, #0xc] + cmp r2, r1 + bne _021F7748 + ldr r2, [r0] + cmp r2, #0x69 + bxeq lr +_021F7748: + ldr r0, [r0, #0x3c] + cmp r0, #0 + bne _021F7730 +_021F7754: + mov r0, #0 + bx lr + + arm_func_start FUN_021F775C +FUN_021F775C: ; 0x021F775C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r7, [r4] + mvn r1, #0 + ldr r0, [r7, #0x204] + cmp r0, r1 + beq _021F77E8 + bl FUN_021EFF2C + cmp r0, #0 + beq _021F77E8 + mov r1, #0 + ldr r0, [r7, #0x204] + mov r2, r1 + bl FUN_021EFC94 + mov r6, r0 + mvn r1, #0 + cmp r6, r1 + beq _021F77E8 + mov r0, r4 + mov r2, #0 + bl FUN_021F7674 + movs r5, r0 + beq _021F77E0 + mov r0, #0x68 + str r0, [r5] + mov r0, r6 + str r6, [r5, #8] + mov r1, #0 + bl FUN_021F017C + ldr r0, [r5, #8] + bl FUN_021F7854 + b _021F77E8 +_021F77E0: + mov r0, r6 + bl FUN_021EFD9C +_021F77E8: + ldr r6, [r7, #0x434] + cmp r6, #0 + beq _021F7848 + mov r5, #0 +_021F77F8: + mov r0, r4 + mov r1, r6 + ldr r7, [r6, #0x3c] + bl FUN_021F7A40 + ldr r1, [r6] + cmp r1, #0x6a + beq _021F7830 + cmp r0, #0 + bne _021F7830 + mov r0, r5 + bl FUN_021EFAC8 + ldr r1, [r6, #0x10] + cmp r0, r1 + ble _021F783C +_021F7830: + mov r0, r4 + mov r1, r6 + bl FUN_021F78CC +_021F783C: + mov r6, r7 + cmp r7, #0 + bne _021F77F8 +_021F7848: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021F7854 +FUN_021F7854: ; 0x021F7854 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #0x4000 + bl FUN_021F0130 + mov r0, r4 + mov r1, #0x8000 + bl FUN_021F0130 + mov r0, r4 + mov r1, #0x10000 + bl FUN_021F0130 + mov r0, r4 + mov r1, #0x20000 + bl FUN_021F0130 + mov r0, r4 + mov r1, #0x40000 + bl FUN_021F0130 + mov r0, r4 + mov r1, #0x4000 + bl FUN_021F00E4 + mov r0, r4 + mov r1, #0x8000 + bl FUN_021F00E4 + mov r0, r4 + mov r1, #0x10000 + bl FUN_021F00E4 + mov r0, r4 + bl FUN_021F009C + mov r0, r4 + bl FUN_021F0054 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F78CC +FUN_021F78CC: ; 0x021F78CC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + movs r4, r1 + ldr r6, [r5] + bne _021F78F4 + ldr r0, _021F79C8 ; =0x0220E5D4 + ldr r1, _021F79CC ; =0x0220E5E4 + ldr r3, _021F79D0 ; =0x00000213 + mov r2, #0 + bl __msl_assertion_failed +_021F78F4: + ldr r1, [r6, #0x434] + cmp r1, r4 + ldreq r0, [r4, #0x3c] + streq r0, [r6, #0x434] + beq _021F7958 + ldr r0, [r1, #0x3c] + cmp r0, r4 + beq _021F7950 +_021F7914: + cmp r0, #0 + bne _021F7940 + ldr r0, _021F79D4 ; =0x0220E6E8 + ldr r1, _021F79CC ; =0x0220E5E4 + ldr r3, _021F79D8 ; =0x00000225 + mov r2, #0 + bl __msl_assertion_failed + ldr r1, _021F79DC ; =0x0220E6EC + mov r0, r5 + bl FUN_021FB3D0 + ldmia sp!, {r4, r5, r6, pc} +_021F7940: + mov r1, r0 + ldr r0, [r0, #0x3c] + cmp r0, r4 + bne _021F7914 +_021F7950: + ldr r0, [r4, #0x3c] + str r0, [r1, #0x3c] +_021F7958: + ldr r0, [r4, #0x38] + bl FUN_021EF06C + cmp r0, #0 + beq _021F79B8 + mov r6, #0 +_021F796C: + ldr r0, [r4, #0x38] + mov r1, r6 + bl FUN_021EEFFC + ldr r2, [r0, #0x10] + cmp r2, #0x64 + bge _021F799C + ldr ip, [r0] + ldr r3, [r0, #0x14] + ldr r1, [r4, #0xc] + mov r0, r5 + add r3, ip, r3 + bl FUN_021F1B60 +_021F799C: + ldr r0, [r4, #0x38] + mov r1, r6 + bl FUN_021EED84 + ldr r0, [r4, #0x38] + bl FUN_021EF06C + cmp r0, #0 + bne _021F796C +_021F79B8: + mov r0, r5 + mov r1, r4 + bl FUN_021F79E0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F79C8: .word 0x0220E5D4 +_021F79CC: .word 0x0220E5E4 +_021F79D0: .word 0x00000213 +_021F79D4: .word 0x0220E6E8 +_021F79D8: .word 0x00000225 +_021F79DC: .word 0x0220E6EC + + arm_func_start FUN_021F79E0 +FUN_021F79E0: ; 0x021F79E0 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r0, [r4, #8] + mov r1, #2 + bl FUN_021EFD80 + ldr r0, [r4, #8] + bl FUN_021EFD9C + ldr r0, [r4, #0x18] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x28] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _021F7A34 + bl FUN_021EF074 + mov r0, #0 + str r0, [r4, #0x38] +_021F7A34: + mov r0, r4 + bl FUN_021DD82C + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F7A40 +FUN_021F7A40: ; 0x021F7A40 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r1, [r5] + mov r6, r0 + cmp r1, #0x64 + mov r4, #0 + bne _021F7A70 + ldr r0, _021F7AD8 ; =0x0220E710 + ldr r1, _021F7ADC ; =0x0220E5E4 + ldr r3, _021F7AE0 ; =0x000001D9 + mov r2, r4 + bl __msl_assertion_failed +_021F7A70: + ldr r0, [r5] + cmp r0, #0x69 + beq _021F7AAC + ldr r0, [r5, #4] + cmp r0, #0 + beq _021F7A9C + mov r0, r6 + mov r1, r5 + bl FUN_021F8088 + mov r4, r0 + b _021F7AAC +_021F7A9C: + mov r0, r6 + mov r1, r5 + bl FUN_021F7E3C + mov r4, r0 +_021F7AAC: + cmp r4, #0 + bne _021F7AD0 + ldr r0, [r5] + cmp r0, #0x69 + bne _021F7AD0 + mov r0, r6 + mov r1, r5 + bl FUN_021F7AE4 + mov r4, r0 +_021F7AD0: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F7AD8: .word 0x0220E710 +_021F7ADC: .word 0x0220E5E4 +_021F7AE0: .word 0x000001D9 + + arm_func_start FUN_021F7AE4 +FUN_021F7AE4: ; 0x021F7AE4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x24 + mov r6, r1 + ldr r1, [r6, #0x30] + mov r7, r0 + cmp r1, #0 + ldr r5, [r7] + beq _021F7B4C + mov r2, #1 + str r2, [sp] + ldr r1, _021F7D60 ; =0x0220E738 + add r3, sp, #0xc + str r1, [sp, #4] + ldr r1, [r6, #8] + add r2, r6, #0x28 + bl FUN_021F28AC + ldr r1, [sp, #0xc] + cmp r1, #0 + bne _021F7B38 + cmp r0, #0 + beq _021F7B4C +_021F7B38: + mov r0, #0x6a + str r0, [r6] + add sp, sp, #0x24 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7B4C: + ldr r0, [r6, #0x30] + cmp r0, #0 + bne _021F7B84 + mov r0, r7 + mov r1, r6 + bl FUN_021F7D6C + cmp r0, #0 + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6] + cmp r0, #0x6a + addeq sp, sp, #0x24 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021F7B84: + add r1, sp, #0xc + ldr r0, _021F7D60 ; =0x0220E738 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r6, #8] + add r3, sp, #8 + mov r0, r7 + add r2, r6, #0x18 + bl FUN_021F2A2C + cmp r0, #0 + movne r0, #0x6a + strne r0, [r6] + addne sp, sp, #0x24 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp, #8] + cmp r0, #0 + ble _021F7BDC + mov r0, #0 + bl FUN_021EFAC8 + add r0, r0, #0x12c + str r0, [r6, #0x10] +_021F7BDC: + add r4, sp, #0x20 + add r2, sp, #0x18 + add r3, sp, #0x1c + mov r0, r7 + add r1, r6, #0x18 + str r4, [sp] + bl FUN_021F2770 + cmp r0, #0 + addne sp, sp, #0x24 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, [sp, #0x18] + cmp r1, #0 + beq _021F7D38 + ldr r2, [sp, #0x1c] + cmp r2, #0x66 + bgt _021F7C30 + cmp r2, #0x66 + bge _021F7CF8 + cmp r2, #1 + beq _021F7C64 + b _021F7D2C +_021F7C30: + sub r0, r2, #0xc8 + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _021F7D2C +_021F7C40: ; jump table + b _021F7D10 ; case 0 + b _021F7D10 ; case 1 + b _021F7D10 ; case 2 + b _021F7D10 ; case 3 + b _021F7D10 ; case 4 + b _021F7D10 ; case 5 + b _021F7D10 ; case 6 + b _021F7D10 ; case 7 + b _021F7D10 ; case 8 +_021F7C64: + ldr r1, [r5, #0x1bc] + ldr r0, [r5, #0x1c0] + cmp r1, #0 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + beq _021F7D2C + mov r0, #0xc + bl FUN_021DD860 + movs r4, r0 + bne _021F7CA4 + ldr r1, _021F7D64 ; =0x0220E73C + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x24 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7CA4: + ldr r0, [r6, #0xc] + str r0, [r4] + ldr r0, [sp, #0x18] + bl FUN_021F0208 + str r0, [r4, #8] + mov r0, #0 + bl FUN_021EFAC8 + str r0, [r4, #4] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r1, sp, #0x10 + mov r0, r7 + mov r3, r4 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021F7D2C + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F7CF8: + ldr r1, [r6, #0xc] + ldr r3, _021F7D68 ; =0x0220E74C + mov r0, r7 + mov r2, #0x67 + bl FUN_021F1A64 + b _021F7D2C +_021F7D10: + str r1, [sp] + ldr r1, [sp, #0x20] + mov r0, r7 + str r1, [sp, #4] + ldr r3, [r6, #0x18] + mov r1, r6 + bl FUN_021FACC0 +_021F7D2C: + mov r0, r7 + add r1, r6, #0x18 + bl FUN_021F2704 +_021F7D38: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021F7BDC + ldr r0, [sp, #0xc] + cmp r0, #0 + movne r0, #0x6a + strne r0, [r6] + mov r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F7D60: .word 0x0220E738 +_021F7D64: .word 0x0220E73C +_021F7D68: .word 0x0220E74C + + arm_func_start FUN_021F7D6C +FUN_021F7D6C: ; 0x021F7D6C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r8, r1 + ldr r1, [r8, #0x30] + mov sb, r0 + cmp r1, #0 + addne sp, sp, #0xc + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r8, #0x38] + bl FUN_021EF06C + cmp r0, #0 + beq _021F7E2C + ldr r5, _021F7E38 ; =0x0220E738 + add r4, sp, #8 + mov r7, #0 +_021F7DAC: + ldr r0, [r8, #0x38] + mov r1, r7 + bl FUN_021EEFFC + mov r6, r0 + str r7, [sp] + str r5, [sp, #4] + ldr r1, [r8, #8] + mov r0, sb + mov r2, r6 + mov r3, r4 + bl FUN_021F28AC + ldr r1, [sp, #8] + cmp r1, #0 + bne _021F7DEC + cmp r0, #0 + beq _021F7E00 +_021F7DEC: + mov r0, #0x6a + str r0, [r8] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021F7E00: + ldr r1, [r6, #0xc] + ldr r0, [r6, #8] + cmp r1, r0 + bne _021F7E2C + ldr r0, [r8, #0x38] + mov r1, r7 + bl FUN_021EED84 + ldr r0, [r8, #0x38] + bl FUN_021EF06C + cmp r0, #0 + bne _021F7DAC +_021F7E2C: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021F7E38: .word 0x0220E738 + + arm_func_start FUN_021F7E3C +FUN_021F7E3C: ; 0x021F7E3C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x184 + mov r5, r1 + ldr r1, [r5] + mov r6, r0 + cmp r1, #0x68 + ldr r4, [r6] + beq _021F7E70 + ldr r0, _021F8058 ; =0x0220E750 + ldr r1, _021F805C ; =0x0220E5E4 + mov r2, #0 + mov r3, #0xc1 + bl __msl_assertion_failed +_021F7E70: + add r1, sp, #0xc + ldr r0, _021F8060 ; =0x0220E738 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r5, #8] + add r3, sp, #8 + mov r0, r6 + add r2, r5, #0x18 + bl FUN_021F2A2C + cmp r0, #0 + addne sp, sp, #0x184 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp, #0xc] + cmp r0, #0 + movne r0, #0x6a + strne r0, [r5] + addne sp, sp, #0x184 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r5, #0x18] + ldr r1, _021F8064 ; =0x0220E770 + bl strstr + cmp r0, #0 + beq _021F804C + mov r1, #0 + strb r1, [r0] + ldr r7, [r5, #0x18] + ldr r1, _021F8068 ; =0x0220E778 + mov r0, r7 + mov r2, #6 + bl strncmp + cmp r0, #0 + bne _021F8030 + ldr r1, _021F806C ; =0x0220E780 + add r2, sp, #0x10 + mov r0, r7 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0x6a + streq r0, [r5] + addeq sp, sp, #0x184 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0x10 + bl atol + mov r7, r0 + ldr r0, [r5, #0x18] + ldr r1, _021F8070 ; =0x0220E788 + add r2, sp, #0x20 + mov r3, #0x1f + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0x6a + streq r0, [r5] + addeq sp, sp, #0x184 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r5, #0x18] + ldr r1, _021F8074 ; =0x0220E790 + add r2, sp, #0x3f + mov r3, #0x21 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0x6a + streq r0, [r5] + addeq sp, sp, #0x184 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + str r7, [sp] + ldr r2, _021F8078 ; =0x00000177 + ldr r3, [r4, #0x1a0] + ldr r1, _021F807C ; =0x0220E798 + add r0, sp, #0x81 + add r2, r4, r2 + bl sprintf + add r0, sp, #0x81 + bl strlen + mov r1, r0 + add r0, sp, #0x81 + add r2, sp, #0x60 + bl FUN_021EF794 + add r0, sp, #0x3f + add r1, sp, #0x60 + bl strcmp + cmp r0, #0 + beq _021F8000 + ldr r2, _021F8080 ; =0x0220E7A0 + mov r0, r6 + add r1, r5, #0x28 + bl FUN_021F2F9C + ldr r2, _021F8064 ; =0x0220E770 + mov r0, r6 + add r1, r5, #0x28 + bl FUN_021F2F9C + mov r0, #0x6a + str r0, [r5] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F8000: + ldr r2, _021F8084 ; =0x0220E7A8 + mov r0, r6 + add r1, r5, #0x28 + bl FUN_021F2F9C + ldr r2, _021F8064 ; =0x0220E770 + mov r0, r6 + add r1, r5, #0x28 + bl FUN_021F2F9C + mov r0, #0x69 + str r0, [r5] + str r7, [r5, #0xc] + b _021F8044 +_021F8030: + mov r0, #0x6a + str r0, [r5] + add sp, sp, #0x184 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F8044: + mov r0, #0 + str r0, [r5, #0x20] +_021F804C: + mov r0, #0 + add sp, sp, #0x184 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F8058: .word 0x0220E750 +_021F805C: .word 0x0220E5E4 +_021F8060: .word 0x0220E738 +_021F8064: .word 0x0220E770 +_021F8068: .word 0x0220E778 +_021F806C: .word 0x0220E780 +_021F8070: .word 0x0220E788 +_021F8074: .word 0x0220E790 +_021F8078: .word 0x00000177 +_021F807C: .word 0x0220E798 +_021F8080: .word 0x0220E7A0 +_021F8084: .word 0x0220E7A8 + + arm_func_start FUN_021F8088 +FUN_021F8088: ; 0x021F8088 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r6, r1 + ldr r2, [r6] + mov r7, r0 + sub r2, r2, #0x65 + ldr r5, [r7] + cmp r2, #3 + addls pc, pc, r2, lsl #2 + b _021F834C +_021F80B0: ; jump table + b _021F8360 ; case 0 + b _021F80C0 ; case 1 + b _021F80D4 ; case 2 + b _021F8258 ; case 3 +_021F80C0: + bl FUN_021F7478 + cmp r0, #0 + beq _021F8360 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021F80D4: + ldr r1, [r6, #8] + add r2, sp, #8 + bl FUN_021FB0FC + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp, #8] + cmp r0, #4 + bne _021F8110 + ldr r1, _021F83B8 ; =0x0220E648 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F8110: + cmp r0, #3 + bne _021F8360 + ldr r1, [r6, #0xc] + add r2, sp, #0x14 + mov r0, r7 + mov r4, #1 + bl FUN_021F85E8 + cmp r0, #0 + bne _021F814C + ldr r1, _021F83B8 ; =0x0220E648 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F814C: + ldr r2, _021F83BC ; =0x0220E778 + mov r0, r7 + add r1, r6, #0x28 + bl FUN_021F2F9C + ldr r2, _021F83C0 ; =0x0220E780 + mov r0, r7 + add r1, r6, #0x28 + bl FUN_021F2F9C + ldr r2, [r5, #0x1a0] + mov r0, r7 + add r1, r6, #0x28 + bl FUN_021F2F64 + ldr r2, _021F83C4 ; =0x0220E788 + mov r0, r7 + add r1, r6, #0x28 + bl FUN_021F2F9C + mov r0, r7 + add r1, r6, #0x28 + add r2, r5, #0x110 + bl FUN_021F2F9C + mov r0, r7 + add r1, r6, #0x28 + ldr r2, _021F83C8 ; =0x0220E790 + bl FUN_021F2F9C + mov r0, r7 + add r1, r6, #0x28 + ldr r2, [sp, #0x14] + ldr r2, [r2, #0x18] + bl FUN_021F2F9C + mov r0, r7 + add r1, r6, #0x28 + ldr r2, _021F83CC ; =0x0220E770 + bl FUN_021F2F9C + ldr r3, [r5, #0x434] + cmp r3, #0 + beq _021F8210 + ldr r2, [r6, #0xc] + mov r0, #0 +_021F81E4: + ldr r1, [r3, #0xc] + cmp r1, r2 + bne _021F8204 + cmp r3, r6 + beq _021F8204 + ldr r1, [r3] + cmp r1, #0x67 + movle r4, r0 +_021F8204: + ldr r3, [r3, #0x3c] + cmp r3, #0 + bne _021F81E4 +_021F8210: + cmp r4, #0 + beq _021F824C + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x18] + bl FUN_021DD82C + ldr r0, [sp, #0x14] + mov r1, #0 + str r1, [r0, #0x18] + ldr r0, [sp, #0x14] + bl FUN_021F83EC + cmp r0, #0 + beq _021F824C + ldr r1, [sp, #0x14] + mov r0, r7 + bl FUN_021F85A0 +_021F824C: + mov r0, #0x68 + str r0, [r6] + b _021F8360 +_021F8258: + add r2, sp, #0x10 + str r2, [sp] + ldr r1, _021F83D0 ; =0x0220E738 + add r3, sp, #0xc + str r1, [sp, #4] + ldr r1, [r6, #8] + add r2, r6, #0x18 + bl FUN_021F2A2C + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r6, #0x18] + ldr r1, _021F83CC ; =0x0220E770 + bl strstr + cmp r0, #0 + beq _021F8360 + mov r1, #0 + strb r1, [r0] + ldr r4, [r6, #0x18] + ldr r1, _021F83D4 ; =0x0220E7A0 + mov r0, r4 + mov r2, #7 + bl strncmp + cmp r0, #0 + bne _021F8308 + ldr r0, [r6, #0x14] + add r0, r0, #1 + str r0, [r6, #0x14] + ldr r0, [r6, #0x14] + cmp r0, #1 + ble _021F82EC + ldr r1, _021F83D8 ; =0x0220E7B0 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F82EC: + mov r0, r7 + mov r1, r6 + bl FUN_021F7610 + cmp r0, #0 + beq _021F8338 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} +_021F8308: + ldr r1, _021F83DC ; =0x0220E7A8 + mov r0, r4 + mov r2, #6 + bl strncmp + cmp r0, #0 + beq _021F8338 + ldr r1, _021F83E0 ; =0x0220E7D4 + mov r0, r7 + bl FUN_021FAEEC + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_021F8338: + mov r0, #0x69 + str r0, [r6] + mov r0, #0 + str r0, [r6, #0x20] + b _021F8360 +_021F834C: + ldr r0, _021F83E4 ; =0x0220E6E8 + ldr r1, _021F83E8 ; =0x0220E5E4 + mov r2, #0 + mov r3, #0x9f + bl __msl_assertion_failed +_021F8360: + ldr r0, [r6, #0x30] + cmp r0, #0 + ble _021F83AC + mov r1, #1 + ldr r0, _021F83D0 ; =0x0220E738 + str r1, [sp] + str r0, [sp, #4] + ldr r1, [r6, #8] + add r3, sp, #0x10 + mov r0, r7 + add r2, r6, #0x28 + bl FUN_021F28AC + ldr r1, [sp, #0x10] + cmp r1, #0 + bne _021F83A4 + cmp r0, #0 + beq _021F83AC +_021F83A4: + mov r0, #0x6a + str r0, [r6] +_021F83AC: + mov r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021F83B8: .word 0x0220E648 +_021F83BC: .word 0x0220E778 +_021F83C0: .word 0x0220E780 +_021F83C4: .word 0x0220E788 +_021F83C8: .word 0x0220E790 +_021F83CC: .word 0x0220E770 +_021F83D0: .word 0x0220E738 +_021F83D4: .word 0x0220E7A0 +_021F83D8: .word 0x0220E7B0 +_021F83DC: .word 0x0220E7A8 +_021F83E0: .word 0x0220E7D4 +_021F83E4: .word 0x0220E6E8 +_021F83E8: .word 0x0220E5E4 + + arm_func_start FUN_021F83EC +FUN_021F83EC: ; 0x021F83EC + cmp r0, #0 + beq _021F8428 + ldr r1, [r0, #0xc] + cmp r1, #0 + bne _021F8428 + ldr r1, [r0, #8] + cmp r1, #0 + bne _021F8428 + ldr r1, [r0, #0x18] + cmp r1, #0 + bne _021F8428 + ldr r0, [r0, #0x10] + cmp r0, #0 + moveq r0, #1 + bxeq lr +_021F8428: + mov r0, #0 + bx lr + + arm_func_start FUN_021F8430 +FUN_021F8430: ; 0x021F8430 + stmdb sp!, {lr} + sub sp, sp, #0xc + str r1, [sp] + mov r3, #0 + ldr r1, _021F845C ; =FUN_021F8460 + add r2, sp, #0 + str r3, [sp, #4] + bl FUN_021F848C + ldr r0, [sp, #4] + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021F845C: .word FUN_021F8460 + + arm_func_start FUN_021F8460 +FUN_021F8460: ; 0x021F8460 + ldr r0, [r1, #8] + cmp r0, #0 + beq _021F8484 + ldr r3, [r2] + ldr r0, [r0] + cmp r3, r0 + streq r1, [r2, #4] + moveq r0, #0 + bxeq lr +_021F8484: + mov r0, #1 + bx lr + + arm_func_start FUN_021F848C +FUN_021F848C: ; 0x021F848C + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r3, [r0] + str r1, [sp, #4] + str r2, [sp, #8] + str r0, [sp] + ldr r0, [r3, #0x428] + ldr r1, _021F84C8 ; =FUN_021F84CC + add r2, sp, #0 + bl FUN_021EF264 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_021F84C8: .word FUN_021F84CC + + arm_func_start FUN_021F84CC +FUN_021F84CC: ; 0x021F84CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, r0 + ldr r0, [r1] + ldr r2, [r1, #8] + ldr r3, [r1, #4] + mov r1, ip + blx r3 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021F84F4 +FUN_021F84F4: ; 0x021F84F4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + str r1, [sp] + mov ip, #0 + str r2, [sp, #4] + mov r4, r3 + ldr r1, _021F853C ; =FUN_021F8540 + add r2, sp, #0 + str ip, [sp, #0xc] + str r4, [sp, #8] + bl FUN_021F848C + ldr r0, [sp, #0xc] + cmp r0, #0 + moveq r0, #0 + streq r0, [r4] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_021F853C: .word FUN_021F8540 + + arm_func_start FUN_021F8540 +FUN_021F8540: ; 0x021F8540 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + ldr r4, [r6, #0xc] + mov r5, r2 + cmp r4, #0 + beq _021F8598 + ldr r0, [r5] + ldr r1, [r4] + bl strcmp + cmp r0, #0 + bne _021F8598 + ldr r0, [r5, #4] + ldr r1, [r4, #8] + bl strcmp + cmp r0, #0 + bne _021F8598 + ldr r1, [r5, #8] + mov r0, #1 + str r6, [r1] + str r0, [r5, #0xc] + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021F8598: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021F85A0 +FUN_021F85A0: ; 0x021F85A0 + ldr r0, [r0] + ldr ip, _021F85B0 ; =FUN_021EF3F4 + ldr r0, [r0, #0x428] + bx ip + .align 2, 0 +_021F85B0: .word FUN_021EF3F4 + + arm_func_start FUN_021F85B4 +FUN_021F85B4: ; 0x021F85B4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r2, sp, #0 + ldr r4, [r0] + bl FUN_021F85E8 + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x428] + ldr r1, [sp] + bl FUN_021EF3F4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F85E8 +FUN_021F85E8: ; 0x021F85E8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + ldr r0, [r0] + mov r4, r2 + str r1, [sp] + ldr r0, [r0, #0x428] + add r1, sp, #0 + bl FUN_021EF358 + cmp r4, #0 + strne r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F8624 +FUN_021F8624: ; 0x021F8624 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + mov r5, r0 + ldr r2, [r5] + ldr r0, _021F8700 ; =0x00000428 + mov r4, r1 + cmp r4, #0 + add r6, r2, r0 + bgt _021F865C + ldr r0, _021F8704 ; =0x0220E7F4 + ldr r1, _021F8708 ; =0x0220E7FC + ldr r3, _021F870C ; =0x000002B5 + mov r2, #0 + bl __msl_assertion_failed +_021F865C: + cmp r4, #0 + addle sp, sp, #0x20 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, pc} + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + bl FUN_021F85E8 + cmp r0, #0 + ldrne r0, [sp] + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + add r1, sp, #4 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + str r0, [r1, #0xc] + str r0, [r1, #0x10] + str r0, [r1, #0x14] + str r0, [r1, #0x18] + str r4, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x1c] + str r0, [sp, #0x18] + ldr r0, [r6] + bl FUN_021EF494 + ldr r0, [r6, #4] + add r2, sp, #0 + add r3, r0, #1 + mov r0, r5 + mov r1, r4 + str r3, [r6, #4] + bl FUN_021F85E8 + cmp r0, #0 + ldrne r0, [sp] + moveq r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F8700: .word 0x00000428 +_021F8704: .word 0x0220E7F4 +_021F8708: .word 0x0220E7FC +_021F870C: .word 0x000002B5 + + arm_func_start FUN_021F8710 +FUN_021F8710: ; 0x021F8710 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + mov r6, r2 + mov r4, r1 + mov r1, r6 + mov r2, #1 + mov r5, r0 + bl FUN_021FB2F8 + cmp r0, #0 + addne sp, sp, #0x20 + movne r0, #4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021F8860 ; =0x0220E80C + mov r0, r6 + mov r2, #5 + bl strncmp + cmp r0, #0 + beq _021F8784 + ldr r2, _021F8864 ; =0x0220E814 + mov r0, r5 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x20 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F8784: + ldr r1, _021F8868 ; =0x0220E844 + add r2, sp, #0x10 + mov r0, r6 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F87CC + ldr r2, _021F8864 ; =0x0220E814 + mov r0, r5 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x20 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021F87CC: + add r0, sp, #0x10 + bl atol + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x10] + mov r6, r0 + str r2, [sp, #8] + str r1, [sp, #0xc] + cmp r2, #0 + beq _021F8848 + mov r0, #8 + bl FUN_021DD860 + movs r3, r0 + bne _021F8818 + ldr r1, _021F886C ; =0x0220E850 + mov r0, r5 + bl FUN_021FAEEC + add sp, sp, #0x20 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021F8818: + str r6, [r3, #4] + mov r0, #0 + str r0, [r3] + str r4, [sp] + str r0, [sp, #4] + add r1, sp, #8 + mov r0, r5 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} +_021F8848: + mov r0, r5 + mov r1, r4 + bl FUN_021F6C84 + mov r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021F8860: .word 0x0220E80C +_021F8864: .word 0x0220E814 +_021F8868: .word 0x0220E844 +_021F886C: .word 0x0220E850 + + arm_func_start FUN_021F8870 +FUN_021F8870: ; 0x021F8870 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r4, [r0] + mov r1, #0 + str r1, [r4, #0x430] + str r1, [r4, #0x42c] + ldr r0, _021F88C0 ; =FUN_021F88CC + ldr r2, _021F88C4 ; =FUN_021F8958 + str r0, [sp] + ldr r3, _021F88C8 ; =FUN_021F8948 + mov r0, #0x1c + mov r1, #4 + bl FUN_021EF76C + str r0, [r4, #0x428] + ldr r0, [r4, #0x428] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021F88C0: .word FUN_021F88CC +_021F88C4: .word FUN_021F8958 +_021F88C8: .word FUN_021F8948 + + arm_func_start FUN_021F88CC +FUN_021F88CC: ; 0x021F88CC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F891C + ldr r0, [r0, #8] + bl FUN_021DD82C + ldr r0, [r4, #8] + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_021DD82C + ldr r0, [r4, #8] + mov r1, #0 + str r1, [r0, #0xc] + ldr r0, [r4, #8] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #8] +_021F891C: + mov r0, r4 + bl FUN_021F4CBC + ldr r0, [r4, #0x10] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x18] + bl FUN_021DD82C + mov r0, #0 + str r0, [r4, #0x18] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021F8948 +FUN_021F8948: ; 0x021F8948 + ldr r2, [r0] + ldr r0, [r1] + sub r0, r2, r0 + bx lr + + arm_func_start FUN_021F8958 +FUN_021F8958: ; 0x021F8958 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, [r0] + bl _s32_div_f + mov r0, r1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021F8974 +FUN_021F8974: ; 0x021F8974 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + ldr sb, [sl] + mov r6, #0 + ldr r0, [sb, #0x210] + cmp r0, #0 + ble _021F8AB4 + mov r0, r0, lsl #2 + bl FUN_021DD860 + movs r8, r0 + bne _021F89BC + ldr r1, _021F8AC0 ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F89BC: + ldr r7, [sb, #0x424] + cmp r7, #0 + beq _021F8A38 + ldr fp, _021F8AC4 ; =0x0220E8B0 + mov r5, r6 + mov r4, #1 +_021F89D4: + ldr r0, [r7] + cmp r0, #3 + bne _021F8A2C + ldr r0, [r7, #0x14] + cmp r0, #5 + beq _021F8A2C + ldr r0, [r7, #4] + ldr r0, [r0, #0x13c] + cmp r0, #0 + bne _021F8A2C + ldr r0, [sb, #0x210] + cmp r6, r0 + blt _021F8A1C + ldr r1, _021F8AC8 ; =0x0220E8D0 + ldr r3, _021F8ACC ; =0x00000563 + mov r0, fp + mov r2, r5 + bl __msl_assertion_failed +_021F8A1C: + str r7, [r8, r6, lsl #2] + ldr r0, [r7, #4] + add r6, r6, #1 + str r4, [r0, #0x13c] +_021F8A2C: + ldr r7, [r7, #0x20] + cmp r7, #0 + bne _021F89D4 +_021F8A38: + cmp r6, #0 + mov r4, #0 + ble _021F8A68 +_021F8A44: + ldr r1, [r8, r4, lsl #2] + mov r0, sl + bl FUN_021F8AD0 + cmp r0, #0 + ldrne r1, [r8, r4, lsl #2] + add r4, r4, #1 + strne r0, [r1, #0x1c] + cmp r4, r6 + blt _021F8A44 +_021F8A68: + cmp r6, #0 + mov r4, #0 + ble _021F8AAC + mov r5, r4 +_021F8A78: + ldr r0, [r8, r4, lsl #2] + mov r1, r4, lsl #2 + ldr r0, [r0, #4] + str r5, [r0, #0x13c] + ldr r0, [r0, #0x140] + cmp r0, #0 + beq _021F8AA0 + ldr r1, [r8, r1] + mov r0, sl + bl FUN_021F6C84 +_021F8AA0: + add r4, r4, #1 + cmp r4, r6 + blt _021F8A78 +_021F8AAC: + mov r0, r8 + bl FUN_021DD82C +_021F8AB4: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021F8AC0: .word 0x0220E8A0 +_021F8AC4: .word 0x0220E8B0 +_021F8AC8: .word 0x0220E8D0 +_021F8ACC: .word 0x00000563 + + arm_func_start FUN_021F8AD0 +FUN_021F8AD0: ; 0x021F8AD0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr ip, _021F99B4 ; =0x000004EC + sub sp, sp, ip + mov sl, r0 + ldr r0, [sl] + str r1, [sp, #0x1c] + ldr r1, [r1, #8] + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + cmp r1, #0 + movne r4, #1 + ldr sb, [r0, #4] + moveq r4, #0 +_021F8B04: + mov r1, #1 + ldr r0, _021F99B8 ; =0x0220E8DC + str r1, [sp] + str r0, [sp, #4] + ldr r1, [sb, #4] + add r3, sp, #0xa0 + mov r0, sl + add r2, sb, #0x18 + bl FUN_021F28AC + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x1c] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _021F9174 + ldr r1, [sb, #4] + add r2, sp, #0x8c + mov r0, sl + bl FUN_021FB0FC + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x8c] + cmp r0, #4 + bne _021F8BA4 + ldr r1, _021F99BC ; =0x00000D01 + ldr r2, _021F99C0 ; =0x0220E8E0 + mov r0, sl + bl FUN_021FAF00 + mov r0, sl + mov r1, #4 + mov r2, #0 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #4 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F8BA4: + cmp r0, #3 + bne _021FA704 + ldr r0, [sb] + cmp r0, #1 + bne _021F8D6C + ldr r2, _021F99C4 ; =0x0220E90C + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99C8 ; =0x0220E918 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r0, [sp, #0x24] + add r1, sb, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl FUN_021F2F64 + ldr r2, _021F99CC ; =0x0220E924 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, sb, #0x18 + bl FUN_021F2F64 + ldr r2, _021F99D0 ; =0x0220E930 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x470] + add r1, sb, #0x18 + bl FUN_021F2F64 + ldrsb r0, [sb, #0x28] + cmp r0, #0 + beq _021F8C60 + ldr r2, _021F99D4 ; =0x0220E940 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x28 + bl FUN_021F2F9C +_021F8C60: + ldrsb r0, [sb, #0x47] + cmp r0, #0 + beq _021F8C8C + ldr r2, _021F99D8 ; =0x0220E948 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x47 + bl FUN_021F2F9C +_021F8C8C: + ldrsb r0, [sb, #0x5c] + cmp r0, #0 + beq _021F8CB8 + ldr r2, _021F99DC ; =0x0220E958 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x5c + bl FUN_021F2F9C +_021F8CB8: + ldrsb r0, [sb, #0x8f] + cmp r0, #0 + beq _021F8CE4 + ldr r2, _021F99E0 ; =0x0220E960 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x8f + bl FUN_021F2F9C +_021F8CE4: + ldrsb r0, [sb, #0xae] + cmp r0, #0 + beq _021F8D10 + ldr r2, _021F99E4 ; =0x0220E96C + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0xae + bl FUN_021F2F9C +_021F8D10: + ldr r0, [sb, #0x130] + cmp r0, #0 + beq _021F8D3C + ldr r2, _021F99E8 ; =0x0220E978 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sb, #0x130] + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F64 +_021F8D3C: + ldr r0, [sb, #0x134] + cmp r0, #0 + ble _021F9134 + ldr r2, _021F99EC ; =0x0220E984 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sb, #0x134] + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F64 + b _021F9134 +_021F8D6C: + cmp r0, #2 + bne _021F8DA8 + ldr r2, _021F99F0 ; =0x0220E98C + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99DC ; =0x0220E958 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x5c + bl FUN_021F2F9C + b _021F9134 +_021F8DA8: + cmp r0, #3 + bne _021F8E28 + ldr r2, _021F99F4 ; =0x0220E994 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99DC ; =0x0220E958 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x5c + bl FUN_021F2F9C + ldr r2, _021F99F8 ; =0x0220E99C + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0xcd + bl FUN_021F2F9C + ldr r2, _021F99D0 ; =0x0220E930 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x470] + add r1, sb, #0x18 + bl FUN_021F2F64 + b _021F9134 +_021F8E28: + cmp r0, #4 + bne _021F8EAC + ldr r2, _021F99FC ; =0x0220E9A4 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99C8 ; =0x0220E918 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r0, [sp, #0x24] + add r1, sb, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl FUN_021F2F64 + ldr r2, _021F99CC ; =0x0220E924 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, sb, #0x18 + bl FUN_021F2F64 + ldr r2, _021F9A00 ; =0x0220E9B0 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sb, #0x138] + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F64 + b _021F9134 +_021F8EAC: + cmp r0, #5 + bne _021F8F28 + ldr r2, _021F9A04 ; =0x0220E9BC + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99D4 ; =0x0220E940 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x28 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + ldr r2, _021F99DC ; =0x0220E958 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x5c + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + ldr r2, _021F99F8 ; =0x0220E99C + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0xcd + bl FUN_021F2F9C + b _021F9134 +_021F8F28: + cmp r0, #6 + bne _021F9038 + ldr r2, _021F9A08 ; =0x0220E9C4 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99D4 ; =0x0220E940 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x28 + bl FUN_021F2F9C + ldr r2, _021F99DC ; =0x0220E958 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x5c + bl FUN_021F2F9C + ldr r2, _021F99F8 ; =0x0220E99C + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0xcd + bl FUN_021F2F9C + ldr r2, _021F9A0C ; =0x0220E9D0 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x46c] + add r1, sb, #0x18 + bl FUN_021F2F64 + ldr r2, _021F99D0 ; =0x0220E930 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x470] + add r1, sb, #0x18 + bl FUN_021F2F64 + ldr r2, _021F99D8 ; =0x0220E948 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x47 + bl FUN_021F2F9C + ldrsb r0, [sb, #0xec] + cmp r0, #0 + beq _021F9134 + ldr r2, _021F9A10 ; =0x0220E9DC + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0xec + bl FUN_021F2F9C + b _021F9134 +_021F9038: + cmp r0, #7 + bne _021F90C0 + ldr r2, _021F9A14 ; =0x0220E9E4 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F99C8 ; =0x0220E918 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r0, [sp, #0x24] + add r1, sb, #0x18 + ldr r2, [r0, #0x198] + mov r0, sl + bl FUN_021F2F64 + ldr r2, _021F99CC ; =0x0220E924 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x1a0] + add r1, sb, #0x18 + bl FUN_021F2F64 + ldr r2, _021F99D0 ; =0x0220E930 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x470] + add r1, sb, #0x18 + bl FUN_021F2F64 + b _021F9134 +_021F90C0: + cmp r0, #8 + bne _021F9120 + ldr r2, _021F9A18 ; =0x0220E9F0 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F9A1C ; =0x0220EA00 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + mov r0, sl + add r1, sb, #0x18 + add r2, sb, #0x47 + bl FUN_021F2F9C + ldr r2, _021F99D0 ; =0x0220E930 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, [sp, #0x24] + mov r0, sl + ldr r2, [r2, #0x470] + add r1, sb, #0x18 + bl FUN_021F2F64 + b _021F9134 +_021F9120: + ldr r0, _021F9A20 ; =0x0220EA10 + ldr r1, _021F9A24 ; =0x0220E8D0 + ldr r3, _021F9A28 ; =0x00000275 + mov r2, #0 + bl __msl_assertion_failed +_021F9134: + ldr r2, _021F9A2C ; =0x0220EA14 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F9A30 ; =0x02210EA0 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r2, _021F9A34 ; =0x0220EA20 + mov r0, sl + add r1, sb, #0x18 + bl FUN_021F2F9C + ldr r0, [sp, #0x1c] + mov r1, #4 + str r1, [r0, #0x14] + b _021FA704 +_021F9174: + cmp r0, #4 + bne _021FA704 + add r1, sp, #0xa0 + ldr r0, _021F99B8 ; =0x0220E8DC + str r1, [sp] + str r0, [sp, #4] + ldr r1, [sb, #4] + add r3, sp, #0x9c + mov r0, sl + add r2, sb, #8 + bl FUN_021F2A2C + cmp r0, #0 + beq _021F91E8 + cmp r0, #3 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F99BC ; =0x00000D01 + ldr r2, _021F9A38 ; =0x0220EA28 + mov r0, sl + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #0 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F91E8: + ldr r0, [sb, #8] + ldr r1, _021F9A34 ; =0x0220EA20 + bl strstr + cmp r0, #0 + beq _021FA704 + mov r0, #0 + str r0, [sp, #0x90] + ldr r0, [sp, #0x1c] + mov r1, #5 + str r1, [r0, #0x14] + ldr r1, [sb, #8] + mov r0, sl + mov r2, #1 + bl FUN_021FB2F8 + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + movne r0, #1 + strne r0, [sb, #0x140] + addne sp, sp, ip + movne r0, #4 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sb] + cmp r0, #1 + bne _021F9600 + mov r0, #0 + str r0, [sp, #0x20] + str r0, [sp, #0xdc] + str r0, [sp, #0xe0] + str r0, [sp, #0xe8] + mov r0, #1 + str r0, [sp, #0x3c] + mov r0, #0x33 + str r0, [sp, #0x50] + mov r0, #0x15 + str r0, [sp, #0x4c] + mov r0, #0x600 + str r0, [sp, #0x38] + ldr r0, [sp, #0x20] + ldr r1, _021F9A3C ; =0x00000601 + str r0, [sp, #0x40] + mov r0, #0xac + str r0, [sp, #0x44] + ldr r0, [sp, #0x20] + str r1, [sp, #0xe4] + add r5, sp, #0xec + add r6, sp, #0x2ec + mov r4, #0x1f + str r0, [sp, #0x48] +_021F92A8: + str r6, [sp] + ldr r1, [sb, #8] + mov r0, sl + add r2, sp, #0x90 + mov r3, r5 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A40 ; =0x0220EA54 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F9344 + str r6, [sp] + ldr r1, [sb, #8] + mov r0, sl + add r2, sp, #0x90 + mov r3, r5 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A44 ; =0x0220EA5C + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F9338 + ldr r1, _021F9A20 ; =0x0220EA10 + mov r0, r6 + bl strcmp + cmp r0, #0 + ldrne r0, [sp, #0x38] + strne r0, [sp, #0xe4] +_021F9338: + ldr r0, [sp, #0x3c] + str r0, [sp, #0x20] + b _021F9530 +_021F9344: + ldr r1, _021F9A48 ; =0x0220EA64 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F9500 + ldr r1, [sp, #0xe0] + ldr r0, [sp, #0xe8] + add r2, r1, #1 + mov r1, #0xac + mul r1, r2, r1 + str r2, [sp, #0xe0] + bl FUN_021DD844 + movs r8, r0 + str r8, [sp, #0xe8] + bne _021F939C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F939C: + ldr r1, [sp, #0xe0] + mov r0, #0xac + sub r1, r1, #1 + mul fp, r1, r0 + add r7, r8, fp + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x44] + mov r0, r7 + bl Call_FillMemWithValue + mov r0, r6 + bl atol + str r0, [r8, fp] + ldr r8, [sp, #0x48] +_021F93D0: + ldr fp, [sp, #0x90] + mov r0, sl + str r6, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + mov r3, r5 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A50 ; =0x0220EA68 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F9424 + add r0, r7, #4 + mov r1, r6 + mov r2, r4 + bl FUN_021FB3DC + b _021F94F4 +_021F9424: + ldr r1, _021F9A54 ; =0x0220EA70 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F944C + ldr r2, [sp, #0x4c] + add r0, r7, #0x23 + mov r1, r6 + bl FUN_021FB3DC + b _021F94F4 +_021F944C: + ldr r1, _021F9A58 ; =0x0220EA7C + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F9474 + add r0, r7, #0x38 + mov r1, r6 + mov r2, r4 + bl FUN_021FB3DC + b _021F94F4 +_021F9474: + ldr r1, _021F9A5C ; =0x0220EA88 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F949C + add r0, r7, #0x57 + mov r1, r6 + mov r2, r4 + bl FUN_021FB3DC + b _021F94F4 +_021F949C: + ldr r1, _021F9A60 ; =0x0220EA94 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F94C4 + ldr r2, [sp, #0x50] + add r0, r7, #0x76 + mov r1, r6 + bl FUN_021FB3DC + b _021F94F4 +_021F94C4: + ldr r1, _021F9A48 ; =0x0220EA64 + mov r0, r5 + bl strcmp + cmp r0, #0 + beq _021F94EC + ldr r1, _021F9A40 ; =0x0220EA54 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021F94F4 +_021F94EC: + ldr r8, [sp, #0x3c] + str fp, [sp, #0x90] +_021F94F4: + cmp r8, #0 + beq _021F93D0 + b _021F9530 +_021F9500: + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9530: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _021F92A8 + ldr r0, [sp, #0x1c] + ldr r4, [sp, #0xe4] + ldr r3, [r0, #0xc] + ldr r2, [r0, #0x10] + cmp r3, #0 + str r3, [sp, #0x94] + str r2, [sp, #0x98] + beq _021F9568 + add r1, sp, #0xdc + mov r0, sl + blx r3 +_021F9568: + cmp r4, #0x600 + bne _021F95EC + ldr r0, [sp, #0xe4] + cmp r0, #0x600 + bne _021F95EC + add r0, sb, #0x8f + str r0, [sp] + add r0, sb, #0xae + str r0, [sp, #4] + ldr r1, [sb, #0x130] + mov r0, sl + str r1, [sp, #8] + ldr r3, [sp, #0xe0] + ldr r2, [sb, #0x134] + add r1, sb, #0x28 + add r2, r3, r2 + str r2, [sp, #0xc] + ldr r2, [sp, #0x1c] + ldr r3, [r2, #8] + add r2, sb, #0x47 + str r3, [sp, #0x10] + ldr r3, [sp, #0x1c] + ldr r4, [r3, #0xc] + add r3, sb, #0x5c + str r4, [sp, #0x14] + ldr r4, [sp, #0x1c] + ldr r4, [r4, #0x10] + str r4, [sp, #0x18] + bl FUN_021FA770 + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F95EC: + ldr r0, [sp, #0xe8] + bl FUN_021DD82C + mov r0, #0 + str r0, [sp, #0xe8] + b _021FA6F8 +_021F9600: + cmp r0, #2 + bne _021F972C + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xd4] + str r0, [sp, #0xd8] + beq _021FA6F8 + add r0, sp, #0x2ec + str r0, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + add r3, sp, #0xec + mov r0, sl + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A68 ; =0x0220EAC4 + add r0, sp, #0xec + bl strcmp + cmp r0, #0 + beq _021F9694 + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9694: + mov r0, #0x3c + bl FUN_021DD860 + movs r4, r0 + bne _021F96C0 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F96C0: + mov r0, #0 + str r0, [r4] + add r0, r4, #4 + add r1, sb, #0x5c + mov r2, #0x33 + bl FUN_021FB3DC + add r0, sp, #0x28c + ldrsb r0, [r0, #0x60] + add r1, sp, #0xd4 + mov r3, r4 + cmp r0, #0x30 + moveq r0, #0 + streq r0, [r4, #0x38] + movne r0, #1 + strne r0, [r4, #0x38] + ldr r0, [sp, #0x1c] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, sl + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F972C: + cmp r0, #3 + bne _021F9AFC + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xcc] + str r0, [sp, #0xd0] + beq _021FA6F8 + mov r0, #0x44 + bl FUN_021DD860 + movs r8, r0 + bne _021F977C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F977C: + mov r2, #0 + add r0, r8, #4 + add r1, sb, #0x5c + str r2, [r8] + bl strcpy + mov r1, #0 + str r1, [r8, #0x38] + str r1, [r8, #0x3c] + add r0, sp, #0x2ec + str r1, [r8, #0x40] + str r0, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + add r3, sp, #0xec + mov r0, sl + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A6C ; =0x0220EAC8 + add r0, sp, #0xec + bl strcmp + cmp r0, #0 + beq _021F9810 + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9810: + mov r0, #1 + mov r7, #0 + add r6, sp, #0xec + add fp, sp, #0x2ec + mov r5, #0x1f + mov r4, #0x15 + str r0, [sp, #0x54] +_021F982C: + str fp, [sp] + ldr r1, [sb, #8] + mov r0, sl + add r2, sp, #0x90 + mov r3, r6 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A50 ; =0x0220EA68 + mov r0, r6 + bl strcmp + cmp r0, #0 + bne _021F9904 + ldr r0, [r8, #0x3c] + ldr r1, [r8, #0x38] + add r1, r1, #1 + mov r1, r1, lsl #2 + bl FUN_021DD844 + cmp r0, #0 + bne _021F98A0 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F98A0: + str r0, [r8, #0x3c] + mov r0, r5 + bl FUN_021DD860 + cmp r0, #0 + bne _021F98D0 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F98D0: + ldr r3, [r8, #0x3c] + ldr r2, [r8, #0x38] + mov r1, fp + str r0, [r3, r2, lsl #2] + ldr r3, [r8, #0x3c] + ldr r0, [r8, #0x38] + mov r2, r5 + ldr r0, [r3, r0, lsl #2] + bl FUN_021FB3DC + ldr r0, [r8, #0x38] + add r0, r0, #1 + str r0, [r8, #0x38] + b _021F9ABC +_021F9904: + ldr r1, _021F9A54 ; =0x0220EA70 + mov r0, r6 + bl strcmp + cmp r0, #0 + bne _021F9A74 + ldr r0, [r8, #0x38] + cmp r0, #0 + ble _021F9ABC + mov r1, r0, lsl #2 + ldr r0, [r8, #0x40] + bl FUN_021DD844 + cmp r0, #0 + bne _021F9954 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9954: + str r0, [r8, #0x40] + mov r0, r4 + bl FUN_021DD860 + cmp r0, #0 + bne _021F9984 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9984: + ldr r3, [r8, #0x40] + ldr r2, [r8, #0x38] + mov r1, fp + sub r2, r2, #1 + str r0, [r3, r2, lsl #2] + ldr r3, [r8, #0x40] + ldr r0, [r8, #0x38] + mov r2, r4 + sub r0, r0, #1 + ldr r0, [r3, r0, lsl #2] + bl FUN_021FB3DC + b _021F9ABC + .align 2, 0 +_021F99B4: .word 0x000004EC +_021F99B8: .word 0x0220E8DC +_021F99BC: .word 0x00000D01 +_021F99C0: .word 0x0220E8E0 +_021F99C4: .word 0x0220E90C +_021F99C8: .word 0x0220E918 +_021F99CC: .word 0x0220E924 +_021F99D0: .word 0x0220E930 +_021F99D4: .word 0x0220E940 +_021F99D8: .word 0x0220E948 +_021F99DC: .word 0x0220E958 +_021F99E0: .word 0x0220E960 +_021F99E4: .word 0x0220E96C +_021F99E8: .word 0x0220E978 +_021F99EC: .word 0x0220E984 +_021F99F0: .word 0x0220E98C +_021F99F4: .word 0x0220E994 +_021F99F8: .word 0x0220E99C +_021F99FC: .word 0x0220E9A4 +_021F9A00: .word 0x0220E9B0 +_021F9A04: .word 0x0220E9BC +_021F9A08: .word 0x0220E9C4 +_021F9A0C: .word 0x0220E9D0 +_021F9A10: .word 0x0220E9DC +_021F9A14: .word 0x0220E9E4 +_021F9A18: .word 0x0220E9F0 +_021F9A1C: .word 0x0220EA00 +_021F9A20: .word 0x0220EA10 +_021F9A24: .word 0x0220E8D0 +_021F9A28: .word 0x00000275 +_021F9A2C: .word 0x0220EA14 +_021F9A30: .word 0x02210EA0 +_021F9A34: .word 0x0220EA20 +_021F9A38: .word 0x0220EA28 +_021F9A3C: .word 0x00000601 +_021F9A40: .word 0x0220EA54 +_021F9A44: .word 0x0220EA5C +_021F9A48: .word 0x0220EA64 +_021F9A4C: .word 0x0220E8A0 +_021F9A50: .word 0x0220EA68 +_021F9A54: .word 0x0220EA70 +_021F9A58: .word 0x0220EA7C +_021F9A5C: .word 0x0220EA88 +_021F9A60: .word 0x0220EA94 +_021F9A64: .word 0x0220EA9C +_021F9A68: .word 0x0220EAC4 +_021F9A6C: .word 0x0220EAC8 +_021F9A70: .word 0x0220EACC +_021F9A74: + ldr r1, _021F9A70 ; =0x0220EACC + mov r0, r6 + bl strcmp + cmp r0, #0 + ldreq r7, [sp, #0x54] + beq _021F9ABC + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9ABC: + cmp r7, #0 + beq _021F982C + ldr r0, [sp, #0x1c] + add r1, sp, #0xcc + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, sl + mov r3, r8 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9AFC: + cmp r0, #4 + bne _021F9DE0 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xc4] + str r0, [sp, #0xc8] + beq _021FA6F8 + mov r0, #0x10 + bl FUN_021DD860 + str r0, [sp, #0x28] + cmp r0, #0 + bne _021F9B50 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9B50: + mov r0, #0 + str r0, [sp, #0x34] + ldr r1, [sb, #0x138] + ldr r0, [sp, #0x28] + add r4, sp, #0xec + str r1, [r0, #4] + ldr r1, [sp, #0x34] + add r5, sp, #0x2ec + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + mov r0, #0x1f + str r0, [sp, #0x68] + mov r0, #0x100 + str r0, [sp, #0x64] + mov r0, r1 + str r0, [sp, #0x58] + mov r0, #0x128 + str r0, [sp, #0x5c] + mov r0, r1 + mov fp, #1 + str r0, [sp, #0x60] +_021F9BA8: + str r5, [sp] + ldr r1, [sb, #8] + mov r0, sl + add r2, sp, #0x90 + mov r3, r4 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA72C ; =0x0220EAD4 + mov r0, r4 + bl strcmp + cmp r0, #0 + streq fp, [sp, #0x34] + beq _021F9D9C + ldr r1, _021FA730 ; =0x0220EADC + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _021F9D6C + ldr r0, [sp, #0x28] + mov r2, #0x128 + ldr r0, [r0, #8] + add r1, r0, #1 + ldr r0, [sp, #0x28] + str r1, [r0, #8] + ldr r1, [sp, #0x28] + ldr r0, [r0, #0xc] + ldr r3, [r1, #8] + mul r1, r3, r2 + bl FUN_021DD844 + ldr r1, [sp, #0x28] + str r0, [r1, #0xc] + mov r0, r1 + ldr r6, [r0, #0xc] + cmp r6, #0 + bne _021F9C5C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9C5C: + ldr r1, [r0, #8] + mov r0, #0x128 + sub r1, r1, #1 + mul r7, r1, r0 + add r8, r6, r7 + ldr r1, [sp, #0x58] + ldr r2, [sp, #0x5c] + mov r0, r8 + bl Call_FillMemWithValue + mov r0, r5 + str fp, [r8, #0x24] + bl atol + str r0, [r6, r7] + ldr r7, [sp, #0x60] +_021F9C94: + ldr r6, [sp, #0x90] + mov r0, sl + str r5, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + mov r3, r4 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA734 ; =0x0220EAE0 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _021F9CE8 + ldr r2, [sp, #0x64] + add r0, r8, #0x28 + mov r1, r5 + bl FUN_021FB3DC + b _021F9D0C +_021F9CE8: + ldr r1, _021F9A50 ; =0x0220EA68 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _021F9D0C + ldr r2, [sp, #0x68] + add r0, r8, #4 + mov r1, r5 + bl FUN_021FB3DC +_021F9D0C: + ldr r1, _021FA738 ; =0x0220EAE8 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _021F9D30 + mov r0, r5 + bl atol + str r0, [r8, #0x24] + b _021F9D60 +_021F9D30: + ldr r1, _021FA730 ; =0x0220EADC + mov r0, r4 + bl strcmp + cmp r0, #0 + beq _021F9D58 + ldr r1, _021FA72C ; =0x0220EAD4 + mov r0, r4 + bl strcmp + cmp r0, #0 + bne _021F9D60 +_021F9D58: + str r6, [sp, #0x90] + mov r7, fp +_021F9D60: + cmp r7, #0 + beq _021F9C94 + b _021F9D9C +_021F9D6C: + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9D9C: + ldr r0, [sp, #0x34] + cmp r0, #0 + beq _021F9BA8 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x28] + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + add r1, sp, #0xc4 + mov r0, sl + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9DE0: + cmp r0, #5 + bne _021F9F50 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xbc] + str r0, [sp, #0xc0] + beq _021FA6F8 + add r0, sp, #0x2ec + str r0, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + add r3, sp, #0xec + mov r0, sl + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA73C ; =0x0220EAF4 + add r0, sp, #0xec + bl strcmp + cmp r0, #0 + beq _021F9E74 + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9E74: + add r0, sp, #0x2ec + bl atol + movs r5, r0 + ldrne r0, [sp, #0x24] + movne r4, #0 + strne r5, [r0, #0x418] + bne _021F9EE8 + ldr r0, [sb, #8] + ldr r1, _021FA740 ; =0x0220EAF8 + add r2, sp, #0x2ec + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021F9EDC + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9EDC: + add r0, sp, #0x2ec + bl atol + mov r4, r0 +_021F9EE8: + mov r0, #8 + bl FUN_021DD860 + movs r3, r0 + bne _021F9F14 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9F14: + str r5, [r3] + ldr r0, [sp, #0x1c] + str r4, [r3, #4] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, sp, #0xbc + mov r0, sl + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9F50: + cmp r0, #6 + bne _021FA0C8 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xb4] + str r0, [sp, #0xb8] + beq _021FA6F8 + add r0, sp, #0x2ec + str r0, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + add r3, sp, #0xec + mov r0, sl + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA744 ; =0x0220EB00 + add r0, sp, #0xec + bl strcmp + cmp r0, #0 + beq _021F9FE4 + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021F9FE4: + add r0, sp, #0x2ec + bl atol + movs r5, r0 + ldrne r0, [sp, #0x24] + ldr r1, _021FA740 ; =0x0220EAF8 + strne r5, [r0, #0x418] + ldr r0, [sb, #8] + add r2, sp, #0x2ec + mov r3, #0x200 + bl FUN_021FB1F0 + cmp r0, #0 + bne _021FA054 + cmp r5, #0 + bne _021FA04C + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA04C: + mov r4, #0 + b _021FA060 +_021FA054: + add r0, sp, #0x2ec + bl atol + mov r4, r0 +_021FA060: + mov r0, #8 + bl FUN_021DD860 + movs r3, r0 + bne _021FA08C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA08C: + str r5, [r3] + ldr r0, [sp, #0x1c] + str r4, [r3, #4] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, sp, #0xb4 + mov r0, sl + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA0C8: + cmp r0, #7 + bne _021FA474 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xac] + str r0, [sp, #0xb0] + beq _021FA6F8 + mov r0, #0xc + bl FUN_021DD860 + str r0, [sp, #0x2c] + cmp r0, #0 + bne _021FA11C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA11C: + mov r2, #0 + str r2, [r0] + str r2, [r0, #4] + str r2, [r0, #8] + add r1, sp, #0x2ec + str r1, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + add r3, sp, #0xec + mov r0, sl + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA748 ; =0x0220EB04 + add r0, sp, #0xec + bl strcmp + cmp r0, #0 + beq _021FA19C + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA19C: + mov r0, #0 + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x6c] + mov r0, #0x33 + str r0, [sp, #0x80] + mov r0, #0x15 + str r0, [sp, #0x7c] + ldr r0, [sp, #0x30] + add r5, sp, #0xec + str r0, [sp, #0x70] + mov r0, #0xac + str r0, [sp, #0x74] + ldr r0, [sp, #0x30] + add r6, sp, #0x2ec + mov r4, #0x1f + str r0, [sp, #0x78] +_021FA1E0: + str r6, [sp] + ldr r1, [sb, #8] + mov r0, sl + add r2, sp, #0x90 + mov r3, r5 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA74C ; =0x0220EB0C + mov r0, r5 + bl strcmp + cmp r0, #0 + ldreq r0, [sp, #0x6c] + streq r0, [sp, #0x30] + beq _021FA430 + ldr r1, _021FA750 ; =0x0220EB14 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA400 + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x2c] + ldr r2, [r1, #4] + mov r1, #0xac + add r2, r2, #1 + mul r1, r2, r1 + ldr r0, [r0, #8] + bl FUN_021DD844 + cmp r0, #0 + bne _021FA27C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA27C: + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x74] + str r0, [r1, #8] + mov r0, r1 + ldr r1, [r0, #4] + ldr r7, [r0, #8] + mov r0, #0xac + mul fp, r1, r0 + add r8, r7, fp + ldr r1, [sp, #0x70] + mov r0, r8 + bl Call_FillMemWithValue + ldr r0, [sp, #0x2c] + ldr r1, [r0, #4] + mov r0, r6 + add r2, r1, #1 + ldr r1, [sp, #0x2c] + str r2, [r1, #4] + bl atol + str r0, [r7, fp] + ldr r7, [sp, #0x78] +_021FA2D0: + ldr fp, [sp, #0x90] + mov r0, sl + str r6, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + mov r3, r5 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A50 ; =0x0220EA68 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA324 + add r0, r8, #4 + mov r1, r6 + mov r2, r4 + bl FUN_021FB3DC + b _021FA3F4 +_021FA324: + ldr r1, _021F9A54 ; =0x0220EA70 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA34C + ldr r2, [sp, #0x7c] + add r0, r8, #0x23 + mov r1, r6 + bl FUN_021FB3DC + b _021FA3F4 +_021FA34C: + ldr r1, _021FA754 ; =0x0220EB18 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA374 + add r0, r8, #0x38 + mov r1, r6 + mov r2, r4 + bl FUN_021FB3DC + b _021FA3F4 +_021FA374: + ldr r1, _021FA758 ; =0x0220EB20 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA39C + add r0, r8, #0x57 + mov r1, r6 + mov r2, r4 + bl FUN_021FB3DC + b _021FA3F4 +_021FA39C: + ldr r1, _021F9A60 ; =0x0220EA94 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA3C4 + ldr r2, [sp, #0x80] + add r0, r8, #0x76 + mov r1, r6 + bl FUN_021FB3DC + b _021FA3F4 +_021FA3C4: + ldr r1, _021FA750 ; =0x0220EB14 + mov r0, r5 + bl strcmp + cmp r0, #0 + beq _021FA3EC + ldr r1, _021FA74C ; =0x0220EB0C + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA3F4 +_021FA3EC: + ldr r7, [sp, #0x6c] + str fp, [sp, #0x90] +_021FA3F4: + cmp r7, #0 + beq _021FA2D0 + b _021FA430 +_021FA400: + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA430: + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _021FA1E0 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x2c] + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + add r1, sp, #0xac + mov r0, sl + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA474: + cmp r0, #8 + bne _021FA6E4 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0xc] + ldr r0, [r0, #0x10] + cmp r1, #0 + str r1, [sp, #0xa4] + str r0, [sp, #0xa8] + beq _021FA6F8 + mov r0, #0xc + mov r8, #0 + bl FUN_021DD860 + movs r7, r0 + bne _021FA4C8 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA4C8: + mov r1, r8 + str r1, [r7] + str r1, [r7, #4] + add r0, sp, #0x2ec + str r1, [r7, #8] + str r0, [sp] + ldr r1, [sb, #8] + add r2, sp, #0x90 + add r3, sp, #0xec + mov r0, sl + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021FA75C ; =0x0220EB28 + add r0, sp, #0xec + bl strcmp + cmp r0, #0 + beq _021FA548 + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA548: + add r0, sp, #0x2ec + bl atol + str r0, [r7, #4] + ldr r0, [r7, #4] + mov r0, r0, lsl #2 + bl FUN_021DD860 + str r0, [r7, #8] + ldr r0, [r7, #8] + cmp r0, #0 + bne _021FA58C + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA58C: + mov r6, r8 + mov r0, #1 + add r5, sp, #0xec + add fp, sp, #0x2ec + mov r4, #0x15 + str r6, [sp, #0x84] + str r0, [sp, #0x88] +_021FA5A8: + str fp, [sp] + ldr r1, [sb, #8] + mov r0, sl + add r2, sp, #0x90 + mov r3, r5 + bl FUN_021FAF2C + cmp r0, #0 + ldrne ip, _021F99B4 ; =0x000004EC + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _021F9A50 ; =0x0220EA68 + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA634 + mov r0, r4 + bl FUN_021DD860 + ldr r1, [r7, #8] + str r0, [r1, r8, lsl #2] + ldr r0, [r7, #8] + ldr r0, [r0, r8, lsl #2] + cmp r0, #0 + bne _021FA620 + ldr r1, _021F9A4C ; =0x0220E8A0 + mov r0, sl + bl FUN_021FAEEC + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #1 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA620: + mov r1, fp + mov r2, r4 + bl FUN_021FB3DC + add r8, r8, #1 + b _021FA6A4 +_021FA634: + ldr r1, _021FA760 ; =0x0220EB2C + mov r0, r5 + bl strcmp + cmp r0, #0 + bne _021FA674 + ldr r0, [r7, #4] + cmp r8, r0 + beq _021FA668 + ldr r0, _021FA764 ; =0x0220EB34 + ldr r1, _021F9A24 ; =0x0220E8D0 + ldr r2, [sp, #0x84] + ldr r3, _021FA768 ; =0x00000515 + bl __msl_assertion_failed +_021FA668: + str r8, [r7, #4] + ldr r6, [sp, #0x88] + b _021FA6A4 +_021FA674: + ldr r2, _021F9A64 ; =0x0220EA9C + mov r0, sl + mov r1, #1 + bl FUN_021FAF00 + mov r0, sl + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + ldr ip, _021F99B4 ; =0x000004EC + mov r0, #3 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA6A4: + cmp r6, #0 + beq _021FA5A8 + ldr r0, [sp, #0x1c] + add r1, sp, #0xa4 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, sl + mov r3, r7 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + beq _021FA6F8 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FA6E4: + ldr r0, _021F9A20 ; =0x0220EA10 + ldr r1, _021F9A24 ; =0x0220E8D0 + ldr r3, _021FA76C ; =0x0000052A + mov r2, #0 + bl __msl_assertion_failed +_021FA6F8: + mov r0, #1 + str r0, [sb, #0x140] + mov r4, #0 +_021FA704: + cmp r4, #0 + beq _021FA714 + mov r0, #0xa + bl FUN_021F0250 +_021FA714: + cmp r4, #0 + bne _021F8B04 + mov r0, #0 + ldr ip, _021F99B4 ; =0x000004EC + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021FA72C: .word 0x0220EAD4 +_021FA730: .word 0x0220EADC +_021FA734: .word 0x0220EAE0 +_021FA738: .word 0x0220EAE8 +_021FA73C: .word 0x0220EAF4 +_021FA740: .word 0x0220EAF8 +_021FA744: .word 0x0220EB00 +_021FA748: .word 0x0220EB04 +_021FA74C: .word 0x0220EB0C +_021FA750: .word 0x0220EB14 +_021FA754: .word 0x0220EB18 +_021FA758: .word 0x0220EB20 +_021FA75C: .word 0x0220EB28 +_021FA760: .word 0x0220EB2C +_021FA764: .word 0x0220EB34 +_021FA768: .word 0x00000515 +_021FA76C: .word 0x0000052A + + arm_func_start FUN_021FA770 +FUN_021FA770: ; 0x021FA770 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + movs r8, r1 + mov sb, r0 + mov r7, r2 + mov r6, r3 + ldr r5, [sp, #0x28] + ldr r4, [sp, #0x2c] + beq _021FA7A0 + ldrsb r0, [r8] + cmp r0, #0 + bne _021FA814 +_021FA7A0: + cmp r6, #0 + beq _021FA7B4 + ldrsb r0, [r6] + cmp r0, #0 + bne _021FA814 +_021FA7B4: + cmp r5, #0 + beq _021FA7C8 + ldrsb r0, [r5] + cmp r0, #0 + bne _021FA814 +_021FA7C8: + cmp r4, #0 + beq _021FA7DC + ldrsb r0, [r4] + cmp r0, #0 + bne _021FA814 +_021FA7DC: + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _021FA814 + cmp r7, #0 + beq _021FA7FC + ldrsb r0, [r7] + cmp r0, #0 + bne _021FA814 +_021FA7FC: + ldr r1, _021FA958 ; =0x0220EB54 + mov r0, sb + bl FUN_021FAEEC + add sp, sp, #0xc + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FA814: + add r1, sp, #4 + mov r0, sb + mov r2, #1 + bl FUN_021FA9F0 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + cmp r8, #0 + ldreq r0, [sp, #4] + moveq r1, #0 + streqb r1, [r0, #0x28] + beq _021FA858 + ldr r0, [sp, #4] + mov r1, r8 + add r0, r0, #0x28 + mov r2, #0x1f + bl FUN_021FB3DC +_021FA858: + cmp r7, #0 + ldreq r0, [sp, #4] + moveq r1, #0 + streqb r1, [r0, #0x47] + beq _021FA880 + ldr r0, [sp, #4] + mov r1, r7 + add r0, r0, #0x47 + mov r2, #0x15 + bl FUN_021FB3DC +_021FA880: + cmp r6, #0 + ldreq r0, [sp, #4] + moveq r1, #0 + streqb r1, [r0, #0x5c] + beq _021FA8A8 + ldr r0, [sp, #4] + mov r1, r6 + add r0, r0, #0x5c + mov r2, #0x33 + bl FUN_021FB3DC +_021FA8A8: + ldr r0, [sp, #4] + add r0, r0, #0x5c + bl FUN_021F01C4 + cmp r5, #0 + ldreq r0, [sp, #4] + moveq r1, #0 + streqb r1, [r0, #0x8f] + beq _021FA8DC + ldr r0, [sp, #4] + mov r1, r5 + add r0, r0, #0x8f + mov r2, #0x1f + bl FUN_021FB3DC +_021FA8DC: + cmp r4, #0 + ldreq r0, [sp, #4] + moveq r1, #0 + streqb r1, [r0, #0xae] + beq _021FA904 + ldr r0, [sp, #4] + mov r1, r4 + add r0, r0, #0xae + mov r2, #0x1f + bl FUN_021FB3DC +_021FA904: + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x30] + ldr r1, [sp, #4] + cmp r0, #0 + movlt r0, #0 + strlt r0, [sp, #0x34] + str r2, [r1, #0x130] + ldr r2, [sp, #0x34] + ldr r1, [sp, #4] + ldr r0, [sp, #0x40] + str r2, [r1, #0x134] + str r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #0x38] + ldr r3, [sp, #0x3c] + mov r0, sb + bl FUN_021FA95C + cmp r0, #0 + moveq r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021FA958: .word 0x0220EB54 + + arm_func_start FUN_021FA95C +FUN_021FA95C: ; 0x021FA95C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + ldr r4, [r5] + ldr ip, [sp, #0x20] + ldr lr, [r4, #0x210] + add lr, lr, #1 + str lr, [r4, #0x210] + str r2, [sp] + str r3, [sp, #4] + mov r2, r1 + add r3, sp, #0xc + mov r1, #3 + str ip, [sp, #8] + bl FUN_021F6D8C + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, pc} + ldr r1, [sp, #0xc] + mov r0, r5 + bl FUN_021FAAB4 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, pc} + ldr r1, [sp, #0xc] + ldr r0, [r1, #8] + cmp r0, #0 + beq _021FA9E4 + ldr r1, [r1, #0x18] + mov r0, r5 + bl FUN_021F0FD4 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, pc} +_021FA9E4: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FA9F0 +FUN_021FA9F0: ; 0x021FA9F0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r0, #0x144 + mov r5, r1 + mov r7, r2 + bl FUN_021DD860 + movs r4, r0 + bne _021FAA2C + ldr r1, _021FAAB0 ; =0x0220E8A0 + mov r0, r6 + bl FUN_021FAEEC + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FAA2C: + mov r1, #0 + mov r2, #0x144 + bl Call_FillMemWithValue + str r7, [r4] + mvn r0, #0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0xc] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + mov r0, #0x1000 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + bl FUN_021DD860 + str r0, [r4, #0x18] + ldr r0, [r4, #0x18] + cmp r0, #0 + movne r0, #0 + strne r0, [r4, #0x13c] + strne r0, [r4, #0x140] + addne sp, sp, #4 + strne r4, [r5] + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _021FAAB0 ; =0x0220E8A0 + mov r0, r6 + bl FUN_021FAEEC + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FAAB0: .word 0x0220E8A0 + + arm_func_start FUN_021FAAB4 +FUN_021FAAB4: ; 0x021FAAB4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + ldr r4, [r5, #4] + mov r1, #0x1000 + str r1, [r4, #0xc] + ldr r1, [r4, #0xc] + mov r6, r0 + add r0, r1, #1 + bl FUN_021DD860 + str r0, [r4, #8] + ldr r0, [r4, #8] + cmp r0, #0 + bne _021FAB04 + ldr r1, _021FAC9C ; =0x0220E8A0 + mov r0, r6 + bl FUN_021FAEEC + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021FAB04: + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4, #4] + ldr r0, [r4, #4] + mvn r1, #0 + cmp r0, r1 + bne _021FAB54 + ldr r2, _021FACA0 ; =0x0220EB68 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021FAB54: + mov r1, #0 + bl FUN_021F017C + cmp r0, #0 + bne _021FAB90 + ldr r2, _021FACA4 ; =0x0220EB90 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021FAB90: + ldr r0, _021FACA8 ; =0x0220E860 + bl FUN_0209A6EC + cmp r0, #0 + bne _021FABCC + ldr r2, _021FACAC ; =0x0220EBC4 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021FABCC: + add r1, sp, #0 + mov r2, #0 + str r2, [r1] + str r2, [r1, #4] + mov r1, #2 + strb r1, [sp, #1] + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [sp, #4] + cmp r0, #0 + bne _021FAC0C + ldr r0, _021FACB0 ; =0x0220EBF4 + ldr r1, _021FACB4 ; =0x0220E8D0 + mov r3, #0x59 + bl __msl_assertion_failed +_021FAC0C: + ldr r0, _021FACB8 ; =0x0000CD74 + add r1, sp, #0 + strh r0, [sp, #2] + ldr r0, [r4, #4] + mov r2, #8 + bl FUN_021EFCE4 + mvn r1, #0 + cmp r0, r1 + bne _021FAC88 + ldr r0, [r4, #4] + bl FUN_021EFB28 + mvn r1, #5 + cmp r0, r1 + beq _021FAC88 + mvn r1, #0x19 + cmp r0, r1 + beq _021FAC88 + mvn r1, #0x4b + cmp r0, r1 + beq _021FAC88 + ldr r2, _021FACBC ; =0x0220EC14 + mov r0, r6 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021FAC88: + mov r0, #1 + str r0, [r5, #0x14] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FAC9C: .word 0x0220E8A0 +_021FACA0: .word 0x0220EB68 +_021FACA4: .word 0x0220EB90 +_021FACA8: .word 0x0220E860 +_021FACAC: .word 0x0220EBC4 +_021FACB0: .word 0x0220EBF4 +_021FACB4: .word 0x0220E8D0 +_021FACB8: .word 0x0000CD74 +_021FACBC: .word 0x0220EC14 + + arm_func_start FUN_021FACC0 +FUN_021FACC0: ; 0x021FACC0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x54 + mov r4, r1 + mov r5, r0 + mov r0, r3 + ldr r1, _021FAD3C ; =0x0220EC3C + add r2, sp, #4 + mov r3, #0x40 + bl FUN_021FB1F0 + cmp r0, #0 + addeq sp, sp, #0x54 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _021FAD40 ; =0x0220EC44 + add ip, sp, #0x4c + add r0, sp, #4 + add r2, sp, #0x44 + add r3, sp, #0x48 + str ip, [sp] + bl sscanf + cmp r0, #3 + addne sp, sp, #0x54 + ldmneia sp!, {r4, r5, pc} + mov ip, #0 + add r1, sp, #0x44 + mov r0, r5 + mov r2, r4 + mov r3, #2 + str ip, [sp] + bl FUN_021FAD44 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FAD3C: .word 0x0220EC3C +_021FAD40: .word 0x0220EC44 + + arm_func_start FUN_021FAD44 +FUN_021FAD44: ; 0x021FAD44 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + ldr ip, [sp, #0x30] + mov r5, r2 + mov r6, r0 + cmp ip, #0 + ldreq r0, _021FADE0 ; =0x0220EC50 + mov lr, r1 + mov r4, r3 + streq r0, [sp, #0x30] + mov r0, r6 + mov r1, r5 + mov r3, lr + mov r2, #0xc9 + bl FUN_021F726C + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021FADE4 ; =0x0220EC54 + add r0, sp, #0 + mov r3, r4 + mov r2, #1 + bl sprintf + add r2, sp, #0 + mov r0, r6 + mov r1, r5 + bl FUN_021F2C58 + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, pc} + ldr r2, [sp, #0x30] + mov r0, r6 + mov r1, r5 + mvn r3, #0 + bl FUN_021F7184 + cmp r0, #0 + moveq r0, #0 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FADE0: .word 0x0220EC50 +_021FADE4: .word 0x0220EC54 + + arm_func_start FUN_021FADE8 +FUN_021FADE8: ; 0x021FADE8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r4, r2 + mov r5, r1 + mov r1, r4 + mov r2, #1 + mov r6, r0 + bl FUN_021FB2F8 + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _021FAEE0 ; =0x0220EC6C + mov r0, r4 + mov r2, #4 + bl strncmp + cmp r0, #0 + beq _021FAE5C + ldr r2, _021FAEE4 ; =0x0220EC74 + mov r0, r6 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r6 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0x10 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_021FAE5C: + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + cmp r1, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + beq _021FAEC8 + mov r0, #4 + bl FUN_021DD860 + movs r3, r0 + bne _021FAE9C + ldr r1, _021FAEE8 ; =0x0220ECA4 + mov r0, r6 + bl FUN_021FAEEC + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021FAE9C: + mov r0, #0 + str r0, [r3] + str r5, [sp] + str r0, [sp, #4] + add r1, sp, #8 + mov r0, r6 + ldmia r1, {r1, r2} + bl FUN_021F3454 + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, pc} +_021FAEC8: + mov r0, r6 + mov r1, r5 + bl FUN_021F6C84 + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FAEE0: .word 0x0220EC6C +_021FAEE4: .word 0x0220EC74 +_021FAEE8: .word 0x0220ECA4 + + arm_func_start FUN_021FAEEC +FUN_021FAEEC: ; 0x021FAEEC + ldr ip, _021FAEFC ; =FUN_021FB3DC + ldr r0, [r0] + mov r2, #0x100 + bx ip + .align 2, 0 +_021FAEFC: .word FUN_021FB3DC + + arm_func_start FUN_021FAF00 +FUN_021FAF00: ; 0x021FAF00 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, [r0] + mov r5, r1 + mov r1, r2 + mov r0, r4 + mov r2, #0x100 + bl FUN_021FB3DC + str r5, [r4, #0x418] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FAF2C +FUN_021FAF2C: ; 0x021FAF2C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r7, r1 + mov r8, r0 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x18] + bne _021FAF5C + ldr r0, _021FB0D8 ; =0x0220ECB4 + ldr r1, _021FB0DC ; =0x0220ECC4 + ldr r3, _021FB0E0 ; =0x00000199 + mov r2, #0 + bl __msl_assertion_failed +_021FAF5C: + cmp r5, #0 + bne _021FAF78 + ldr r0, _021FB0E4 ; =0x0220ECD4 + ldr r1, _021FB0DC ; =0x0220ECC4 + ldr r3, _021FB0E8 ; =0x0000019A + mov r2, #0 + bl __msl_assertion_failed +_021FAF78: + cmp r4, #0 + bne _021FAF94 + ldr r0, _021FB0EC ; =0x0220ECE0 + ldr r1, _021FB0DC ; =0x0220ECC4 + ldr r3, _021FB0F0 ; =0x0000019B + mov r2, #0 + bl __msl_assertion_failed +_021FAF94: + ldr r1, [r6] + ldrsb r0, [r7, r1] + add r3, r7, r1 + cmp r0, #0x5c + beq _021FAFD0 + ldr r2, _021FB0F4 ; =0x0220ECF0 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FAFD0: + ldrsb r2, [r3, #1] + add r7, r3, #2 + mov r1, #0 + cmp r2, #0x5c + beq _021FB05C + ldr r0, _021FB0F8 ; =0x000001FF +_021FAFE8: + cmp r2, #0 + bne _021FB018 + ldr r2, _021FB0F4 ; =0x0220ECF0 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FB018: + cmp r1, r0 + bne _021FB048 + ldr r2, _021FB0F4 ; =0x0220ECF0 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FB048: + strb r2, [r5], #1 + ldrsb r2, [r7], #1 + add r1, r1, #1 + cmp r2, #0x5c + bne _021FAFE8 +_021FB05C: + mov r2, #0 + strb r2, [r5] + ldr r0, _021FB0F8 ; =0x000001FF + b _021FB0A4 +_021FB06C: + cmp r2, r0 + bne _021FB09C + ldr r2, _021FB0F4 ; =0x0220ECF0 + mov r0, r8 + mov r1, #1 + bl FUN_021FAF00 + mov r0, r8 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FB09C: + strb r1, [r4], #1 + add r2, r2, #1 +_021FB0A4: + ldrsb r1, [r7], #1 + cmp r1, #0x5c + beq _021FB0B8 + cmp r1, #0 + bne _021FB06C +_021FB0B8: + mov r0, #0 + strb r0, [r4] + sub r1, r7, r3 + ldr r2, [r6] + sub r1, r1, #1 + add r1, r2, r1 + str r1, [r6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021FB0D8: .word 0x0220ECB4 +_021FB0DC: .word 0x0220ECC4 +_021FB0E0: .word 0x00000199 +_021FB0E4: .word 0x0220ECD4 +_021FB0E8: .word 0x0000019A +_021FB0EC: .word 0x0220ECE0 +_021FB0F0: .word 0x0000019B +_021FB0F4: .word 0x0220ECF0 +_021FB0F8: .word 0x000001FF + + arm_func_start FUN_021FB0FC +FUN_021FB0FC: ; 0x021FB0FC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov ip, #0 + mov r4, r2 + mov r5, r0 + mov r0, r1 + add r2, sp, #0 + add r3, sp, #4 + mov r1, ip + str ip, [sp] + str ip, [sp, #4] + bl FUN_021EFF5C + mvn r1, #0 + cmp r0, r1 + bne _021FB170 + ldr r1, _021FB1E0 ; =0x0220ED00 + mov r0, r5 + bl FUN_021FB3D0 + ldr r2, _021FB1E4 ; =0x0220ED14 + mov r0, r5 + mov r1, #5 + bl FUN_021FAF00 + mov r0, r5 + mov r1, #3 + mov r2, #1 + bl FUN_021F3500 + add sp, sp, #0xc + mov r0, #3 + ldmia sp!, {r4, r5, pc} +_021FB170: + cmp r0, #0 + ble _021FB1D0 + ldr r0, [sp, #4] + cmp r0, #0 + beq _021FB1A4 + ldr r1, _021FB1E8 ; =0x0220ED4C + mov r0, r5 + bl FUN_021FB3D0 + mov r0, #4 + str r0, [r4] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021FB1A4: + ldr r0, [sp] + cmp r0, #0 + beq _021FB1D0 + ldr r1, _021FB1EC ; =0x0220ED64 + mov r0, r5 + bl FUN_021FB3D0 + mov r0, #3 + str r0, [r4] + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021FB1D0: + mov r0, #0 + str r0, [r4] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FB1E0: .word 0x0220ED00 +_021FB1E4: .word 0x0220ED14 +_021FB1E8: .word 0x0220ED4C +_021FB1EC: .word 0x0220ED64 + + arm_func_start FUN_021FB1F0 +FUN_021FB1F0: ; 0x021FB1F0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r5, r0 + mov r8, r1 + mov r4, r2 + mov r7, r3 + bne _021FB21C + ldr r0, _021FB2D8 ; =0x0220ED7C + ldr r1, _021FB2DC ; =0x0220ECC4 + ldr r3, _021FB2E0 ; =0x0000010D + mov r2, #0 + bl __msl_assertion_failed +_021FB21C: + cmp r8, #0 + bne _021FB238 + ldr r0, _021FB2E4 ; =0x0220ECD4 + ldr r1, _021FB2DC ; =0x0220ECC4 + ldr r3, _021FB2E8 ; =0x0000010E + mov r2, #0 + bl __msl_assertion_failed +_021FB238: + cmp r4, #0 + bne _021FB254 + ldr r0, _021FB2EC ; =0x0220ECE0 + ldr r1, _021FB2DC ; =0x0220ECC4 + ldr r3, _021FB2F0 ; =0x0000010F + mov r2, #0 + bl __msl_assertion_failed +_021FB254: + cmp r7, #0 + bgt _021FB270 + ldr r0, _021FB2F4 ; =0x0220ED8C + ldr r1, _021FB2DC ; =0x0220ECC4 + mov r2, #0 + mov r3, #0x110 + bl __msl_assertion_failed +_021FB270: + ldrsb r6, [r8] + mov r0, r5 + mov r1, r8 + bl strstr + movs r5, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r8 + bl strlen + add r3, r5, r0 + sub r0, r7, #1 + mov r2, #0 + b _021FB2AC +_021FB2A4: + strb r1, [r4, r2] + add r2, r2, #1 +_021FB2AC: + cmp r2, r0 + bge _021FB2C8 + ldrsb r1, [r3, r2] + cmp r1, #0 + beq _021FB2C8 + cmp r1, r6 + bne _021FB2A4 +_021FB2C8: + mov r0, #0 + strb r0, [r4, r2] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021FB2D8: .word 0x0220ED7C +_021FB2DC: .word 0x0220ECC4 +_021FB2E0: .word 0x0000010D +_021FB2E4: .word 0x0220ECD4 +_021FB2E8: .word 0x0000010E +_021FB2EC: .word 0x0220ECE0 +_021FB2F0: .word 0x0000010F +_021FB2F4: .word 0x0220ED8C + + arm_func_start FUN_021FB2F8 +FUN_021FB2F8: ; 0x021FB2F8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r6, r1 + mov r7, r0 + mov r5, r2 + ldr r1, _021FB3C0 ; =0x0220ED94 + mov r0, r6 + mov r2, #7 + ldr r4, [r7] + bl strncmp + cmp r0, #0 + bne _021FB3B4 + ldr r1, _021FB3C4 ; =0x0220ED9C + add r2, sp, #0 + mov r0, r6 + mov r3, #0x10 + bl FUN_021FB1F0 + cmp r0, #0 + beq _021FB350 + add r0, sp, #0 + bl atol + str r0, [r4, #0x418] +_021FB350: + ldr r1, _021FB3C8 ; =0x0220EDA4 + mov r0, r6 + mov r2, r4 + mov r3, #0x100 + bl FUN_021FB1F0 + cmp r0, #0 + moveq r0, #0 + streqb r0, [r4] + cmp r5, #0 + beq _021FB3A8 + ldr r1, _021FB3CC ; =0x0220EDB0 + mov r0, r6 + bl strstr + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r7 + mov r1, #4 + bl FUN_021F3500 +_021FB3A8: + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FB3B4: + mov r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FB3C0: .word 0x0220ED94 +_021FB3C4: .word 0x0220ED9C +_021FB3C8: .word 0x0220EDA4 +_021FB3CC: .word 0x0220EDB0 + + arm_func_start FUN_021FB3D0 +FUN_021FB3D0: ; 0x021FB3D0 + stmdb sp!, {r0, r1, r2, r3} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FB3DC +FUN_021FB3DC: ; 0x021FB3DC + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + mov r5, r1 + mov r4, r2 + bne _021FB404 + ldr r0, _021FB440 ; =0x0220EDB8 + ldr r1, _021FB444 ; =0x0220ECC4 + mov r2, #0 + mov r3, #0x2f + bl __msl_assertion_failed +_021FB404: + cmp r5, #0 + bne _021FB420 + ldr r0, _021FB448 ; =0x0220EDC8 + ldr r1, _021FB444 ; =0x0220ECC4 + mov r2, #0 + mov r3, #0x30 + bl __msl_assertion_failed +_021FB420: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl strncpy + add r0, r6, r4 + mov r1, #0 + strb r1, [r0, #-1] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FB440: .word 0x0220EDB8 +_021FB444: .word 0x0220ECC4 +_021FB448: .word 0x0220EDC8 + + arm_func_start FUN_021FB44C +FUN_021FB44C: ; 0x021FB44C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x24 + ldr r0, _021FB520 ; =0x02210F84 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + bl FUN_021EF06C + subs r4, r0, #1 + bmi _021FB500 + ldr r5, _021FB524 ; =0x0220BBC8 + add r3, sp, #0x14 + mov r2, #8 +_021FB480: + ldrb r1, [r5], #1 + ldrb r0, [r5], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _021FB480 + ldr sb, _021FB528 ; =0x0220EDEC + ldr r5, _021FB52C ; =0x0220EDD8 + add r8, sp, #4 + mov r7, #0xf + mov r6, #0 +_021FB4AC: + add ip, sp, #0x14 + add r3, sp, #4 + mov r2, #8 +_021FB4B8: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _021FB4B8 + mov r0, r8 + mov r1, r7 + str sb, [r5] + bl FUN_021FBCB8 + mov r0, r4 + mov r1, r6 + mov r2, r6 + mov r3, r8 + str r6, [sp] + bl FUN_021FB530 + subs r4, r4, #1 + bpl _021FB4AC +_021FB500: + ldr r0, _021FB520 ; =0x02210F84 + ldr r0, [r0] + bl FUN_021EF074 + ldr r0, _021FB520 ; =0x02210F84 + mov r1, #0 + str r1, [r0] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021FB520: .word 0x02210F84 +_021FB524: .word 0x0220BBC8 +_021FB528: .word 0x0220EDEC +_021FB52C: .word 0x0220EDD8 + + arm_func_start FUN_021FB530 +FUN_021FB530: ; 0x021FB530 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + addmi sp, sp, #0x14 + ldmmiia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021FB650 ; =0x02210F84 + ldr r0, [r0] + bl FUN_021EF06C + cmp r7, r0 + addge sp, sp, #0x14 + ldmgeia sp!, {r4, r5, r6, r7, pc} + ldr r0, _021FB650 ; =0x02210F84 + mov r1, r7 + ldr r0, [r0] + bl FUN_021EEFFC + mov r3, r0 + ldr ip, [r3, #0x18] + cmp ip, #0 + beq _021FB638 + ldr r0, [r3] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _021FB638 +_021FB598: ; jump table + b _021FB5A8 ; case 0 + b _021FB5C8 ; case 1 + b _021FB5FC ; case 2 + b _021FB624 ; case 3 +_021FB5A8: + ldr r0, [r3, #0x14] + mov r2, r6 + str r0, [sp] + ldr r0, [r3, #4] + ldr r1, [r3, #8] + mov r3, r4 + blx ip + b _021FB638 +_021FB5C8: + str r6, [sp] + str r5, [sp, #4] + ldr r0, [sp, #0x28] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r3, #0x14] + str r0, [sp, #0x10] + ldr r0, [r3, #4] + ldr r1, [r3, #8] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + blx ip + b _021FB638 +_021FB5FC: + str r6, [sp] + str r5, [sp, #4] + ldr r0, [r3, #0x14] + str r0, [sp, #8] + ldr r0, [r3, #4] + ldr r1, [r3, #8] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + blx ip + b _021FB638 +_021FB624: + ldr r0, [r3, #4] + ldr r1, [r3, #8] + ldr r3, [r3, #0x14] + mov r2, r6 + blx ip +_021FB638: + ldr r0, _021FB650 ; =0x02210F84 + mov r1, r7 + ldr r0, [r0] + bl FUN_021EED84 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FB650: .word 0x02210F84 + + arm_func_start FUN_021FB654 +FUN_021FB654: ; 0x021FB654 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r1 + mov sl, r0 + mov r7, sb + bl FUN_021FBB3C + mov r8, r0 + ldr r5, _021FB6D4 ; =0x0220EDDC + ldr r4, _021FB6D8 ; =0x0220EDD8 + b _021FB6BC +_021FB678: + sub r6, r8, sl + mov r0, sl + mov r1, r6 + str r5, [r4] + bl FUN_021FBCB8 + mov r0, sl + mov r1, r6 + bl FUN_021FB6DC + add r0, r6, #7 + sub sb, sb, r0 + cmp sb, #0 + add sl, r8, #7 + ble _021FB6BC + mov r0, sl + mov r1, sb + bl FUN_021FBB3C + mov r8, r0 +_021FB6BC: + cmp sb, #0 + ble _021FB6CC + cmp r8, #0 + bne _021FB678 +_021FB6CC: + sub r0, r7, sb + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021FB6D4: .word 0x0220EDDC +_021FB6D8: .word 0x0220EDD8 + + arm_func_start FUN_021FB6DC +FUN_021FB6DC: ; 0x021FB6DC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldr r1, _021FB7D0 ; =0x0220EDFC + mov r5, r0 + mov r3, #0 + mov r2, #8 + strb r3, [r5, r4] + bl strncmp + cmp r0, #0 + bne _021FB71C + mov r0, r5 + mov r1, r4 + bl FUN_021FBA00 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021FB71C: + ldr r1, _021FB7D4 ; =0x0220EE08 + mov r0, r5 + mov r2, #9 + bl strncmp + cmp r0, #0 + bne _021FB748 + mov r0, r5 + mov r1, r4 + bl FUN_021FB968 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021FB748: + ldr r1, _021FB7D4 ; =0x0220EE08 + mov r0, r5 + mov r2, #9 + bl strncmp + cmp r0, #0 + bne _021FB774 + mov r0, r5 + mov r1, r4 + bl FUN_021FB968 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021FB774: + ldr r1, _021FB7D8 ; =0x0220EE14 + mov r0, r5 + mov r2, #8 + bl strncmp + cmp r0, #0 + bne _021FB7A0 + mov r0, r5 + mov r1, r4 + bl FUN_021FB884 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_021FB7A0: + ldr r1, _021FB7DC ; =0x0220EE20 + mov r0, r5 + mov r2, #8 + bl strncmp + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FUN_021FB7E0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FB7D0: .word 0x0220EDFC +_021FB7D4: .word 0x0220EE08 +_021FB7D8: .word 0x0220EE14 +_021FB7DC: .word 0x0220EE20 + + arm_func_start FUN_021FB7E0 +FUN_021FB7E0: ; 0x021FB7E0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, _021FB874 ; =0x0220EE2C + mov r7, r0 + bl FUN_021FBBC8 + bl atol + mov r6, r0 + ldr r1, _021FB878 ; =0x0220EE34 + mov r0, r7 + bl FUN_021FBBC8 + bl atol + mov r5, r0 + ldr r1, _021FB87C ; =0x0220EE38 + mov r0, r7 + bl FUN_021FBBC8 + bl atol + mov r4, r0 + ldr r1, _021FB880 ; =0x0220EE3C + mov r0, r7 + bl FUN_021FBBC8 + bl atol + mov r1, r4 + mov r4, r0 + mov r2, r5 + mov r0, #2 + bl FUN_021FBAB0 + mvn r1, #0 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r3, #0 + mov r1, r6 + mov r2, r4 + str r3, [sp] + bl FUN_021FB530 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FB874: .word 0x0220EE2C +_021FB878: .word 0x0220EE34 +_021FB87C: .word 0x0220EE38 +_021FB880: .word 0x0220EE3C + + arm_func_start FUN_021FB884 +FUN_021FB884: ; 0x021FB884 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _021FB94C ; =0x0220EE40 + mov r4, r0 + bl FUN_021FBBC8 + bl atol + mov r7, r0 + ldr r1, _021FB950 ; =0x0220EE38 + mov r0, r4 + bl FUN_021FBBC8 + bl atol + mov r6, r0 + ldr r1, _021FB954 ; =0x0220EE34 + mov r0, r4 + bl FUN_021FBBC8 + bl atol + mov r5, r0 + ldr r1, _021FB958 ; =0x0220EE3C + mov r0, r4 + bl FUN_021FBBC8 + bl atol + mov r2, r5 + mov r5, r0 + mov r1, r6 + mov r0, #1 + bl FUN_021FBAB0 + mov r8, r0 + mvn r0, #0 + cmp r8, r0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, _021FB95C ; =0x0220EE48 + mov r0, r4 + bl FUN_021FBBC8 + bl atol + mov r6, r0 + ldr r1, _021FB960 ; =0x0220EE50 + mov r0, r4 + bl strstr + cmp r0, #0 + ldreq r3, _021FB964 ; =0x0220EE58 + moveq r6, #0 + addne r3, r0, #6 + mov r0, r8 + mov r1, r7 + mov r2, r5 + str r6, [sp] + bl FUN_021FB530 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021FB94C: .word 0x0220EE40 +_021FB950: .word 0x0220EE38 +_021FB954: .word 0x0220EE34 +_021FB958: .word 0x0220EE3C +_021FB95C: .word 0x0220EE48 +_021FB960: .word 0x0220EE50 +_021FB964: .word 0x0220EE58 + + arm_func_start FUN_021FB968 +FUN_021FB968: ; 0x021FB968 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _021FB9F4 ; =0x0220EE5C + mov r5, r0 + bl FUN_021FBBC8 + bl atol + mov r4, r0 + ldr r1, _021FB9F8 ; =0x0220EE38 + mov r0, r5 + bl FUN_021FBBC8 + bl atol + mov r1, r0 + mov r0, #3 + mov r2, #0 + bl FUN_021FBAB0 + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _021FB9FC ; =0x02210F84 + mov r1, r5 + ldr r0, [r0] + bl FUN_021EEFFC + cmp r4, #0 + movgt r1, #1 + mov r2, #0 + str r4, [r0, #8] + movle r1, #0 + mov r0, r5 + mov r3, r2 + str r2, [sp] + bl FUN_021FB530 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FB9F4: .word 0x0220EE5C +_021FB9F8: .word 0x0220EE38 +_021FB9FC: .word 0x02210F84 + + arm_func_start FUN_021FBA00 +FUN_021FBA00: ; 0x021FBA00 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r1, _021FBAA0 ; =0x0220EE64 + mov r6, r0 + bl FUN_021FBBC8 + bl atol + mov r5, r0 + ldr r1, _021FBAA4 ; =0x0220EE38 + mov r0, r6 + bl FUN_021FBBC8 + bl atol + mov r4, r0 + ldr r1, _021FBAA8 ; =0x0220EE6C + mov r0, r6 + bl FUN_021FBBC8 + mov r1, r4 + mov r4, r0 + mov r0, #0 + mov r2, r0 + bl FUN_021FBAB0 + mov r6, r0 + mvn r0, #0 + cmp r6, r0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _021FBAAC ; =0x02210F84 + mov r1, r6 + ldr r0, [r0] + bl FUN_021EEFFC + cmp r5, #0 + movgt r1, #1 + str r5, [r0, #8] + mov r2, #0 + movle r1, #0 + mov r0, r6 + mov r3, r4 + str r2, [sp] + bl FUN_021FB530 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FBAA0: .word 0x0220EE64 +_021FBAA4: .word 0x0220EE38 +_021FBAA8: .word 0x0220EE6C +_021FBAAC: .word 0x02210F84 + + arm_func_start FUN_021FBAB0 +FUN_021FBAB0: ; 0x021FBAB0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r3, _021FBB38 ; =0x02210F84 + mov r7, r0 + ldr r0, [r3] + mov r6, r1 + cmp r0, #0 + mov r5, r2 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, #0 + bl FUN_021EF06C + cmp r0, #0 + ble _021FBB30 + ldr r8, _021FBB38 ; =0x02210F84 +_021FBAE8: + ldr r0, [r8] + mov r1, r4 + bl FUN_021EEFFC + ldr r1, [r0] + cmp r1, r7 + bne _021FBB1C + ldr r1, [r0, #4] + cmp r1, r6 + bne _021FBB1C + ldr r0, [r0, #8] + cmp r0, r5 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_021FBB1C: + ldr r0, [r8] + add r4, r4, #1 + bl FUN_021EF06C + cmp r4, r0 + blt _021FBAE8 +_021FBB30: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021FBB38: .word 0x02210F84 + + arm_func_start FUN_021FBB3C +FUN_021FBB3C: ; 0x021FBB3C + sub r2, r1, #6 + mov r3, r0 + cmp r2, #0 + ble _021FBBB4 +_021FBB4C: + ldrsb r1, [r3] + cmp r1, #0x5c + bne _021FBBA4 + ldrsb r1, [r3, #1] + cmp r1, #0x66 + bne _021FBBA4 + ldrsb r1, [r3, #2] + cmp r1, #0x69 + bne _021FBBA4 + ldrsb r1, [r3, #3] + cmp r1, #0x6e + bne _021FBBA4 + ldrsb r1, [r3, #4] + cmp r1, #0x61 + bne _021FBBA4 + ldrsb r1, [r3, #5] + cmp r1, #0x6c + bne _021FBBA4 + ldrsb r1, [r3, #6] + cmp r1, #0x5c + moveq r0, r3 + bxeq lr +_021FBBA4: + add r3, r3, #1 + sub r1, r3, r0 + cmp r1, r2 + blt _021FBB4C +_021FBBB4: + mov r0, #0 + bx lr + + arm_func_start FUN_021FBBBC +FUN_021FBBBC: ; 0x021FBBBC + ldr ip, _021FBBC4 ; =FUN_021EFF2C + bx ip + .align 2, 0 +_021FBBC4: .word FUN_021EFF2C + + arm_func_start FUN_021FBBC8 +FUN_021FBBC8: ; 0x021FBBC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_021FBBE8 + cmp r0, #0 + ldreq r0, _021FBBE4 ; =0x0220EE58 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021FBBE4: .word 0x0220EE58 + + arm_func_start FUN_021FBBE8 +FUN_021FBBE8: ; 0x021FBBE8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x100 + ldr lr, _021FBCA8 ; =0x0220BBD8 + add ip, sp, #0 + mov r4, r0 + mov r3, #0x80 +_021FBC00: + ldrb r2, [lr], #1 + ldrb r0, [lr], #1 + subs r3, r3, #1 + strb r2, [ip], #1 + strb r0, [ip], #1 + bne _021FBC00 + ldr r2, _021FBCAC ; =0x02210F8C + add r0, sp, #0 + ldr r3, [r2] + eor r3, r3, #1 + str r3, [r2] + bl strcat + ldr r1, _021FBCB0 ; =0x0220EE74 + add r0, sp, #0 + bl strcat + add r1, sp, #0 + mov r0, r4 + bl strstr + movs r4, r0 + addeq sp, sp, #0x100 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, sp, #0 + bl strlen + ldr r1, _021FBCAC ; =0x02210F8C + ldr r2, _021FBCB4 ; =0x02211194 + ldr r1, [r1] + add r3, r4, r0 + add r0, r2, r1, lsl #8 + mov r2, r0 + b _021FBC84 +_021FBC7C: + ldrsb r1, [r3], #1 + strb r1, [r2], #1 +_021FBC84: + ldrsb r1, [r3] + cmp r1, #0 + beq _021FBC98 + cmp r1, #0x5c + bne _021FBC7C +_021FBC98: + mov r1, #0 + strb r1, [r2] + add sp, sp, #0x100 + ldmia sp!, {r4, pc} + .align 2, 0 +_021FBCA8: .word 0x0220BBD8 +_021FBCAC: .word 0x02210F8C +_021FBCB0: .word 0x0220EE74 +_021FBCB4: .word 0x02211194 + + arm_func_start FUN_021FBCB8 +FUN_021FBCB8: ; 0x021FBCB8 + stmdb sp!, {r4, lr} + ldr r2, _021FBCFC ; =0x0220EDD8 + mov r4, #0 + cmp r1, #0 + ldr lr, [r2] + ldmleia sp!, {r4, pc} +_021FBCD0: + ldrsb ip, [r0, r4] + ldrsb r3, [lr] + eor r3, ip, r3 + strb r3, [r0, r4] + ldrsb r3, [lr, #1]! + add r4, r4, #1 + cmp r3, #0 + ldreq lr, [r2] + cmp r4, r1 + blt _021FBCD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_021FBCFC: .word 0x0220EDD8 + + arm_func_start FUN_021FBD00 +FUN_021FBD00: ; 0x021FBD00 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _021FBE48 ; =0x0220EDD4 + mvn r1, #0 + ldr r0, [r0] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _021FBE4C ; =0x02210F88 + ldr r1, [r1] + cmp r1, #5 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021FBBBC + cmp r0, #0 + beq _021FBE2C + ldr r8, _021FBE50 ; =0x02210F80 + ldr sl, _021FBE54 ; =0x02210F90 + ldr sb, _021FBE58 ; =0x02210F7C + ldr r7, _021FBE48 ; =0x0220EDD4 + mov r6, #0x100 + mov r5, #0 +_021FBD54: + ldr r1, [sl] + ldr r0, [sb] + sub r0, r1, r0 + cmp r0, #0x80 + bge _021FBD98 + cmp r1, #0x100 + strlt r6, [sl] + movge r0, r1, lsl #1 + strge r0, [sl] + ldr r1, [sl] + ldr r0, [r8] + add r1, r1, #1 + bl FUN_021DD844 + str r0, [r8] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021FBD98: + ldr r4, [sb] + ldr r1, [r8] + ldr r2, [sl] + ldr r0, [r7] + mov r3, r5 + add r1, r1, r4 + sub r2, r2, r4 + bl FUN_021EFC78 + cmp r0, #0 + bgt _021FBDCC + bl FUN_021FBE7C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021FBDCC: + ldr r2, [sb] + ldr r1, [r8] + add r0, r2, r0 + str r0, [sb] + strb r5, [r1, r0] + ldr r0, [r8] + ldr r1, [sb] + bl FUN_021FB654 + ldr r1, [sb] + mov r4, r0 + cmp r4, r1 + streq r5, [sb] + beq _021FBE1C + ldr r0, [r8] + sub r2, r1, r4 + add r1, r0, r4 + bl memmove + ldr r0, [sb] + sub r0, r0, r4 + str r0, [sb] +_021FBE1C: + ldr r0, [r7] + bl FUN_021FBBBC + cmp r0, #0 + bne _021FBD54 +_021FBE2C: + ldr r1, _021FBE48 ; =0x0220EDD4 + mvn r0, #0 + ldr r1, [r1] + cmp r1, r0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021FBE48: .word 0x0220EDD4 +_021FBE4C: .word 0x02210F88 +_021FBE50: .word 0x02210F80 +_021FBE54: .word 0x02210F90 +_021FBE58: .word 0x02210F7C + + arm_func_start FUN_021FBE5C +FUN_021FBE5C: ; 0x021FBE5C + ldr r1, _021FBE78 ; =0x0220EDD4 + mvn r0, #0 + ldr r1, [r1] + cmp r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_021FBE78: .word 0x0220EDD4 + + arm_func_start FUN_021FBE7C +FUN_021FBE7C: ; 0x021FBE7C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021FBEF8 ; =0x0220EDD4 + mvn r1, #0 + ldr r0, [r0] + cmp r0, r1 + beq _021FBEAC + mov r1, #2 + bl FUN_021EFD80 + ldr r0, _021FBEF8 ; =0x0220EDD4 + ldr r0, [r0] + bl FUN_021EFD9C +_021FBEAC: + ldr r0, _021FBEF8 ; =0x0220EDD4 + mvn r1, #0 + str r1, [r0] + bl FUN_021FB44C + ldr r0, _021FBEFC ; =0x02210F80 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021DD82C + ldr r2, _021FBEFC ; =0x02210F80 + mov r3, #0 + ldr r1, _021FBF00 ; =0x02210F90 + ldr r0, _021FBF04 ; =0x02210F7C + str r3, [r2] + str r3, [r1] + str r3, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021FBEF8: .word 0x0220EDD4 +_021FBEFC: .word 0x02210F80 +_021FBF00: .word 0x02210F90 +_021FBF04: .word 0x02210F7C + + arm_func_start FUN_021FBF08 +FUN_021FBF08: ; 0x021FBF08 + mov ip, #0 +_021FBF0C: + cmp ip, #0 + beq _021FBF30 + cmp ip, #0xd + beq _021FBF30 + ldrb r3, [r0, ip] + ldrb r2, [r1, ip] + cmp r3, r2 + movne r0, #0 + bxne lr +_021FBF30: + add ip, ip, #1 + cmp ip, #0x20 + blt _021FBF0C + mov r0, #1 + bx lr + + arm_func_start FUN_021FBF44 +FUN_021FBF44: ; 0x021FBF44 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, _021FC06C ; =0x0220EE78 + mov r4, r1 + bl strlen + mov r8, r0 + mov r0, r4 + bl FUN_021FC1BC + mov sl, #0 + mov fp, r0 + mov r7, sl +_021FBF74: + cmp fp, #0 + beq _021FBF8C + cmp sl, #0 + beq _021FBF8C + cmp sl, #0xd + bne _021FBFBC +_021FBF8C: + bl rand + ldr r1, _021FC070 ; =0x2C0B02C1 + smull r2, r3, r1, r0 + mov r3, r3, asr #4 + mov r1, r0, lsr #0x1f + add r3, r1, r3 + ldr r1, _021FC074 ; =0x0000005D + smull r2, r3, r1, r3 + sub r3, r0, r2 + add r0, r3, #0x21 + strb r0, [r5, sl] + b _021FC04C +_021FBFBC: + cmp sl, #1 + beq _021FBFCC + cmp sl, #0xe + bne _021FBFD4 +_021FBFCC: + ldrsb sb, [r4, sl] + b _021FBFDC +_021FBFD4: + sub r0, sl, #1 + ldrsb sb, [r4, r0] +_021FBFDC: + ldrb r6, [r4, sl] + mov r1, r8 + add r0, sl, r6 + bl _s32_div_f + mul r0, sb, r7 + mov sb, r1 + mov r1, r8 + bl _s32_div_f + ldr r0, _021FC06C ; =0x0220EE78 + ldrsb r3, [r0, sb] + ldrsb r2, [r0, r1] + mla r0, sl, r6, r3 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #27 + add r0, r1, r0, ror #27 + ldrb r0, [r4, r0] + eor r0, r0, r2 + bl abs + ldr r1, _021FC070 ; =0x2C0B02C1 + smull r2, r3, r1, r0 + mov r3, r3, asr #4 + mov r1, r0, lsr #0x1f + add r3, r1, r3 + ldr r1, _021FC074 ; =0x0000005D + smull r2, r3, r1, r3 + sub r3, r0, r2 + add r0, r3, #0x21 + strb r0, [r5, sl] +_021FC04C: + ldr r0, _021FC078 ; =0x00004647 + add sl, sl, #1 + cmp sl, #0x20 + add r7, r7, r0 + blt _021FBF74 + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021FC06C: .word 0x0220EE78 +_021FC070: .word 0x2C0B02C1 +_021FC074: .word 0x0000005D +_021FC078: .word 0x00004647 + + arm_func_start FUN_021FC07C +FUN_021FC07C: ; 0x021FC07C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + movs sl, r0 + bne _021FC0A0 + ldr r0, _021FC1AC ; =0x0220EE9C + ldr r1, _021FC1B0 ; =0x0220EEA4 + mov r2, #0 + mov r3, #0x2b + bl __msl_assertion_failed +_021FC0A0: + bl FUN_021F025C + bl srand + bl rand + ldr r1, _021FC1B4 ; =0x2C0B02C1 + mov r2, r0, lsr #0x1f + smull r3, r4, r1, r0 + mov r8, #0 + mov r4, r4, asr #4 + mov sb, #1 + ldr r1, _021FC1B8 ; =0x0000005D + add r4, r2, r4 + smull r2, r3, r1, r4 + sub r4, r0, r2 + add r0, r4, #0x21 + strb r0, [sl] + mov r5, r8 + mov r6, sb + mov fp, r8 + mov r4, sb +_021FC0EC: + sub r0, sb, #1 + ldrb r2, [sl, r0] + ldrb r3, [sl] + add r7, sl, sb + cmp r2, r3 + eor r2, sb, r2 + movlo r0, r6 + and r2, r2, #1 + movhs r0, r5 + cmp r3, #0x4f + movlo r1, r4 + and r3, r3, #1 + eor r2, r8, r2 + movhs r1, fp + eor r2, r3, r2 + eor r1, r2, r1 + eor r8, r1, r0 + bl rand + ldr r2, _021FC1B4 ; =0x2C0B02C1 + cmp r8, #0 + smull r3, r1, r2, r0 + mov r1, r1, asr #4 + mov r2, r0, lsr #0x1f + add r1, r2, r1 + ldr r2, _021FC1B8 ; =0x0000005D + smull r1, r3, r2, r1 + sub r1, r0, r1 + add r0, r1, #0x21 + strb r0, [sl, sb] + beq _021FC170 + ldrb r0, [r7] + ands r0, r0, #1 + beq _021FC188 +_021FC170: + cmp r8, #0 + bne _021FC194 + ldrb r0, [r7] + and r0, r0, #1 + cmp r0, #1 + bne _021FC194 +_021FC188: + ldrb r0, [r7] + add r0, r0, #1 + strb r0, [r7] +_021FC194: + add sb, sb, #1 + cmp sb, #0x20 + blt _021FC0EC + mov r0, sl + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021FC1AC: .word 0x0220EE9C +_021FC1B0: .word 0x0220EEA4 +_021FC1B4: .word 0x2C0B02C1 +_021FC1B8: .word 0x0000005D + + arm_func_start FUN_021FC1BC +FUN_021FC1BC: ; 0x021FC1BC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldrb r4, [r0] + mov r6, #0 + mov r5, #1 + and lr, r4, #1 + mov r3, r6 + mov ip, r5 + mov r1, r6 + mov r2, r5 +_021FC1E4: + sub r7, r5, #1 + ldrb sb, [r0, r7] + cmp sb, r4 + eor sb, r5, sb + movlo r7, ip + and sb, sb, #1 + movhs r7, r3 + cmp r4, #0x4f + movlo r8, r2 + eor r6, r6, sb + movhs r8, r1 + eor r6, lr, r6 + eor r6, r6, r8 + eors r6, r6, r7 + beq _021FC22C + ldrb r7, [r0, r5] + ands r7, r7, #1 + beq _021FC244 +_021FC22C: + cmp r6, #0 + bne _021FC250 + ldrb r7, [r0, r5] + and r7, r7, #1 + cmp r7, #1 + bne _021FC250 +_021FC244: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FC250: + add r5, r5, #1 + cmp r5, #0x20 + blt _021FC1E4 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021FC268 +FUN_021FC268: ; 0x021FC268 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mvn r1, #0 + mov r6, r0 + cmp r5, r1 + ldreq r0, [r6, #8] + mov r4, r2 + subeq r5, r0, r4 + ldr r0, [r6, #8] + cmp r5, r0 + ble _021FC2A8 + ldr r0, _021FC2F8 ; =0x0220EEB0 + ldr r1, _021FC2FC ; =0x0220EEC8 + mov r2, #0 + mov r3, #0x4f + bl __msl_assertion_failed +_021FC2A8: + ldr r0, [r6, #8] + sub r0, r0, r5 + cmp r4, r0 + ble _021FC2CC + ldr r0, _021FC300 ; =0x0220EED4 + ldr r1, _021FC2FC ; =0x0220EEC8 + mov r2, #0 + mov r3, #0x50 + bl __msl_assertion_failed +_021FC2CC: + ldr r0, [r6] + ldr r1, [r6, #8] + add r0, r0, r5 + sub r2, r1, r5 + add r1, r0, r4 + sub r2, r2, r4 + bl memmove + ldr r0, [r6, #8] + sub r0, r0, r4 + str r0, [r6, #8] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FC2F8: .word 0x0220EEB0 +_021FC2FC: .word 0x0220EEC8 +_021FC300: .word 0x0220EED4 + + arm_func_start FUN_021FC304 +FUN_021FC304: ; 0x021FC304 + stmdb sp!, {r4, r5, r6, lr} + movs r5, r1 + mov r6, r0 + mov r4, r2 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mvn r0, #0 + cmp r4, r0 + bne _021FC338 + mov r0, r5 + bl strlen + mov r4, r0 +_021FC338: + ldr r1, [r6, #8] + ldr r0, [r6, #4] + add r1, r1, r4 + cmp r1, r0 + ble _021FC360 + ldr r0, _021FC388 ; =0x0220EEF8 + ldr r1, _021FC38C ; =0x0220EEC8 + mov r2, #0 + mov r3, #0x40 + bl __msl_assertion_failed +_021FC360: + ldr r3, [r6] + ldr r0, [r6, #8] + mov r1, r5 + mov r2, r4 + add r0, r3, r0 + bl memcpy + ldr r0, [r6, #8] + add r0, r0, r4 + str r0, [r6, #8] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021FC388: .word 0x0220EEF8 +_021FC38C: .word 0x0220EEC8 + + arm_func_start FUN_021FC390 +FUN_021FC390: ; 0x021FC390 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r2, [r5, #8] + ldr r0, [r5, #4] + add r2, r2, #2 + mov r4, r1 + cmp r2, r0 + ble _021FC3C8 + ldr r0, _021FC3FC ; =0x0220EF1C + ldr r1, _021FC400 ; =0x0220EEC8 + mov r2, #0 + mov r3, #0x2e + bl __msl_assertion_failed +_021FC3C8: + ldr r2, [r5, #8] + mov r1, r4, asr #8 + add r0, r2, #1 + str r0, [r5, #8] + ldr r0, [r5] + strb r1, [r0, r2] + ldr r1, [r5, #8] + add r0, r1, #1 + str r0, [r5, #8] + ldr r0, [r5] + strb r4, [r0, r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FC3FC: .word 0x0220EF1C +_021FC400: .word 0x0220EEC8 + + arm_func_start FUN_021FC404 +FUN_021FC404: ; 0x021FC404 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r2, [r5, #8] + ldr r0, [r5, #4] + mov r4, r1 + cmp r2, r0 + blt _021FC438 + ldr r0, _021FC454 ; =0x0220EF40 + ldr r1, _021FC458 ; =0x0220EEC8 + mov r2, #0 + mov r3, #0x23 + bl __msl_assertion_failed +_021FC438: + ldr r1, [r5, #8] + add r0, r1, #1 + str r0, [r5, #8] + ldr r0, [r5] + strb r4, [r0, r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FC454: .word 0x0220EF40 +_021FC458: .word 0x0220EEC8 + + arm_func_start FUN_021FC45C +FUN_021FC45C: ; 0x021FC45C + ldr r1, [r0, #4] + ldr r0, [r0, #8] + sub r0, r1, r0 + bx lr + + arm_func_start FUN_021FC46C +FUN_021FC46C: ; 0x021FC46C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl FUN_021DD860 + str r0, [r5] + ldr r0, [r5] + cmp r0, #0 + moveq r0, #0 + strne r4, [r5, #4] + movne r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FC4A4 +FUN_021FC4A4: ; 0x021FC4A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r4, [sp, #0x24] + mov r6, r2 + mov r2, #0 + movs r8, r0 + mov r7, r1 + mov r5, r3 + str r2, [r4] + bne _021FC4DC + ldr r0, _021FC590 ; =0x0220EF5C + ldr r1, _021FC594 ; =0x0220EF64 + ldr r3, _021FC598 ; =0x00000197 + bl __msl_assertion_failed +_021FC4DC: + cmp r8, #0 + addeq sp, sp, #8 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r8, #0x30] + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _021FC514 + cmp r5, #0 + bne _021FC51C +_021FC514: + mov r5, #0 + str r5, [sp, #0x20] +_021FC51C: + ldr r1, [r8, #0x1c] + ldr r0, [sp, #0x20] + add r1, r1, #1 + str r1, [r8, #0x1c] + str r0, [sp] + ldr ip, [r8, #0x30] + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, r5 + blx ip + str r0, [r4] + ldr r0, [r8, #0x1c] + sub r0, r0, #1 + str r0, [r8, #0x1c] + ldr r0, [r8, #0x14] + cmp r0, #0 + beq _021FC584 + ldr r0, [r8, #0x1c] + cmp r0, #0 + bne _021FC584 + mov r0, r8 + bl FUN_021FF9CC + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FC584: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021FC590: .word 0x0220EF5C +_021FC594: .word 0x0220EF64 +_021FC598: .word 0x00000197 + + arm_func_start FUN_021FC59C +FUN_021FC59C: ; 0x021FC59C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021FC5CC + ldr r0, _021FC6BC ; =0x0220EF5C + ldr r1, _021FC6C0 ; =0x0220EF64 + mov r2, #0 + mov r3, #0x160 + bl __msl_assertion_failed +_021FC5CC: + cmp r7, #0 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp, #0x2c] + cmp r0, #0 + ldrne ip, [r7, #0x28] + ldreq ip, [r7, #0x2c] + cmp ip, #0 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _021FC614 + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _021FC620 +_021FC614: + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] +_021FC620: + ldr r0, [r7, #0x1c] + cmp r6, #0 + add r0, r0, #1 + str r0, [r7, #0x1c] + ldrne r0, [r6, #0x24] + ldr r1, [sp, #0x20] + addne r0, r0, #1 + strne r0, [r6, #0x24] + str r1, [sp] + ldr r0, [sp, #0x24] + ldr lr, [sp, #0x28] + str r0, [sp, #4] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str lr, [sp, #8] + blx ip + ldr r0, [r7, #0x1c] + cmp r6, #0 + sub r0, r0, #1 + str r0, [r7, #0x1c] + ldrne r0, [r6, #0x24] + subne r0, r0, #1 + strne r0, [r6, #0x24] + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021FC6B0 + ldr r0, [r7, #0x1c] + cmp r0, #0 + bne _021FC6B0 + mov r0, r7 + bl FUN_021FF9CC + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FC6B0: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FC6BC: .word 0x0220EF5C +_021FC6C0: .word 0x0220EF64 + + arm_func_start FUN_021FC6C4 +FUN_021FC6C4: ; 0x021FC6C4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021FC6F4 + ldr r0, _021FC7C8 ; =0x0220EF74 + ldr r1, _021FC7CC ; =0x0220EF64 + ldr r3, _021FC7D0 ; =0x0000012D + mov r2, #0 + bl __msl_assertion_failed +_021FC6F4: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r7, #0x9c] + mov r1, r6 + bl FUN_021EEFFC + movs lr, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + beq _021FC730 + cmp r5, #0 + bne _021FC738 +_021FC730: + mov r5, #0 + mov r4, r5 +_021FC738: + ldr r0, [r7, #0x24] + ldr r2, [sp, #0x18] + add r0, r0, #1 + str r0, [r7, #0x24] + ldr ip, [r7, #8] + mov r0, r7 + ldr r3, [ip, #0x1c] + mov r1, r6 + add r3, r3, #1 + str r3, [ip, #0x1c] + str r2, [sp] + ldr r6, [lr] + mov r2, r5 + mov r3, r4 + blx r6 + ldr r0, [r7, #0x24] + sub r0, r0, #1 + str r0, [r7, #0x24] + ldr r1, [r7, #8] + ldr r0, [r1, #0x1c] + sub r0, r0, #1 + str r0, [r1, #0x1c] + ldr r0, [r7, #8] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021FC7BC + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _021FC7BC + bl FUN_021FF9CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FC7BC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FC7C8: .word 0x0220EF74 +_021FC7CC: .word 0x0220EF64 +_021FC7D0: .word 0x0000012D + + arm_func_start FUN_021FC7D4 +FUN_021FC7D4: ; 0x021FC7D4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021FC804 + ldr r0, _021FC8D8 ; =0x0220EF74 + ldr r1, _021FC8DC ; =0x0220EF64 + ldr r3, _021FC8E0 ; =0x00000101 + mov r2, #0 + bl __msl_assertion_failed +_021FC804: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r7, #0x98] + mov r1, r6 + bl FUN_021EEFFC + movs lr, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + beq _021FC840 + cmp r5, #0 + bne _021FC848 +_021FC840: + mov r5, #0 + mov r4, r5 +_021FC848: + ldr r0, [r7, #0x24] + ldr r2, [sp, #0x18] + add r0, r0, #1 + str r0, [r7, #0x24] + ldr ip, [r7, #8] + mov r0, r7 + ldr r3, [ip, #0x1c] + mov r1, r6 + add r3, r3, #1 + str r3, [ip, #0x1c] + str r2, [sp] + ldr r6, [lr] + mov r2, r5 + mov r3, r4 + blx r6 + ldr r0, [r7, #0x24] + sub r0, r0, #1 + str r0, [r7, #0x24] + ldr r1, [r7, #8] + ldr r0, [r1, #0x1c] + sub r0, r0, #1 + str r0, [r1, #0x1c] + ldr r0, [r7, #8] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021FC8CC + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _021FC8CC + bl FUN_021FF9CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FC8CC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FC8D8: .word 0x0220EF74 +_021FC8DC: .word 0x0220EF64 +_021FC8E0: .word 0x00000101 + + arm_func_start FUN_021FC8E4 +FUN_021FC8E4: ; 0x021FC8E4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r4, r0 + mov r5, r1 + bne _021FC90C + ldr r0, _021FC9B0 ; =0x0220EF74 + ldr r1, _021FC9B4 ; =0x0220EF64 + mov r2, #0 + mov r3, #0xd9 + bl __msl_assertion_failed +_021FC90C: + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r4, #0x34] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + ldr r1, [r4, #0x24] + mov r0, r4 + add r1, r1, #1 + str r1, [r4, #0x24] + ldr r3, [r4, #8] + mov r1, r5 + ldr r2, [r3, #0x1c] + add r2, r2, #1 + str r2, [r3, #0x1c] + ldr r2, [r4, #0x34] + blx r2 + ldr r0, [r4, #0x24] + sub r0, r0, #1 + str r0, [r4, #0x24] + ldr r1, [r4, #8] + ldr r0, [r1, #0x1c] + sub r0, r0, #1 + str r0, [r1, #0x1c] + ldr r0, [r4, #8] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021FC9A4 + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _021FC9A4 + bl FUN_021FF9CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021FC9A4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FC9B0: .word 0x0220EF74 +_021FC9B4: .word 0x0220EF64 + + arm_func_start FUN_021FC9B8 +FUN_021FC9B8: ; 0x021FC9B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r4, r0 + mov r5, r1 + bne _021FC9E0 + ldr r0, _021FCA84 ; =0x0220EF74 + ldr r1, _021FCA88 ; =0x0220EF64 + mov r2, #0 + mov r3, #0xba + bl __msl_assertion_failed +_021FC9E0: + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r4, #0x30] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + ldr r1, [r4, #0x24] + mov r0, r4 + add r1, r1, #1 + str r1, [r4, #0x24] + ldr r3, [r4, #8] + mov r1, r5 + ldr r2, [r3, #0x1c] + add r2, r2, #1 + str r2, [r3, #0x1c] + ldr r2, [r4, #0x30] + blx r2 + ldr r0, [r4, #0x24] + sub r0, r0, #1 + str r0, [r4, #0x24] + ldr r1, [r4, #8] + ldr r0, [r1, #0x1c] + sub r0, r0, #1 + str r0, [r1, #0x1c] + ldr r0, [r4, #8] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021FCA78 + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _021FCA78 + bl FUN_021FF9CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_021FCA78: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FCA84: .word 0x0220EF74 +_021FCA88: .word 0x0220EF64 + + arm_func_start FUN_021FCA8C +FUN_021FCA8C: ; 0x021FCA8C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021FCABC + ldr r0, _021FCB80 ; =0x0220EF74 + ldr r1, _021FCB84 ; =0x0220EF64 + mov r2, #0 + mov r3, #0x94 + bl __msl_assertion_failed +_021FCABC: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r7, #0x2c] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r5, #0 + beq _021FCAF0 + cmp r6, #0 + bne _021FCAF8 +_021FCAF0: + mov r6, #0 + mov r5, r6 +_021FCAF8: + ldr r1, [r7, #0x24] + mov r0, r7 + add r1, r1, #1 + str r1, [r7, #0x24] + ldr ip, [r7, #8] + mov r1, r6 + ldr r3, [ip, #0x1c] + mov r2, r5 + add r3, r3, #1 + str r3, [ip, #0x1c] + ldr r5, [r7, #0x2c] + mov r3, r4 + blx r5 + ldr r0, [r7, #0x24] + sub r0, r0, #1 + str r0, [r7, #0x24] + ldr r1, [r7, #8] + ldr r0, [r1, #0x1c] + sub r0, r0, #1 + str r0, [r1, #0x1c] + ldr r0, [r7, #8] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021FCB74 + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _021FCB74 + bl FUN_021FF9CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FCB74: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FCB80: .word 0x0220EF74 +_021FCB84: .word 0x0220EF64 + + arm_func_start FUN_021FCB88 +FUN_021FCB88: ; 0x021FCB88 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _021FCBB8 + ldr r0, _021FCC80 ; =0x0220EF74 + ldr r1, _021FCC84 ; =0x0220EF64 + mov r2, #0 + mov r3, #0x69 + bl __msl_assertion_failed +_021FCBB8: + cmp r7, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + str r6, [r7, #0x18] + ldr r0, [r7, #0x28] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #0 + beq _021FCBF0 + cmp r5, #0 + bne _021FCBF8 +_021FCBF0: + mov r5, #0 + mov r4, r5 +_021FCBF8: + ldr r1, [r7, #0x24] + mov r0, r7 + add r1, r1, #1 + str r1, [r7, #0x24] + ldr ip, [r7, #8] + mov r1, r6 + ldr r3, [ip, #0x1c] + mov r2, r5 + add r3, r3, #1 + str r3, [ip, #0x1c] + ldr r5, [r7, #0x28] + mov r3, r4 + blx r5 + ldr r0, [r7, #0x24] + sub r0, r0, #1 + str r0, [r7, #0x24] + ldr r1, [r7, #8] + ldr r0, [r1, #0x1c] + sub r0, r0, #1 + str r0, [r1, #0x1c] + ldr r0, [r7, #8] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021FCC74 + ldr r1, [r0, #0x1c] + cmp r1, #0 + bne _021FCC74 + bl FUN_021FF9CC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FCC74: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FCC80: .word 0x0220EF74 +_021FCC84: .word 0x0220EF64 + + arm_func_start FUN_021FCC88 +FUN_021FCC88: ; 0x021FCC88 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + beq _021FCCAC + cmp r6, #0 + bne _021FCCC0 +_021FCCAC: + ldr r0, _021FCDAC ; =0x0220EF80 + ldr r1, _021FCDB0 ; =0x0220EF64 + mov r2, #0 + mov r3, #0x3d + bl __msl_assertion_failed +_021FCCC0: + cmp r7, #0 + beq _021FCCD0 + cmp r6, #0 + bne _021FCCDC +_021FCCD0: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FCCDC: + ldr r0, [r7, #0x20] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _021FCD08 + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _021FCD14 +_021FCD08: + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] +_021FCD14: + ldr r1, [r7, #0x1c] + ldr r0, [sp, #0x20] + add r1, r1, #1 + str r1, [r7, #0x1c] + ldr r2, [r6, #0x24] + ldr r1, [sp, #0x24] + add r2, r2, #1 + str r2, [r6, #0x24] + str r0, [sp] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #8] + ldr ip, [r7, #0x20] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + blx ip + ldr r0, [r7, #0x1c] + sub r0, r0, #1 + str r0, [r7, #0x1c] + ldr r0, [r6, #0x24] + sub r0, r0, #1 + str r0, [r6, #0x24] + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021FCDA0 + ldr r0, [r7, #0x1c] + cmp r0, #0 + bne _021FCDA0 + mov r0, r7 + bl FUN_021FF9CC + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FCDA0: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FCDAC: .word 0x0220EF80 +_021FCDB0: .word 0x0220EF64 + + arm_func_start FUN_021FCDB4 +FUN_021FCDB4: ; 0x021FCDB4 + stmdb sp!, {r4, lr} + movs r4, r0 + bne _021FCDD4 + ldr r0, _021FCE44 ; =0x0220EF5C + ldr r1, _021FCE48 ; =0x0220EF64 + mov r2, #0 + mov r3, #0x1b + bl __msl_assertion_failed +_021FCDD4: + cmp r4, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x24] + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0x1c] + mov r0, r4 + add r1, r1, #1 + str r1, [r4, #0x1c] + ldr r1, [r4, #0x24] + blx r1 + ldr r0, [r4, #0x1c] + sub r0, r0, #1 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021FCE3C + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _021FCE3C + mov r0, r4 + bl FUN_021FF9CC + mov r0, #0 + ldmia sp!, {r4, pc} +_021FCE3C: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021FCE44: .word 0x0220EF5C +_021FCE48: .word 0x0220EF64 + + arm_func_start FUN_021FCE4C +FUN_021FCE4C: ; 0x021FCE4C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _021FCE64 + bl FUN_021DD82C +_021FCE64: + ldr r0, [r4, #0x44] + cmp r0, #0 + beq _021FCE74 + bl FUN_021DD82C +_021FCE74: + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _021FCE84 + bl FUN_021DD82C +_021FCE84: + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _021FCE94 + bl FUN_021EF074 +_021FCE94: + ldr r0, [r4, #0x60] + cmp r0, #0 + beq _021FCEA4 + bl FUN_021EF074 +_021FCEA4: + ldr r0, [r4, #0x98] + cmp r0, #0 + beq _021FCEB4 + bl FUN_021EF074 +_021FCEB4: + ldr r0, [r4, #0x9c] + cmp r0, #0 + beq _021FCEC4 + bl FUN_021EF074 +_021FCEC4: + mov r0, r4 + bl FUN_021DD82C + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FCED0 +FUN_021FCED0: ; 0x021FCED0 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [sp, #8] + ldr r0, [r1, #0xc] + cmp r0, #7 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + addeq sp, sp, #0x10 + bxeq lr + mov r0, #7 + str r0, [r1, #0xc] + ldr r0, [sp, #8] + add r1, sp, #8 + ldr r0, [r0, #8] + ldr r0, [r0, #0xc] + bl FUN_021EF3F4 + ldr r0, [sp, #8] + add r1, sp, #8 + ldr r0, [r0, #8] + ldr r0, [r0, #0x10] + bl FUN_021EEFA8 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FCF38 +FUN_021FCF38: ; 0x021FCF38 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + beq _021FCF78 + ldr r1, [r4, #0xc] + cmp r1, #7 + ldmgeia sp!, {r4, pc} + bl FUN_021FCED0 + mov r0, r4 + bl FUN_021FD828 + mov r0, r4 + mov r1, #0 + bl FUN_021FC9B8 + mov r0, r4 + bl FUN_021FF6BC + ldmia sp!, {r4, pc} +_021FCF78: + mov r1, #6 + str r1, [r4, #0xc] + bl FUN_021FDA74 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FCF88 +FUN_021FCF88: ; 0x021FCF88 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + bl FUN_021FD108 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FUN_021FD004 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FUN_021FD090 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FUN_021FD044 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FD004 +FUN_021FD004: ; 0x021FD004 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, [r0, #0x88] + ldr r2, _021FD040 ; =0x00007530 + sub r1, r1, r3 + cmp r1, r2 + bls _021FD034 + bl FUN_021FDA18 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} +_021FD034: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021FD040: .word 0x00007530 + + arm_func_start FUN_021FD044 +FUN_021FD044: ; 0x021FD044 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, [r0, #0x90] + cmp r2, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + ldr r2, [r0, #0x94] + sub r1, r1, r2 + cmp r1, #0x64 + bls _021FD084 + bl FUN_021FD8E4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} +_021FD084: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FD090 +FUN_021FD090: ; 0x021FD090 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + ldr r0, [r7, #0x60] + mov r6, r1 + bl FUN_021EF06C + mov r4, r0 + cmp r4, #0 + mov r5, #0 + ble _021FD0FC +_021FD0B8: + ldr r0, [r7, #0x60] + mov r1, r5 + bl FUN_021EEFFC + mov r1, r0 + ldr r0, [r1, #0xc] + sub r0, r6, r0 + cmp r0, #0x3e8 + bls _021FD0F0 + mov r0, r7 + bl FUN_021FD760 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021FD0F0: + add r5, r5, #1 + cmp r5, r4 + blt _021FD0B8 +_021FD0FC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021FD108 +FUN_021FD108: ; 0x021FD108 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r2, [r4, #0xc] + cmp r2, #5 + bge _021FD1A0 + ldr r0, [r4, #0x10] + mov r3, #0 + cmp r0, #0 + beq _021FD14C + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _021FD168 + ldr r0, [r4, #0x1c] + sub r0, r1, r0 + cmp r0, r2 + movhi r3, #1 + b _021FD168 +_021FD14C: + cmp r2, #4 + bge _021FD168 + ldr r2, [r4, #0x1c] + ldr r0, _021FD1A8 ; =0x0000EA60 + sub r1, r1, r2 + cmp r1, r0 + movhi r3, #1 +_021FD168: + cmp r3, #0 + beq _021FD1A0 + mov r0, r4 + bl FUN_021FD828 + mov r0, r4 + bl FUN_021FCED0 + mov r2, #0 + mov r0, r4 + mov r3, r2 + mov r1, #6 + bl FUN_021FCB88 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_021FD1A0: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_021FD1A8: .word 0x0000EA60 + + arm_func_start FUN_021FD1AC +FUN_021FD1AC: ; 0x021FD1AC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + str r2, [sp] + mov r3, r1 + ldrh r2, [r4, #4] + ldr r0, [r4, #8] + ldr r1, [r4] + bl FUN_021FF50C + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021F025C + str r0, [r4, #0x88] + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FD1F4 +FUN_021FD1F4: ; 0x021FD1F4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0xc] + cmp r0, #4 + ldmneia sp!, {r4, lr} + addne sp, sp, #0x10 + bxne lr + add r0, sp, #0xc + add r1, sp, #0x10 + bl FUN_021FFCDC + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + mov r0, r4 + bl FUN_021FDAD0 + mov r0, #6 + str r0, [r4, #0xc] + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FD24C +FUN_021FD24C: ; 0x021FD24C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r2, [r5, #0x14] + mov r4, r1 + cmp r2, #0 + movne r0, #0 + addne sp, sp, #4 + strne r0, [r5, #0x14] + ldmneia sp!, {r4, r5, pc} + mov r2, #0 + str r2, [r5, #0x14] + ldr r1, [r5, #0xc] + cmp r1, #4 + addne sp, sp, #4 + movne r0, r2 + ldmneia sp!, {r4, r5, pc} + bl FUN_021FDB44 + mov r0, #5 + cmp r4, #0 + str r0, [r5, #0xc] + addne ip, r5, #0x28 + ldmneia r4, {r0, r1, r2, r3} + stmneia ip, {r0, r1, r2, r3} + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FD2B8 +FUN_021FD2B8: ; 0x021FD2B8 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x24 + mov r5, r0 + add r0, sp, #0x34 + add r1, sp, #0x38 + mov r4, r3 + bl FUN_021FFCDC + ldr r0, [sp, #0x38] + cmp r0, #0 + ble _021FD31C + bl FUN_021DD860 + str r0, [r5, #0x38] + ldr r0, [r5, #0x38] + cmp r0, #0 + addeq sp, sp, #0x24 + moveq r0, #1 + ldmeqia sp!, {r4, r5, lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x38] + bl memcpy + ldr r0, [sp, #0x38] + str r0, [r5, #0x3c] +_021FD31C: + cmp r4, #0 + addne ip, r5, #0x28 + ldmneia r4, {r0, r1, r2, r3} + stmneia ip, {r0, r1, r2, r3} + add r0, sp, #0 + bl FUN_021FC07C + add r1, sp, #0 + add r0, r5, #0x68 + bl FUN_021FBF44 + add r1, sp, #0 + mov r0, r5 + bl FUN_021FDCB4 + mov r0, #0 + str r0, [r5, #0xc] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FD364 +FUN_021FD364: ; 0x021FD364 + stmdb sp!, {r4, lr} + mov r4, r1 + bl FUN_021FF790 + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, [r4] + mov r1, #2 + str r1, [r0, #0xc] + ldr r1, [r4] + mov r0, #0 + str r0, [r1, #0x10] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FD394 +FUN_021FD394: ; 0x021FD394 + stmdb sp!, {r4, lr} + mov r4, r1 + bl FUN_021FF790 + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, [r4] + mov r0, #0 + str r0, [r1, #0xc] + ldr r1, [r4] + mov r2, #1 + str r2, [r1, #0x10] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FD3C4 +FUN_021FD3C4: ; 0x021FD3C4 + stmdb sp!, {r4, lr} + movs r4, r0 + bne _021FD3E4 + ldr r0, _021FD3EC ; =0x0220EF98 + ldr r1, _021FD3F0 ; =0x0220EFA4 + ldr r3, _021FD3F4 ; =0x000001A3 + mov r2, #0 + bl __msl_assertion_failed +_021FD3E4: + ldr r0, [r4, #0x40] + ldmia sp!, {r4, pc} + .align 2, 0 +_021FD3EC: .word 0x0220EF98 +_021FD3F0: .word 0x0220EFA4 +_021FD3F4: .word 0x000001A3 + + arm_func_start FUN_021FD3F8 +FUN_021FD3F8: ; 0x021FD3F8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r0 + mov r4, r1 + bne _021FD420 + ldr r0, _021FD42C ; =0x0220EF98 + ldr r1, _021FD430 ; =0x0220EFA4 + mov r2, #0 + mov r3, #0x19c + bl __msl_assertion_failed +_021FD420: + str r4, [r5, #0x40] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FD42C: .word 0x0220EF98 +_021FD430: .word 0x0220EFA4 + + arm_func_start FUN_021FD434 +FUN_021FD434: ; 0x021FD434 + str r1, [r0, #0x30] + bx lr + + arm_func_start FUN_021FD43C +FUN_021FD43C: ; 0x021FD43C + ldr r0, [r0] + bx lr + + arm_func_start FUN_021FD444 +FUN_021FD444: ; 0x021FD444 + ldr r1, [r0, #0x54] + ldr r0, [r0, #0x58] + sub r0, r1, r0 + bx lr + + arm_func_start FUN_021FD454 +FUN_021FD454: ; 0x021FD454 + ldrh r0, [r0, #8] + bx lr + + arm_func_start FUN_021FD45C +FUN_021FD45C: ; 0x021FD45C + ldr ip, _021FD470 ; =FUN_021EF2E4 + ldr r0, [r0, #0xc] + ldr r1, _021FD474 ; =FUN_021FD478 + mov r2, #0 + bx ip + .align 2, 0 +_021FD470: .word FUN_021EF2E4 +_021FD474: .word FUN_021FD478 + + arm_func_start FUN_021FD478 +FUN_021FD478: ; 0x021FD478 + ldr ip, _021FD484 ; =FUN_021FD488 + ldr r0, [r0] + bx ip + .align 2, 0 +_021FD484: .word FUN_021FD488 + + arm_func_start FUN_021FD488 +FUN_021FD488: ; 0x021FD488 + ldr ip, _021FD494 ; =FUN_021FCF38 + mov r1, #1 + bx ip + .align 2, 0 +_021FD494: .word FUN_021FCF38 + + arm_func_start FUN_021FD498 +FUN_021FD498: ; 0x021FD498 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5, #0xc] + mov r4, r3 + cmp r0, #5 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, lr} + addne sp, sp, #0x10 + bxne lr + add r0, sp, #0x14 + add r1, sp, #0x18 + bl FUN_021FFCDC + ldr r0, [r5, #0x98] + bl FUN_021EF06C + cmp r0, #0 + beq _021FD508 + str r4, [sp] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + mov r0, r5 + mov r1, #0 + bl FUN_021FC7D4 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + add sp, sp, #0x10 + bx lr +_021FD508: + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + mov r0, r5 + mov r3, r4 + bl FUN_021FD738 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FD52C +FUN_021FD52C: ; 0x021FD52C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r6, r0 + mov r5, r1 + mov r0, r2 + add r1, sp, #8 + add r2, sp, #0 + mov r4, r3 + bl FUN_021FFD28 + cmp r0, #0 + beq _021FD570 + ldr r2, [sp, #8] + cmp r2, #0 + beq _021FD570 + ldrh r3, [sp] + cmp r3, #0 + bne _021FD57C +_021FD570: + add sp, sp, #0x10 + mov r0, #4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FD57C: + mov r1, r2, lsr #0x18 + mov r0, r2, lsr #8 + mov r7, r2, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov ip, r2, lsl #0x18 + orr r0, r1, r0 + and r7, r7, #0xff0000 + and r1, ip, #0xff000000 + orr r0, r7, r0 + orr r0, r1, r0 + and r0, r0, #0xe0000000 + cmp r0, #-0x20000000 + addeq sp, sp, #0x10 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r1, sp, #4 + mov r0, r6 + bl FUN_021FD394 + cmp r0, #0 + addne sp, sp, #0x10 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x2c] + ldr r0, [sp, #4] + ldr r2, [sp, #0x28] + str r1, [r0, #0x20] + ldr r0, [sp, #4] + ldr r3, [sp, #0x30] + mov r1, r4 + bl FUN_021FD2B8 + movs r4, r0 + beq _021FD610 + ldr r0, [sp, #4] + bl FUN_021FF6BC + add sp, sp, #0x10 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FD610: + ldr r0, [sp, #0x34] + cmp r0, #0 + bne _021FD634 + cmp r5, #0 + ldrne r0, [sp, #4] + add sp, sp, #0x10 + strne r0, [r5] + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FD634: + ldr r1, [sp, #4] + ldr r0, [r1, #0x24] + add r0, r0, #1 + str r0, [r1, #0x24] + mov r4, #0 + mov r7, #1 +_021FD64C: + mov r0, r6 + bl FUN_021FD6D4 + ldr r0, [sp, #4] + ldr r0, [r0, #0xc] + cmp r0, #5 + movge r8, r7 + movlt r8, r4 + cmp r8, #0 + bne _021FD678 + mov r0, r7 + bl FUN_021F0250 +_021FD678: + cmp r8, #0 + beq _021FD64C + ldr r1, [sp, #4] + ldr r0, [r1, #0x24] + sub r0, r0, #1 + str r0, [r1, #0x24] + ldr r1, [sp, #4] + ldr r0, [r1, #0xc] + cmp r0, #5 + streq r1, [r5] + ldr r0, [sp, #4] + ldr r0, [r0, #0x18] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_021FD6B0 +FUN_021FD6B0: ; 0x021FD6B0 + ldr ip, _021FD6B8 ; =FUN_021FD1F4 + bx ip + .align 2, 0 +_021FD6B8: .word FUN_021FD1F4 + + arm_func_start FUN_021FD6BC +FUN_021FD6BC: ; 0x021FD6BC + ldr ip, _021FD6C4 ; =FUN_021FD24C + bx ip + .align 2, 0 +_021FD6C4: .word FUN_021FD24C + + arm_func_start FUN_021FD6C8 +FUN_021FD6C8: ; 0x021FD6C8 + ldr ip, _021FD6D0 ; =FUN_021FF9C4 + bx ip + .align 2, 0 +_021FD6D0: .word FUN_021FF9C4 + + arm_func_start FUN_021FD6D4 +FUN_021FD6D4: ; 0x021FD6D4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021FDF60 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl FUN_021FF470 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl FUN_021FF42C + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FD704 +FUN_021FD704: ; 0x021FD704 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021FD45C + mov r0, r4 + bl FUN_021FF9CC + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FD71C +FUN_021FD71C: ; 0x021FD71C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, [sp, #8] + str ip, [sp] + bl FUN_021FFA10 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FD738 +FUN_021FD738: ; 0x021FD738 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r3, #0 + beq _021FD754 + bl FUN_021FDD24 + add sp, sp, #4 + ldmfd sp!, {pc} +_021FD754: + bl FUN_021FD94C + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FD760 +FUN_021FD760: ; 0x021FD760 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + mov r5, r1 + ldr r1, [r5] + ldrh r2, [r4, #0x66] + ldr r0, [r4, #0x50] + add r1, r1, #5 + bl FUN_021FF3BC + ldr r3, [r4, #0x50] + ldr r1, [r5] + ldr r2, [r5, #4] + mov r0, r4 + add r1, r3, r1 + bl FUN_021FD1AC + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r4, #0x88] + str r0, [r5, #0xc] + ldr r0, [r5] + ldr r1, [r4, #0x50] + add r0, r0, #2 + ldrb r0, [r1, r0] + cmp r0, #2 + ldreq r0, [r4, #0x88] + streq r0, [r4, #0x8c] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FD7DC +FUN_021FD7DC: ; 0x021FD7DC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r4, _021FD824 ; =0x0220EFB0 + add r3, sp, #4 + ldrb r5, [r4] + ldrb r4, [r4, #1] + mov lr, #0x68 + mov ip, #3 + strb r5, [r3] + strb r4, [r3, #1] + strb lr, [sp, #6] + str ip, [sp] + bl FUN_021FF50C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FD824: .word 0x0220EFB0 + + arm_func_start FUN_021FD828 +FUN_021FD828: ; 0x021FD828 + ldr ip, _021FD840 ; =FUN_021FD7DC + mov r1, r0 + ldrh r2, [r1, #4] + ldr r0, [r1, #8] + ldr r1, [r1] + bx ip + .align 2, 0 +_021FD840: .word FUN_021FD7DC + + arm_func_start FUN_021FD844 +FUN_021FD844: ; 0x021FD844 + ldr ip, _021FD854 ; =FUN_021FD1AC + mov r3, #0x67 + strb r3, [r1, #2] + bx ip + .align 2, 0 +_021FD854: .word FUN_021FD1AC + + arm_func_start FUN_021FD858 +FUN_021FD858: ; 0x021FD858 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r3, _021FD8E0 ; =0x0220EFB0 + mov r4, r0 + ldrb ip, [r3] + ldrb r3, [r3, #1] + add r0, sp, #0 + mov r7, r1 + strb ip, [r0] + mov r6, r2 + strb r3, [r0, #1] + mov r3, #0x65 + mov r2, r7 + mov r5, #0 + mov r1, #3 + strb r3, [sp, #2] + bl FUN_021FF3BC + cmp r7, r6 + add r5, r5, #5 + beq _021FD8BC + add r0, sp, #0 + mov r1, r5 + mov r2, r6 + bl FUN_021FF3BC + add r5, r5, #2 +_021FD8BC: + add r1, sp, #0 + mov r0, r4 + mov r2, r5 + bl FUN_021FD1AC + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FD8E0: .word 0x0220EFB0 + + arm_func_start FUN_021FD8E4 +FUN_021FD8E4: ; 0x021FD8E4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _021FD948 ; =0x0220EFB0 + mov r4, r0 + ldrb r3, [r1] + ldrb r2, [r1, #1] + add r0, sp, #0 + mov r1, #0x64 + strb r3, [r0] + strb r2, [r0, #1] + strb r1, [sp, #2] + ldrh r2, [r4, #0x66] + mov r1, #3 + bl FUN_021FF3BC + add r1, sp, #0 + mov r0, r4 + mov r2, #5 + bl FUN_021FD1AC + cmp r0, #0 + moveq r0, #0 + movne r0, #0 + strne r0, [r4, #0x90] + movne r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021FD948: .word 0x0220EFB0 + + arm_func_start FUN_021FD94C +FUN_021FD94C: ; 0x021FD94C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r2 + mov r8, r0 + mov r7, r1 + cmp r6, #2 + blt _021FD97C + ldr r1, _021FDA14 ; =0x0220EFB0 + mov r0, r7 + mov r2, #2 + bl memcmp + cmp r0, #0 + beq _021FD99C +_021FD97C: + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_021FD1AC + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FD99C: + add r5, r6, #2 + add r0, r8, #0x50 + bl FUN_021FC45C + cmp r0, r5 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + ldr ip, [r8, #0x50] + ldr r3, [r8, #0x58] + ldr r1, _021FDA14 ; =0x0220EFB0 + add r0, r8, #0x50 + mov r2, #2 + add r4, ip, r3 + bl FUN_021FC304 + mov r1, r7 + mov r2, r6 + add r0, r8, #0x50 + bl FUN_021FC304 + mov r0, r8 + mov r1, r4 + mov r2, r5 + bl FUN_021FD1AC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r2, r5 + add r0, r8, #0x50 + mvn r1, #0 + bl FUN_021FC268 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_021FDA14: .word 0x0220EFB0 + + arm_func_start FUN_021FDA18 +FUN_021FDA18: ; 0x021FDA18 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r1, #7 + add r3, sp, #0 + mov r2, r1 + mov r4, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FDA74 +FUN_021FDA74: ; 0x021FDA74 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r3, sp, #0 + mov r1, #6 + mov r2, #7 + mov r4, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FDAD0 +FUN_021FDAD0: ; 0x021FDAD0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r2 + mov r5, r1 + add r3, sp, #0 + add r2, r4, #7 + mov r1, #5 + mov r6, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + mov r2, r4 + add r0, r6, #0x50 + bl FUN_021FC304 + mov r0, r6 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FDB44 +FUN_021FDB44: ; 0x021FDB44 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + add r3, sp, #0 + mov r1, #4 + mov r2, #7 + mov r4, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FDBA0 +FUN_021FDBA0: ; 0x021FDBA0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r4, r3 + mov r6, r1 + mov r5, r2 + add r3, sp, #0 + add r2, r4, #0x27 + mov r1, #3 + mov r7, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + add r0, r7, #0x50 + mov r2, #0x20 + bl FUN_021FC304 + mov r1, r5 + mov r2, r4 + add r0, r7, #0x50 + bl FUN_021FC304 + mov r0, r7 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021FDC28 +FUN_021FDC28: ; 0x021FDC28 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + mov r4, r2 + add r3, sp, #0 + mov r1, #2 + mov r2, #0x47 + mov r6, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r6, #0x50 + mov r2, #0x20 + bl FUN_021FC304 + mov r1, r4 + add r0, r6, #0x50 + mov r2, #0x20 + bl FUN_021FC304 + mov r0, r6 + bl FUN_021FDD98 + cmp r0, #0 + ldrne r1, [r6, #0x88] + moveq r0, #0 + movne r0, #1 + strne r1, [r6, #0x8c] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FDCB4 +FUN_021FDCB4: ; 0x021FDCB4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + add r3, sp, #0 + mov r1, #1 + mov r2, #0x27 + mov r5, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + mov r1, r4 + add r0, r5, #0x50 + mov r2, #0x20 + bl FUN_021FC304 + mov r0, r5 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FDD24 +FUN_021FDD24: ; 0x021FDD24 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r2 + mov r5, r1 + add r3, sp, #0 + add r2, r4, #7 + mov r1, #0 + mov r6, r0 + bl FUN_021FDE18 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + mov r2, r4 + add r0, r6, #0x50 + bl FUN_021FC304 + mov r0, r6 + bl FUN_021FDD98 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FDD98 +FUN_021FDD98: ; 0x021FDD98 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5, #0x60] + bl FUN_021EF06C + mov r4, r0 + cmp r4, #0 + bgt _021FDDCC + ldr r0, _021FDE0C ; =0x0220EFBC + ldr r1, _021FDE10 ; =0x0220EFC4 + ldr r3, _021FDE14 ; =0x00000475 + mov r2, #0 + bl __msl_assertion_failed +_021FDDCC: + ldr r0, [r5, #0x60] + sub r1, r4, #1 + bl FUN_021EEFFC + ldr r3, [r5, #0x50] + ldr r1, [r0] + ldr r2, [r0, #4] + mov r0, r5 + add r1, r3, r1 + bl FUN_021FD1AC + cmp r0, #0 + moveq r0, #0 + movne r0, #0 + strne r0, [r5, #0x90] + movne r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FDE0C: .word 0x0220EFBC +_021FDE10: .word 0x0220EFC4 +_021FDE14: .word 0x00000475 + + arm_func_start FUN_021FDE18 +FUN_021FDE18: ; 0x021FDE18 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r5, r2 + add r0, r7, #0x50 + mov r6, r1 + mov r4, r3 + bl FUN_021FC45C + cmp r0, r5 + bge _021FDE60 + mov r0, r7 + bl FUN_021FF2D8 + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #4 + strne r0, [r4] + ldmia sp!, {r4, r5, r6, r7, pc} +_021FDE60: + ldrh r1, [r7, #0x64] + mov r0, r7 + mov r2, r5 + bl FUN_021FDEEC + cmp r0, #0 + bne _021FDE98 + mov r0, r7 + bl FUN_021FF2D8 + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #4 + strne r0, [r4] + ldmia sp!, {r4, r5, r6, r7, pc} +_021FDE98: + ldr r1, _021FDEE8 ; =0x0220EFB0 + add r0, r7, #0x50 + mov r2, #2 + bl FUN_021FC304 + add r0, r7, #0x50 + and r1, r6, #0xff + bl FUN_021FC404 + ldrh r1, [r7, #0x64] + add r0, r7, #0x50 + add r2, r1, #1 + strh r2, [r7, #0x64] + bl FUN_021FC390 + ldrh r1, [r7, #0x66] + add r0, r7, #0x50 + bl FUN_021FC390 + mov r0, #0 + str r0, [r4] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FDEE8: .word 0x0220EFB0 + + arm_func_start FUN_021FDEEC +FUN_021FDEEC: ; 0x021FDEEC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + add r4, sp, #0 + mov r3, #0 + str r3, [r4] + str r3, [r4, #4] + str r3, [r4, #8] + mov r5, r0 + str r3, [r4, #0xc] + ldr r0, [r5, #0x58] + str r0, [sp] + str r2, [sp, #4] + strh r1, [sp, #8] + bl FUN_021F025C + str r0, [sp, #0xc] + ldr r0, [r5, #0x60] + bl FUN_021EF06C + mov r4, r0 + ldr r0, [r5, #0x60] + add r1, sp, #0 + bl FUN_021EEFA8 + ldr r0, [r5, #0x60] + bl FUN_021EF06C + add r1, r4, #1 + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FDF60 +FUN_021FDF60: ; 0x021FDF60 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr ip, _021FE0AC ; =0x000005F4 + sub sp, sp, ip + mov sl, r0 + ldr r0, [sl] + bl FUN_021EFF2C + cmp r0, #0 + beq _021FE09C + ldr fp, _021FE0B0 ; =0x000005DC + add r6, sp, #0x14 + add r8, sp, #8 + add r7, sp, #0x10 + mov sb, #8 + mov r5, #0 + mvn r4, #0xe +_021FDF9C: + str sb, [sp, #0x10] + str r8, [sp] + str r7, [sp, #4] + ldr r0, [sl] + mov r1, r6 + mov r2, fp + mov r3, r5 + bl FUN_021EFC40 + mov r2, r0 + mvn r0, #0 + cmp r2, r0 + bne _021FE044 + ldr r0, [sl] + bl FUN_021EFB28 + cmp r0, r4 + bne _021FE020 + ldrh r2, [sp, #0xa] + ldr r1, [sp, #0xc] + mov r0, sl + mov r3, r2, asr #8 + mov r2, r2, lsl #8 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl FUN_021FE0B4 + cmp r0, #0 + bne _021FE08C + ldr ip, _021FE0AC ; =0x000005F4 + mov r0, #0 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FE020: + mvn r1, #0x22 + cmp r0, r1 + beq _021FE08C + mov r0, sl + bl FUN_021FF3F0 + ldr ip, _021FE0AC ; =0x000005F4 + mov r0, #0 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FE044: + ldrh ip, [sp, #0xa] + mov r0, sl + mov r1, r6 + mov r3, ip, asr #8 + mov ip, ip, lsl #8 + and r3, r3, #0xff + and ip, ip, #0xff00 + orr r3, r3, ip + mov r3, r3, lsl #0x10 + mov r3, r3, lsr #0x10 + str r3, [sp] + ldr r3, [sp, #0xc] + bl FUN_021FE1B4 + cmp r0, #0 + ldreq ip, _021FE0AC ; =0x000005F4 + moveq r0, #0 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_021FE08C: + ldr r0, [sl] + bl FUN_021EFF2C + cmp r0, #0 + bne _021FDF9C +_021FE09C: + mov r0, #1 + ldr ip, _021FE0AC ; =0x000005F4 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_021FE0AC: .word 0x000005F4 +_021FE0B0: .word 0x000005DC + + arm_func_start FUN_021FE0B4 +FUN_021FE0B4: ; 0x021FE0B4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_021FFC3C + ldr r1, [r7, #0x2c] + mov r4, r0 + cmp r1, #0 + beq _021FE118 + mov r0, #1 + str r0, [sp] + mov ip, #0 + str ip, [sp, #4] + str ip, [sp, #8] + mov r0, r7 + mov r1, r4 + mov r2, r6 + mov r3, r5 + str ip, [sp, #0xc] + bl FUN_021FC59C + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021FE118: + cmp r4, #0 + addeq sp, sp, #0x14 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021FE188 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021FE158 + bl FUN_021F025C + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x20] + sub r0, r0, r2 + cmp r0, r1 + bhs _021FE164 +_021FE158: + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FE164: + mov r0, r4 + mov r1, #6 + mov r2, #1 + bl FUN_021FF318 + cmp r0, #0 + bne _021FE1A8 + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FE188: + mov r0, r4 + mov r1, #2 + mov r2, #1 + bl FUN_021FF318 + cmp r0, #0 + addeq sp, sp, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} +_021FE1A8: + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021FE1B4 +FUN_021FE1B4: ; 0x021FE1B4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x1c + ldr r5, [sp, #0x38] + mov r6, r3 + mov r8, r1 + mov r7, r2 + mov r1, r6 + mov r2, r5 + mov sb, r0 + bl FUN_021FFC3C + str r0, [sp, #0x10] + ldr r0, [sb, #0x2c] + cmp r0, #0 + beq _021FE224 + mov r0, #0 + str r0, [sp] + str r8, [sp, #4] + str r7, [sp, #8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + mov r0, sb + mov r2, r6 + mov r3, r5 + bl FUN_021FC59C + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE224: + cmp r7, #2 + ble _021FE248 + ldr r1, _021FE470 ; =0x0220EFB0 + mov r0, r8 + mov r2, #2 + bl memcmp + cmp r0, #0 + moveq r4, #1 + beq _021FE24C +_021FE248: + mov r4, #0 +_021FE24C: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _021FE354 + add ip, sp, #0x14 + str r7, [sp] + mov r0, sb + mov r1, r6 + mov r2, r5 + mov r3, r8 + str ip, [sp, #4] + bl FUN_021FC4A4 + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [sp, #0x14] + cmp r0, #0 + addne sp, sp, #0x1c + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + cmp r4, #0 + beq _021FE2B0 + ldrb r0, [r8, #2] + cmp r0, #1 + beq _021FE2F0 +_021FE2B0: + cmp r4, #0 + beq _021FE2C4 + ldrb r0, [r8, #2] + cmp r0, #0x68 + beq _021FE2E4 +_021FE2C4: + mov r0, sb + mov r1, r6 + mov r2, r5 + bl FUN_021FD7DC + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE2E4: + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE2F0: + ldr r0, [sb, #0x20] + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r1, sp, #0x10 + mov r0, sb + mov r2, r6 + mov r3, r5 + bl FUN_021FD364 + cmp r0, #0 + beq _021FE354 + cmp r0, #5 + beq _021FE348 + mov r0, sb + mov r1, r6 + mov r2, r5 + bl FUN_021FD7DC + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE348: + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE354: + ldr r5, [sp, #0x10] + ldr r0, [r5, #0xc] + cmp r0, #7 + bne _021FE39C + cmp r4, #0 + beq _021FE378 + ldrb r0, [r8, #2] + cmp r0, #0x68 + beq _021FE390 +_021FE378: + mov r0, r5 + bl FUN_021FD828 + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE390: + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE39C: + cmp r4, #0 + beq _021FE3CC + cmp r7, #4 + blt _021FE3CC + ldr r1, _021FE470 ; =0x0220EFB0 + add r0, r8, #2 + mov r2, #2 + bl memcmp + cmp r0, #0 + addeq r8, r8, #2 + subeq r7, r7, #2 + moveq r4, #0 +_021FE3CC: + cmp r4, #0 + bne _021FE3F8 + mov r0, r5 + mov r1, r8 + mov r2, r7 + bl FUN_021FF134 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x1c + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE3F8: + ldrb r1, [r8, #2] + cmp r1, #0 + bge _021FE420 + mov r0, r5 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x1c + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE420: + cmp r1, #8 + bge _021FE44C + mov r0, r5 + mov r2, r8 + mov r3, r7 + bl FUN_021FE780 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x1c + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE44C: + mov r0, r5 + mov r2, r8 + mov r3, r7 + bl FUN_021FE474 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021FE470: .word 0x0220EFB0 + + arm_func_start FUN_021FE474 +FUN_021FE474: ; 0x021FE474 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0x64 + add lr, r2, #3 + sub ip, r3, #3 + bne _021FE4AC + mov r1, lr + mov r2, ip + bl FUN_021FE734 + cmp r0, #0 + bne _021FE540 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FE4AC: + cmp r1, #0x65 + bne _021FE4D4 + mov r1, lr + mov r2, ip + bl FUN_021FE648 + cmp r0, #0 + bne _021FE540 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FE4D4: + cmp r1, #0x66 + bne _021FE4FC + mov r1, r2 + mov r2, r3 + bl FUN_021FE63C + cmp r0, #0 + bne _021FE540 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FE4FC: + cmp r1, #0x67 + bne _021FE524 + mov r1, lr + mov r2, ip + bl FUN_021FE590 + cmp r0, #0 + bne _021FE540 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FE524: + cmp r1, #0x68 + bne _021FE540 + bl FUN_021FE54C + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} +_021FE540: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FE54C +FUN_021FE54C: ; 0x021FE54C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [r0, #0xc] + cmp r1, #7 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + cmp r1, #6 + moveq r2, #0 + movne r2, #1 + mov r1, #2 + bl FUN_021FF318 + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FE590 +FUN_021FE590: ; 0x021FE590 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r0, [r4, #0x34] + mov r5, r1 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, pc} + cmp r2, #8 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + ldr r1, _021FE638 ; =0x0220EFB4 + mov r0, r5 + mov r2, #4 + bl memcmp + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + add r2, r5, #4 + ldrb r1, [r5, #4] + ldrb r0, [r2, #1] + add r3, sp, #0 + strb r1, [r3] + strb r0, [r3, #1] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + strb r1, [r3, #2] + strb r0, [r3, #3] + bl FUN_021F025C + mov r2, r0 + ldr r1, [sp] + mov r0, r4 + sub r1, r2, r1 + bl FUN_021FC8E4 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FE638: .word 0x0220EFB4 + + arm_func_start FUN_021FE63C +FUN_021FE63C: ; 0x021FE63C + ldr ip, _021FE644 ; =FUN_021FD844 + bx ip + .align 2, 0 +_021FE644: .word FUN_021FD844 + + arm_func_start FUN_021FE648 +FUN_021FE648: ; 0x021FE648 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r6, r1 + mov r4, r0 + mov r0, r6 + mov r1, #0 + mov r5, r2 + bl FUN_021FF3D0 + mov sb, r0 + cmp r5, #2 + moveq r8, sb + beq _021FE6B0 + cmp r5, #4 + bne _021FE694 + mov r0, r6 + mov r1, #2 + bl FUN_021FF3D0 + mov r8, r0 + b _021FE6B0 +_021FE694: + mov r0, r4 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #4 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE6B0: + ldr r0, [r4, #0x60] + bl FUN_021EF06C + mov r7, r0 + cmp r7, #0 + mov r6, #0 + ble _021FE728 +_021FE6C8: + ldr r0, [r4, #0x60] + mov r1, r6 + bl FUN_021EEFFC + mov r5, r0 + ldrh r0, [r5, #8] + mov r1, sb + bl FUN_021FF3AC + cmp r0, #0 + blt _021FE71C + ldrh r0, [r5, #8] + mov r1, r8 + bl FUN_021FF3AC + cmp r0, #0 + bgt _021FE71C + mov r0, r4 + mov r1, r5 + bl FUN_021FD760 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FE71C: + add r6, r6, #1 + cmp r6, r7 + blt _021FE6C8 +_021FE728: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021FE734 +FUN_021FE734: ; 0x021FE734 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r2, #2 + beq _021FE758 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} +_021FE758: + mov r0, r1 + mov r1, #0 + bl FUN_021FF3D0 + mov r1, r0 + mov r0, r4 + bl FUN_021FF1C8 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FE780 +FUN_021FE780: ; 0x021FE780 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r6, r3 + mov r4, r0 + mov r8, r1 + mov r7, r2 + cmp r6, #7 + bge _021FE7B8 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x10 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FE7B8: + mov r0, r7 + mov r1, #3 + bl FUN_021FF3D0 + mov r5, r0 + mov r0, r7 + mov r1, #5 + bl FUN_021FF3D0 + mov r1, r0 + mov r0, r4 + bl FUN_021FF1C8 + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrh r1, [r4, #0x66] + cmp r5, r1 + bne _021FE844 + mov r0, r4 + bl FUN_021FE8CC + mov r0, r4 + mov r1, r8 + add r2, r7, #7 + sub r3, r6, #7 + bl FUN_021FEBD0 + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + bl FUN_021FE8F4 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x10 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FE844: + mov r0, r5 + bl FUN_021FF3AC + cmp r0, #0 + bge _021FE868 + mov r0, r4 + bl FUN_021FE8CC + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_021FE868: + sub r0, r6, #7 + str r0, [sp] + add ip, sp, #8 + mov r0, r4 + mov r1, r8 + mov r2, r5 + add r3, r7, #7 + str ip, [sp, #4] + bl FUN_021FEA0C + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [sp, #8] + cmp r0, #0 + beq _021FE8C0 + mov r0, r4 + bl FUN_021FF2D8 + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_021FE8C0: + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_021FE8CC +FUN_021FE8CC: ; 0x021FE8CC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x90] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #1 + str r0, [r4, #0x90] + bl FUN_021F025C + str r0, [r4, #0x94] + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FE8F4 +FUN_021FE8F4: ; 0x021FE8F4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 +_021FE8FC: + ldr r0, [r6, #0x5c] + bl FUN_021EF06C + subs r5, r0, #1 + bmi _021FE970 +_021FE90C: + ldr r0, [r6, #0x5c] + mov r1, r5 + bl FUN_021EEFFC + mov r4, r0 + ldrh r1, [r4, #0xc] + ldrh r0, [r6, #0x66] + cmp r1, r0 + bne _021FE968 + ldr ip, [r6, #0x44] + ldr r2, [r4] + ldr r1, [r4, #8] + ldr r3, [r4, #4] + mov r0, r6 + add r2, ip, r2 + bl FUN_021FEBD0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_021FE978 + b _021FE8FC +_021FE968: + subs r5, r5, #1 + bpl _021FE90C +_021FE970: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FE978 +FUN_021FE978: ; 0x021FE978 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + ldr r0, [sb, #0x5c] + ldr r7, [r1] + ldr r6, [r1, #4] + mov r1, r2 + mov r8, #0 + bl FUN_021EED84 + ldr r0, [sb, #0x5c] + bl FUN_021EF06C + mov r5, r0 + cmp r5, #0 + mov r4, r8 + ble _021FE9F4 +_021FE9B4: + ldr r0, [sb, #0x5c] + mov r1, r4 + bl FUN_021EEFFC + ldr r1, [r0] + cmp r1, r7 + ble _021FE9E8 + sub r1, r1, r6 + str r1, [r0] + ldr r1, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + cmp r8, r0 + movle r8, r0 +_021FE9E8: + add r4, r4, #1 + cmp r4, r5 + blt _021FE9B4 +_021FE9F4: + mov r1, r7 + mov r2, r6 + add r0, sb, #0x44 + bl FUN_021FC268 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_021FEA0C +FUN_021FEA0C: ; 0x021FEA0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + mov sb, r0 + ldr r0, [sb, #0x5c] + mov r8, r1 + mov r7, r2 + mov r6, r3 + ldr r5, [sp, #0x34] + bl FUN_021EF06C + mov r4, r0 + cmp r4, #0 + mov sl, #0 + ble _021FEA84 +_021FEA40: + ldr r0, [sb, #0x5c] + mov r1, sl + bl FUN_021EEFFC + ldrh r0, [r0, #0xc] + cmp r0, r7 + moveq r0, #0 + streq r0, [r5] + addeq sp, sp, #0x10 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, r7 + bl FUN_021FF3AC + cmp r0, #0 + bgt _021FEA84 + add sl, sl, #1 + cmp sl, r4 + blt _021FEA40 +_021FEA84: + add r0, sb, #0x44 + bl FUN_021FC45C + ldr r2, [sp, #0x30] + cmp r0, r2 + movlt r0, #1 + addlt sp, sp, #0x10 + strlt r0, [r5] + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [sb, #0x4c] + add r1, sp, #0 + str r2, [sp, #4] + str r8, [sp, #8] + strh r7, [sp, #0xc] + str r0, [sp] + ldr r0, [sb, #0x5c] + ldr r2, _021FEBB8 ; =FUN_021FEBBC + bl FUN_021EEE74 + ldr r0, [sb, #0x5c] + bl FUN_021EF06C + add r1, r4, #1 + cmp r1, r0 + movne r0, #1 + addne sp, sp, #0x10 + strne r0, [r5] + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r2, [sp, #0x30] + mov r1, r6 + add r0, sb, #0x44 + bl FUN_021FC304 + cmp r4, #0 + bne _021FEB2C + sub r0, r7, #1 + mov r2, r0, lsl #0x10 + ldrh r1, [sb, #0x66] + mov r0, sb + mov r2, r2, lsr #0x10 + bl FUN_021FD858 + cmp r0, #0 + bne _021FEBA4 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021FEB2C: + ldr r0, [sb, #0x5c] + mov r1, r4 + bl FUN_021EEFFC + ldrh r0, [r0, #0xc] + cmp r0, r7 + bne _021FEBA4 + ldr r0, [sb, #0x5c] + sub r1, r4, #1 + bl FUN_021EEFFC + mov r4, r0 + ldrh r1, [r4, #0xc] + mov r0, r7 + bl FUN_021FF3AC + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bls _021FEBA4 + ldrh r1, [r4, #0xc] + sub r0, r7, #1 + mov r2, r0, lsl #0x10 + add r0, r1, #1 + mov r1, r0, lsl #0x10 + mov r0, sb + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl FUN_021FD858 + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_021FEBA4: + mov r0, #0 + str r0, [r5] + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_021FEBB8: .word FUN_021FEBBC + + arm_func_start FUN_021FEBBC +FUN_021FEBBC: ; 0x021FEBBC + ldr ip, _021FEBCC ; =FUN_021FF3AC + ldrh r0, [r0, #0xc] + ldrh r1, [r1, #0xc] + bx ip + .align 2, 0 +_021FEBCC: .word FUN_021FF3AC + + arm_func_start FUN_021FEBD0 +FUN_021FEBD0: ; 0x021FEBD0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh ip, [r0, #0x66] + cmp r1, #0 + add ip, ip, #1 + strh ip, [r0, #0x66] + bne _021FEC0C + mov r1, r2 + mov r2, r3 + bl FUN_021FF084 + cmp r0, #0 + bne _021FECE8 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FEC0C: + cmp r1, #1 + bne _021FEC34 + mov r1, r2 + mov r2, r3 + bl FUN_021FEFEC + cmp r0, #0 + bne _021FECE8 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FEC34: + cmp r1, #2 + bne _021FEC5C + mov r1, r2 + mov r2, r3 + bl FUN_021FEF10 + cmp r0, #0 + bne _021FECE8 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FEC5C: + cmp r1, #3 + bne _021FEC84 + mov r1, r2 + mov r2, r3 + bl FUN_021FEDFC + cmp r0, #0 + bne _021FECE8 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FEC84: + cmp r1, #4 + bne _021FECA4 + bl FUN_021FEDA4 + cmp r0, #0 + bne _021FECE8 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FECA4: + cmp r1, #5 + bne _021FECCC + mov r1, r2 + mov r2, r3 + bl FUN_021FED38 + cmp r0, #0 + bne _021FECE8 + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_021FECCC: + cmp r1, #6 + bne _021FECE8 + bl FUN_021FECF4 + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} +_021FECE8: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FECF4 +FUN_021FECF4: ; 0x021FECF4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021FD828 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xc] + mov r1, #2 + cmp r0, #6 + moveq r2, #0 + movne r2, #1 + mov r0, r4 + bl FUN_021FF318 + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FED38 +FUN_021FED38: ; 0x021FED38 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #1 + beq _021FED68 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FED68: + bl FUN_021FCED0 + mov r0, r6 + bl FUN_021FD828 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r2, r5 + mov r3, r4 + mov r1, #2 + bl FUN_021FCB88 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FEDA4 +FUN_021FEDA4: ; 0x021FEDA4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, [r0, #0xc] + cmp r1, #1 + beq _021FEDD0 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #4 + moveq r0, #0 + ldmfd sp!, {pc} +_021FEDD0: + mov r1, #0 + mov ip, #5 + mov r2, r1 + mov r3, r1 + str ip, [r0, #0xc] + bl FUN_021FCB88 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FEDFC +FUN_021FEDFC: ; 0x021FEDFC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #3 + beq _021FEE34 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x10 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FEE34: + cmp r4, #0x20 + bge _021FEE54 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x10 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FEE54: + mov r0, r5 + add r1, r6, #0x68 + bl FUN_021FBF08 + cmp r0, #0 + bne _021FEE84 + mov r0, r6 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x10 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FEE84: + ldr r0, [r6, #8] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021FEEC0 + mov r0, r6 + bl FUN_021FD828 + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl FUN_021FCED0 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_021FEEC0: + mov r0, #4 + str r0, [r6, #0xc] + bl FUN_021F025C + ldr r2, [r6, #0x8c] + add r1, r5, #0x20 + sub r0, r0, r2 + str r0, [sp] + str r1, [sp, #4] + sub r0, r4, #0x20 + str r0, [sp, #8] + ldrh r3, [r6, #4] + ldr r0, [r6, #8] + ldr r2, [r6] + mov r1, r6 + bl FUN_021FCC88 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FEF10 +FUN_021FEF10: ; 0x021FEF10 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x24 + mov r5, r0 + ldr r3, [r5, #0xc] + mov r4, r1 + cmp r3, #0 + beq _021FEF44 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x24 + moveq r0, #0 + ldmia sp!, {r4, r5, pc} +_021FEF44: + cmp r2, #0x40 + bge _021FEF64 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x24 + moveq r0, #0 + ldmia sp!, {r4, r5, pc} +_021FEF64: + mov r0, r4 + add r1, r5, #0x68 + bl FUN_021FBF08 + cmp r0, #0 + bne _021FEF94 + mov r0, r5 + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x24 + moveq r0, #0 + ldmia sp!, {r4, r5, pc} +_021FEF94: + add r0, sp, #0 + add r1, r4, #0x20 + bl FUN_021FBF44 + ldr r2, [r5, #0x38] + ldr r3, [r5, #0x3c] + add r1, sp, #0 + mov r0, r5 + bl FUN_021FDBA0 + cmp r0, #0 + addeq sp, sp, #0x24 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _021FEFDC + bl FUN_021DD82C + mov r0, #0 + str r0, [r5, #0x38] +_021FEFDC: + mov r0, #1 + str r0, [r5, #0xc] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FEFEC +FUN_021FEFEC: ; 0x021FEFEC + stmdb sp!, {r4, lr} + sub sp, sp, #0x40 + mov r4, r0 + ldr r3, [r4, #0xc] + cmp r3, #2 + beq _021FF01C + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x40 + moveq r0, #0 + ldmia sp!, {r4, pc} +_021FF01C: + cmp r2, #0x20 + bge _021FF03C + bl FUN_021FF304 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x40 + moveq r0, #0 + ldmia sp!, {r4, pc} +_021FF03C: + add r0, sp, #0 + bl FUN_021FBF44 + add r0, sp, #0x20 + bl FUN_021FC07C + add r1, sp, #0x20 + add r0, r4, #0x68 + bl FUN_021FBF44 + add r1, sp, #0 + add r2, sp, #0x20 + mov r0, r4 + bl FUN_021FDC28 + cmp r0, #0 + moveq r0, #0 + movne r0, #3 + strne r0, [r4, #0xc] + movne r0, #1 + add sp, sp, #0x40 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FF084 +FUN_021FF084: ; 0x021FF084 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #5 + beq _021FF0C4 + cmp r3, #6 + beq _021FF0C4 + bl FUN_021FF304 + cmp r0, #0 + bne _021FF128 + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FF0C4: + ldr r0, [r6, #0x9c] + bl FUN_021EF06C + cmp r0, #0 + beq _021FF104 + mov ip, #1 + mov r0, r6 + mov r2, r5 + mov r3, r4 + mov r1, #0 + str ip, [sp] + bl FUN_021FC6C4 + cmp r0, #0 + movne r0, #1 + add sp, sp, #8 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FF104: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #1 + bl FUN_021FCA8C + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_021FF128: + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FF134 +FUN_021FF134: ; 0x021FF134 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + ldr r0, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r0, #5 + beq _021FF164 + cmp r0, #6 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_021FF164: + ldr r0, [r6, #0x9c] + bl FUN_021EF06C + cmp r0, #0 + beq _021FF1A0 + mov r1, #0 + mov r0, r6 + mov r2, r5 + mov r3, r4 + str r1, [sp] + bl FUN_021FC6C4 + cmp r0, #0 + movne r0, #1 + add sp, sp, #8 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FF1A0: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl FUN_021FCA8C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FF1C8 +FUN_021FF1C8: ; 0x021FF1C8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r0, [r4, #0x60] + mov r7, r1 + bl FUN_021EF06C + movs r6, r0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r6, #0 + mov r5, #0 + ble _021FF228 +_021FF1FC: + ldr r0, [r4, #0x60] + mov r1, r5 + bl FUN_021EEFFC + ldrh r0, [r0, #8] + mov r1, r7 + bl FUN_021FF3AC + cmp r0, #0 + bge _021FF228 + add r5, r5, #1 + cmp r5, r6 + blt _021FF1FC +_021FF228: + cmp r5, #0 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r5, #0 + sub r5, r5, #1 + beq _021FF25C +_021FF244: + ldr r0, [r4, #0x60] + mov r1, r5 + bl FUN_021EED84 + cmp r5, #0 + sub r5, r5, #1 + bne _021FF244 +_021FF25C: + ldr r0, [r4, #0x60] + bl FUN_021EF06C + movs r6, r0 + moveq r0, #0 + streq r0, [r4, #0x58] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #0x60] + mov r1, #0 + bl FUN_021EEFFC + cmp r6, #0 + ldr r7, [r0] + mov r5, #0 + ble _021FF2BC +_021FF298: + ldr r0, [r4, #0x60] + mov r1, r5 + bl FUN_021EEFFC + ldr r1, [r0] + add r5, r5, #1 + sub r1, r1, r7 + str r1, [r0] + cmp r5, r6 + blt _021FF298 +_021FF2BC: + mov r2, r7 + add r0, r4, #0x50 + mov r1, #0 + bl FUN_021FC268 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021FF2D8 +FUN_021FF2D8: ; 0x021FF2D8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021FD828 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #1 + mov r2, #4 + bl FUN_021FF318 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FF304 +FUN_021FF304: ; 0x021FF304 + ldr ip, _021FF314 ; =FUN_021FF318 + mov r1, #7 + mov r2, #2 + bx ip + .align 2, 0 +_021FF314: .word FUN_021FF318 + + arm_func_start FUN_021FF318 +FUN_021FF318: ; 0x021FF318 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #5 + bge _021FF380 + ldr r1, [r6, #0x10] + cmp r1, #0 + beq _021FF368 + bl FUN_021FCED0 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl FUN_021FCB88 + cmp r0, #0 + bne _021FF3A4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_021FF368: + cmp r3, #4 + moveq r0, #1 + streq r0, [r6, #0x14] + mov r0, r6 + bl FUN_021FCED0 + b _021FF3A4 +_021FF380: + cmp r3, #7 + beq _021FF3A4 + bl FUN_021FCED0 + mov r0, r6 + mov r1, r4 + bl FUN_021FC9B8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_021FF3A4: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_021FF3AC +FUN_021FF3AC: ; 0x021FF3AC + sub r0, r0, r1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bx lr + + arm_func_start FUN_021FF3BC +FUN_021FF3BC: ; 0x021FF3BC + mov r3, r2, asr #8 + strb r3, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + bx lr + + arm_func_start FUN_021FF3D0 +FUN_021FF3D0: ; 0x021FF3D0 + ldrb r2, [r0, r1] + add r1, r1, #1 + ldrb r1, [r0, r1] + mov r0, r2, lsl #8 + and r0, r0, #0xff00 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #16 + bx lr + + arm_func_start FUN_021FF3F0 +FUN_021FF3F0: ; 0x021FF3F0 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x18] + cmp r1, #0 + ldmneia sp!, {r4, pc} + mov r1, #1 + str r1, [r4, #0x18] + bl FUN_021FD45C + mov r0, r4 + bl FUN_021FCDB4 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl FUN_021FF9CC + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FF42C +FUN_021FF42C: ; 0x021FF42C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5, #0x10] + bl FUN_021EF06C + subs r4, r0, #1 + addmi sp, sp, #4 + ldmmiia sp!, {r4, r5, pc} +_021FF44C: + ldr r0, [r5, #0x10] + mov r1, r4 + bl FUN_021EEFFC + ldr r0, [r0] + bl FUN_021FF6BC + subs r4, r4, #1 + bpl _021FF44C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_021FF470 +FUN_021FF470: ; 0x021FF470 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl FUN_021F025C + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _021FF4A8 ; =FUN_021FF4AC + add r2, sp, #0 + bl FUN_021EF264 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021FF4A8: .word FUN_021FF4AC + + arm_func_start FUN_021FF4AC +FUN_021FF4AC: ; 0x021FF4AC + stmdb sp!, {r4, lr} + ldr r4, [r0] + ldr r1, [r1] + ldr r0, [r4, #0xc] + cmp r0, #7 + beq _021FF4D8 + mov r0, r4 + bl FUN_021FCF88 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_021FF4D8: + ldr r0, [r4, #0xc] + cmp r0, #7 + bne _021FF504 + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021FF504 + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021FF504 + mov r0, r4 + bl FUN_021FF6BC +_021FF504: + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FF50C +FUN_021FF50C: ; 0x021FF50C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r6, r0 + mov r5, r1 + add r0, sp, #0x34 + add r1, sp, #0x38 + mov r4, r2 + bl FUN_021FFCDC + ldr r0, [r6] + bl FUN_021EFEFC + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr + mov r1, r4, asr #8 + mov r0, r4, lsl #8 + add ip, sp, #0x10 + mov r3, #0 + str r3, [ip] + str r3, [ip, #4] + mov r2, #2 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0x12] + strb r2, [sp, #0x11] + str r5, [sp, #0x14] + str ip, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r6] + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x38] + bl FUN_021EFBD4 + mvn r1, #0 + cmp r0, r1 + bne _021FF640 + ldr r0, [r6] + bl FUN_021EFB28 + mvn r1, #0xe + cmp r0, r1 + bne _021FF5EC + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_021FE0B4 + cmp r0, #0 + bne _021FF6A8 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_021FF5EC: + mvn r1, #0x29 + cmp r0, r1 + beq _021FF604 + mvn r1, #5 + cmp r0, r1 + bne _021FF618 +_021FF604: + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_021FF618: + mvn r1, #0x22 + cmp r0, r1 + beq _021FF6A8 + mov r0, r6 + bl FUN_021FF3F0 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_021FF640: + ldr r0, [r6, #0x28] + cmp r0, #0 + beq _021FF6A8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_021FFC3C + mov r1, #0 + str r1, [sp] + ldr r2, [sp, #0x34] + mov r1, r0 + str r2, [sp, #4] + ldr ip, [sp, #0x38] + mov r3, r4 + mov r0, r6 + mov r2, r5 + str ip, [sp, #8] + mov r4, #1 + str r4, [sp, #0xc] + bl FUN_021FC59C + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr +_021FF6A8: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FF6BC +FUN_021FF6BC: ; 0x021FF6BC + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + ldr r1, [sp, #0x10] + ldr r0, [r1, #0x14] + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, lr} + addne sp, sp, #0x10 + bxne lr + ldr r0, [r1, #0x24] + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, lr} + addne sp, sp, #0x10 + bxne lr + ldr r0, [r1, #0xc] + cmp r0, #7 + bne _021FF774 + ldr r0, [r1, #8] + ldr r0, [r0, #0x10] + bl FUN_021EF06C + mov r6, r0 + mov r5, #0 + cmp r6, #0 + ldmleia sp!, {r4, r5, r6, lr} + addle sp, sp, #0x10 + bxle lr +_021FF720: + ldr r4, [sp, #0x10] + mov r1, r5 + ldr r0, [r4, #8] + ldr r0, [r0, #0x10] + bl FUN_021EEFFC + ldr r0, [r0] + cmp r4, r0 + bne _021FF75C + ldr r0, [r4, #8] + mov r1, r5 + ldr r0, [r0, #0x10] + bl FUN_021EED84 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_021FF75C: + add r5, r5, #1 + cmp r5, r6 + blt _021FF720 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_021FF774: + ldr r0, [r1, #8] + add r1, sp, #0x10 + ldr r0, [r0, #0xc] + bl FUN_021EF3F4 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_021FF790 +FUN_021FF790: ; 0x021FF790 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r4, r3 + mov r5, r2 + mov r6, r1 + mov r3, #0 + mov r1, r5 + mov r2, r4 + mov r7, r0 + str r3, [sp] + bl FUN_021FFC3C + cmp r0, #0 + addne sp, sp, #4 + movne r0, #5 + ldmneia sp!, {r4, r5, r6, r7, pc} + bl FUN_021FF9B4 + str r0, [sp] + cmp r0, #0 + beq _021FF930 + mov r1, #0 + mov r2, #0xa0 + bl Call_FillMemWithValue + ldr r0, [sp] + str r5, [r0] + ldr r0, [sp] + strh r4, [r0, #4] + ldr r0, [sp] + str r7, [r0, #8] + bl FUN_021F025C + ldr r2, [sp] + mov r1, #0 + str r0, [r2, #0x1c] + ldr r2, [sp] + ldr r0, [r2, #0x1c] + str r0, [r2, #0x88] + ldr r0, [sp] + strh r1, [r0, #0x64] + ldr r0, [sp] + strh r1, [r0, #0x66] + ldr r0, [sp] + ldr r1, [r7, #0x3c] + add r0, r0, #0x44 + bl FUN_021FC46C + cmp r0, #0 + beq _021FF930 + ldr r0, [sp] + ldr r1, [r7, #0x38] + add r0, r0, #0x50 + bl FUN_021FC46C + cmp r0, #0 + beq _021FF930 + mov r0, #0x10 + mov r1, #0x40 + mov r2, #0 + bl FUN_021EF0E4 + ldr r1, [sp] + str r0, [r1, #0x5c] + ldr r0, [sp] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _021FF930 + mov r0, #0x10 + mov r1, #0x40 + mov r2, #0 + bl FUN_021EF0E4 + ldr r1, [sp] + str r0, [r1, #0x60] + ldr r0, [sp] + ldr r0, [r0, #0x60] + cmp r0, #0 + beq _021FF930 + mov r0, #4 + mov r1, #2 + mov r2, #0 + bl FUN_021EF0E4 + ldr r1, [sp] + str r0, [r1, #0x98] + ldr r0, [sp] + ldr r0, [r0, #0x98] + cmp r0, #0 + beq _021FF930 + mov r0, #4 + mov r1, #2 + mov r2, #0 + bl FUN_021EF0E4 + ldr r1, [sp] + str r0, [r1, #0x9c] + ldr r0, [sp] + ldr r0, [r0, #0x9c] + cmp r0, #0 + beq _021FF930 + ldr r0, [r7, #0xc] + add r1, sp, #0 + bl FUN_021EF494 + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl FUN_021FFC3C + str r0, [r6] + ldr r0, [r6] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} +_021FF930: + ldr r0, [sp] + cmp r0, #0 + beq _021FF9A8 + ldr r0, [r0, #0x44] + bl FUN_021DD82C + ldr r0, [sp] + ldr r0, [r0, #0x50] + bl FUN_021DD82C + ldr r0, [sp] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _021FF964 + bl FUN_021EF074 +_021FF964: + ldr r0, [sp] + ldr r0, [r0, #0x60] + cmp r0, #0 + beq _021FF978 + bl FUN_021EF074 +_021FF978: + ldr r0, [sp] + ldr r0, [r0, #0x98] + cmp r0, #0 + beq _021FF98C + bl FUN_021EF074 +_021FF98C: + ldr r0, [sp] + ldr r0, [r0, #0x9c] + cmp r0, #0 + beq _021FF9A0 + bl FUN_021EF074 +_021FF9A0: + ldr r0, [sp] + bl FUN_021DD82C +_021FF9A8: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_021FF9B4 +FUN_021FF9B4: ; 0x021FF9B4 + ldr ip, _021FF9C0 ; =FUN_021DD860 + mov r0, #0xa0 + bx ip + .align 2, 0 +_021FF9C0: .word FUN_021DD860 + + arm_func_start FUN_021FF9C4 +FUN_021FF9C4: ; 0x021FF9C4 + str r1, [r0, #0x20] + bx lr + + arm_func_start FUN_021FF9CC +FUN_021FF9CC: ; 0x021FF9CC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + movne r0, #1 + strne r0, [r4, #0x14] + ldmneia sp!, {r4, pc} + ldr r0, [r4] + bl FUN_021EFD9C + ldr r0, [r4, #0xc] + bl FUN_021EF5B0 + ldr r0, [r4, #0x10] + bl FUN_021EF074 + mov r0, r4 + bl FUN_021DD82C + bl FUN_021F0248 + ldmia sp!, {r4, pc} + + arm_func_start FUN_021FFA10 +FUN_021FFA10: ; 0x021FFA10 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r4, r1 + mov r6, r3 + mov r5, r0 + mov r7, r2 + bl FUN_021F024C + cmp r6, #0 + moveq r6, #0x10000 + cmp r7, #0 + add r1, sp, #0x14 + add r2, sp, #8 + mov r0, r4 + moveq r7, #0x10000 + bl FUN_021FFD28 + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #0x44 + bl FUN_021DD860 + movs r4, r0 + addeq sp, sp, #0x1c + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, #0 + mov r2, #0x44 + bl Call_FillMemWithValue + mvn r0, #0 + str r0, [r4] + str r6, [r4, #0x3c] + ldr r1, [sp, #0x30] + str r7, [r4, #0x38] + ldr r0, _021FFC30 ; =FUN_021FFC84 + str r1, [r4, #0x24] + str r0, [sp] + mov r0, #0 + ldr r3, _021FFC34 ; =FUN_021FFCB4 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x20 + mov r2, #2 + bl FUN_021EF62C + str r0, [r4, #0xc] + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021FFAE0 + mov r0, r4 + bl FUN_021DD82C + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FFAE0: + mov r0, #4 + ldr r2, _021FFC38 ; =0x021FFC74 + mov r1, r0 + bl FUN_021EF0E4 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021FFB1C + ldr r0, [r4, #0xc] + bl FUN_021EF5B0 + mov r0, r4 + bl FUN_021DD82C + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FFB1C: + mov r0, #2 + mov r1, r0 + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4] + ldr r1, [r4] + mvn r0, #0 + cmp r1, r0 + bne _021FFB64 + ldr r0, [r4, #0xc] + bl FUN_021EF5B0 + ldr r0, [r4, #0x10] + bl FUN_021EF074 + mov r0, r4 + bl FUN_021DD82C + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FFB64: + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldrh r0, [sp, #8] + ldr r3, [sp, #0x14] + mov ip, #2 + mov r2, r0, asr #8 + mov r0, r0, lsl #8 + and r2, r2, #0xff + and r0, r0, #0xff00 + orr r0, r2, r0 + strb ip, [sp, #0xd] + str r3, [sp, #0x10] + strh r0, [sp, #0xe] + ldr r0, [r4] + mov r2, #8 + bl FUN_021EFD28 + mvn r1, #0 + cmp r0, r1 + bne _021FFBE4 + ldr r0, [r4] + bl FUN_021EFD9C + ldr r0, [r4, #0xc] + bl FUN_021EF5B0 + ldr r0, [r4, #0x10] + bl FUN_021EF074 + mov r0, r4 + bl FUN_021DD82C + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_021FFBE4: + mov r0, #8 + str r0, [sp, #0x18] + ldr r0, [r4] + add r1, sp, #0xc + add r2, sp, #0x18 + bl FUN_021EFB5C + ldr r1, [sp, #0x10] + mov r0, #0 + str r1, [r4, #4] + ldrh r1, [sp, #0xe] + mov r2, r1, asr #8 + mov r1, r1, lsl #8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + strh r1, [r4, #8] + str r4, [r5] + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_021FFC30: .word FUN_021FFC84 +_021FFC34: .word FUN_021FFCB4 +_021FFC38: .word 0x021FFC74 + + arm_func_start FUN_021FFC3C +FUN_021FFC3C: ; 0x021FFC3C + stmdb sp!, {lr} + sub sp, sp, #0xa4 + add r3, sp, #4 + str r1, [sp, #4] + strh r2, [sp, #8] + str r3, [sp] + ldr r0, [r0, #0xc] + add r1, sp, #0 + bl FUN_021EF358 + cmp r0, #0 + ldrne r0, [r0] + moveq r0, #0 + add sp, sp, #0xa4 + ldmfd sp!, {pc} + ldr ip, _021FFC80 ; =FUN_021FCE4C + ldr r0, [r0] + bx ip + .align 2, 0 +_021FFC80: .word FUN_021FCE4C + + arm_func_start FUN_021FFC84 +FUN_021FFC84: ; 0x021FFC84 + ldr r3, [r0] + ldr r2, [r1] + ldr r0, [r3] + ldr r1, [r2] + cmp r0, r1 + subne r0, r0, r1 + ldreqh r1, [r3, #4] + ldreqh r0, [r2, #4] + subeq r0, r1, r0 + moveq r0, r0, lsl #0x10 + moveq r0, r0, asr #0x10 + bx lr + + arm_func_start FUN_021FFCB4 +FUN_021FFCB4: ; 0x021FFCB4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, [r0] + ldrh r0, [r2, #4] + ldr r2, [r2] + mul r0, r2, r0 + bl _u32_div_f + mov r0, r1 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_021FFCDC +FUN_021FFCDC: ; 0x021FFCDC + stmdb sp!, {r4, lr} + ldr r2, [r0] + mov r4, r1 + cmp r2, #0 + ldreq r2, _021FFD24 ; =0x0220EFD4 + moveq r1, #0 + streq r2, [r0] + streq r1, [r4] + ldmeqia sp!, {r4, pc} + ldr r1, [r4] + mvn r0, #0 + cmp r1, r0 + ldmneia sp!, {r4, pc} + mov r0, r2 + bl strlen + add r0, r0, #1 + str r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_021FFD24: .word 0x0220EFD4 + + arm_func_start FUN_021FFD28 +FUN_021FFD28: ; 0x021FFD28 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x104 + movs r8, r0 + mov r7, r1 + mov r6, r2 + beq _021FFD4C + ldrsb r1, [r8] + cmp r1, #0 + bne _021FFD58 +_021FFD4C: + mov r5, #0 + mov r4, r5 + b _021FFE84 +_021FFD58: + mov r1, #0x3a + bl strchr + movs r4, r0 + moveq r4, #0 + beq _021FFE40 + cmp r4, r8 + moveq r8, #0 + moveq r5, r8 + beq _021FFDB8 + sub sb, r4, r8 + cmp sb, #0x100 + blt _021FFD9C + ldr r0, _021FFEA0 ; =0x0220EFD8 + ldr r1, _021FFEA4 ; =0x0220EFF8 + mov r2, #0 + mov r3, #0x81 + bl __msl_assertion_failed +_021FFD9C: + add r0, sp, #0 + mov r1, r8 + mov r2, sb + bl memcpy + add r8, sp, #0 + mov r0, #0 + strb r0, [r8, sb] +_021FFDB8: + ldrsb r0, [r4, #1] + add r3, r4, #1 + cmp r0, #0 + beq _021FFE10 + ldr r1, _021FFEA8 ; =0x0210430C + mov r2, #0 +_021FFDD0: + cmp r0, #0 + blt _021FFDE0 + cmp r0, #0x80 + blt _021FFDE8 +_021FFDE0: + mov r0, r2 + b _021FFDF4 +_021FFDE8: + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + and r0, r0, #8 +_021FFDF4: + cmp r0, #0 + addeq sp, sp, #0x104 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldrsb r0, [r3, #1]! + cmp r0, #0 + bne _021FFDD0 +_021FFE10: + add r0, r4, #1 + bl atol + cmp r0, #0 + blt _021FFE2C + ldr r1, _021FFEAC ; =0x0000FFFF + cmp r0, r1 + ble _021FFE38 +_021FFE2C: + add sp, sp, #0x104 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_021FFE38: + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_021FFE40: + cmp r8, #0 + beq _021FFE84 + mov r0, r8 + bl FUN_021EFB38 + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + bne _021FFE84 + mov r0, r8 + bl FUN_0209A6EC + cmp r0, #0 + addeq sp, sp, #0x104 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r5, [r0] +_021FFE84: + cmp r7, #0 + strne r5, [r7] + cmp r6, #0 + strneh r4, [r6] + mov r0, #1 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_021FFEA0: .word 0x0220EFD8 +_021FFEA4: .word 0x0220EFF8 +_021FFEA8: .word 0x0210430C +_021FFEAC: .word 0x0000FFFF + + arm_func_start FUN_021FFEB0 +FUN_021FFEB0: ; 0x021FFEB0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + movs r5, r2 + mov r4, r1 + bne _021FFEE0 + ldr r2, _021FFF64 ; =0x02211394 + ldr r3, _021FFF68 ; =0x02211398 + ldr ip, [r2] + mov r1, #0x16 + eor ip, ip, #1 + mla r5, ip, r1, r3 + str ip, [r2] +_021FFEE0: + cmp r0, #0 + beq _021FFF38 + str r0, [sp] + cmp r4, #0 + beq _021FFF18 + add r0, sp, #0 + ldmia r0, {r0} + bl FUN_0209A27C + mov r2, r0 + ldr r1, _021FFF6C ; =0x0220F008 + mov r0, r5 + mov r3, r4 + bl sprintf + b _021FFF58 +_021FFF18: + add r0, sp, #0 + ldmia r0, {r0} + bl FUN_0209A27C + mov r2, r0 + ldr r1, _021FFF70 ; =0x0220F010 + mov r0, r5 + bl sprintf + b _021FFF58 +_021FFF38: + cmp r4, #0 + moveq r0, #0 + streqb r0, [r5] + beq _021FFF58 + ldr r1, _021FFF74 ; =0x0220F014 + mov r0, r5 + mov r2, r4 + bl sprintf +_021FFF58: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021FFF64: .word 0x02211394 +_021FFF68: .word 0x02211398 +_021FFF6C: .word 0x0220F008 +_021FFF70: .word 0x0220F010 +_021FFF74: .word 0x0220F014 + + arm_func_start FUN_021FFF78 +FUN_021FFF78: ; 0x021FFF78 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x2c + mov r6, r0 + mov r7, r1 + mov r5, r2 + bl FUN_02200D40 + cmp r0, #0 + addeq sp, sp, #0x2c + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldrb r4, [r6, #7] + cmp r4, #5 + beq _021FFFB0 + cmp r4, #7 + bne _0220004C +_021FFFB0: + cmp r7, #0x14 + addlt sp, sp, #0x2c + ldmltia sp!, {r4, r5, r6, r7, pc} + add r3, sp, #0 + mov r2, #0xa +_021FFFC4: + ldrb r1, [r6], #1 + ldrb r0, [r6], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _021FFFC4 + ldr r3, [sp, #8] + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r3, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 + bl FUN_02200ED4 + cmp r0, #0 + addeq sp, sp, #0x2c + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #5 + bne _02200038 + add r1, sp, #0 + mov r2, r5 + bl FUN_022002CC + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, pc} +_02200038: + add r1, sp, #0 + mov r2, r5 + bl FUN_022001E4 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, pc} +_0220004C: + cmp r7, #0x15 + addlt sp, sp, #0x2c + ldmltia sp!, {r4, r5, r6, r7, pc} + add r3, sp, #0x14 + mov r2, #0xa +_02200060: + ldrb r1, [r6], #1 + ldrb r0, [r6], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02200060 + ldrb r0, [r6] + strb r0, [r3] + ldr r3, [sp, #0x1c] + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r3, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 + bl FUN_02200ED4 + cmp r0, #0 + addeq sp, sp, #0x2c + ldmeqia sp!, {r4, r5, r6, r7, pc} + add r1, sp, #0x14 + mov r2, r5 + bl FUN_022000D4 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_022000D4 +FUN_022000D4: ; 0x022000D4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r3, r1 + ldrb r1, [r3, #7] + mov r4, r0 + cmp r1, #1 + beq _02200100 + cmp r1, #2 + beq _0220019C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02200100: + ldrb r0, [r3, #0xc] + cmp r0, #2 + addhi sp, sp, #8 + ldmhiia sp!, {r4, pc} + add r0, r4, r0, lsl #2 + mov r1, #1 + str r1, [r0, #0x14] + ldr r0, [r4, #0x10] + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #0x18] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x1c] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #4] + mvn r0, #0 + cmp r1, r0 + beq _0220016C + ldr r0, [r4, #0x14] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} +_0220016C: + mov r0, #1 + str r0, [r4, #0x10] + bl FUN_021F025C + ldr r1, _022001E0 ; =0x00002710 + add r0, r0, r1 + str r0, [r4, #0x28] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x34] + blx r2 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0220019C: + mov r0, #3 + strb r0, [r3, #7] + ldrh r0, [r2, #2] + mov ip, #0x15 + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + str ip, [sp] + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov ip, r0, lsl #0x10 + ldr r1, [r2, #4] + ldr r0, [r4] + mov r2, ip, lsr #0x10 + bl FUN_02200CEC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022001E0: .word 0x00002710 + + arm_func_start FUN_022001E4 +FUN_022001E4: ; 0x022001E4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r3, [r5, #0x10] + mov r4, r2 + cmp r3, #2 + addlt sp, sp, #4 + ldmltia sp!, {r4, r5, pc} + ldr r3, [r4, #4] + mov r2, #1 + str r3, [r5, #0x2c] + ldrh r3, [r4, #2] + mov ip, r3, asr #8 + mov r3, r3, lsl #8 + and ip, ip, #0xff + and r3, r3, #0xff00 + orr r3, ip, r3 + strh r3, [r5, #0x30] + strb r2, [r5, #0x32] + ldrb r2, [r1, #0x12] + cmp r2, #0 + bne _02200248 + bl FUN_022008D8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02200248: + ldr r2, [r5, #0x10] + cmp r2, #2 + bne _022002AC + ldrb r1, [r5, #0x33] + cmp r1, #0 + bne _02200264 + bl FUN_022008D8 +_02200264: + mov r0, #3 + str r0, [r5, #0x10] + bl FUN_021F025C + ldr r1, _022002C8 ; =0x00001388 + mvn r2, #0 + add r0, r0, r1 + str r0, [r5, #0x28] + ldr r1, [r5, #4] + cmp r1, r2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r3, [r5, #0x3c] + ldr r5, [r5, #0x38] + mov r2, r4 + mov r0, #0 + blx r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022002AC: + ldrb r1, [r1, #0x13] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl FUN_022008D8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022002C8: .word 0x00001388 + + arm_func_start FUN_022002CC +FUN_022002CC: ; 0x022002CC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r1 + ldrb r1, [r5, #0x13] + mov r4, r0 + cmp r1, #0 + bne _022002F0 + mov r1, r2 + bl FUN_0220039C +_022002F0: + ldr r0, [r4, #0x10] + cmp r0, #2 + addge sp, sp, #4 + ldmgeia sp!, {r4, r5, pc} + ldrb r1, [r5, #0x13] + cmp r1, #0 + beq _02200348 + mov r0, #3 + cmp r1, #1 + moveq r0, #1 + beq _02200324 + cmp r1, #2 + moveq r0, #2 +_02200324: + ldr r3, [r4, #0x3c] + ldr ip, [r4, #0x38] + mvn r1, #0 + mov r2, #0 + blx ip + ldr r0, [r4, #8] + bl FUN_022006B4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02200348: + ldr r0, [r5, #0xc] + mov r1, #0 + str r0, [r4, #0x2c] + ldrh r2, [r5, #0x10] + mov r0, #2 + mov r3, r2, asr #8 + mov r2, r2, lsl #8 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r4, #0x30] + str r1, [r4, #0x20] + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x34] + blx r2 + mov r0, r4 + bl FUN_022008D8 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_0220039C +FUN_0220039C: ; 0x0220039C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + ldr r6, _02200464 ; =0x0220F018 + add r3, sp, #4 + ldrb ip, [r6] + ldrb r2, [r6, #1] + mov r5, #2 + mov r4, #6 + strb ip, [r3] + strb r2, [r3, #1] + ldrb lr, [r6, #2] + ldrb ip, [r6, #3] + mov r2, #0x15 + strb lr, [r3, #2] + strb ip, [r3, #3] + ldrb lr, [r6, #4] + ldrb ip, [r6, #5] + strb lr, [r3, #4] + strb ip, [r3, #5] + strb r5, [sp, #0xa] + strb r4, [sp, #0xb] + ldr r4, [r0, #0xc] + strb r4, [sp, #0x11] + ldr r5, [r0, #8] + mov lr, r5, lsr #0x18 + mov ip, r5, lsr #8 + mov r4, r5, lsl #8 + mov r5, r5, lsl #0x18 + and lr, lr, #0xff + and ip, ip, #0xff00 + and r4, r4, #0xff0000 + orr ip, lr, ip + and r5, r5, #0xff000000 + orr r4, r4, ip + orr r4, r5, r4 + str r4, [sp, #0xc] + ldrh lr, [r1, #2] + str r2, [sp] + mov ip, lr, asr #8 + mov r2, lr, lsl #8 + and ip, ip, #0xff + and r2, r2, #0xff00 + orr r2, ip, r2 + mov r2, r2, lsl #0x10 + ldr r0, [r0] + ldr r1, [r1, #4] + mov r2, r2, lsr #0x10 + bl FUN_02200CEC + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02200464: .word 0x0220F018 + + arm_func_start FUN_02200468 +FUN_02200468: ; 0x02200468 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _022004B8 ; =0x022113D4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl FUN_021EF06C + subs r5, r0, #1 + addmi sp, sp, #4 + ldmmiia sp!, {r4, r5, pc} + ldr r4, _022004B8 ; =0x022113D4 +_02200498: + ldr r0, [r4] + mov r1, r5 + bl FUN_021EEFFC + bl FUN_022004BC + subs r5, r5, #1 + bpl _02200498 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022004B8: .word 0x022113D4 + + arm_func_start FUN_022004BC +FUN_022004BC: ; 0x022004BC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov r1, #8 + mov sb, r0 + str r1, [sp, #0x10] + ldr r1, [sb, #0x10] + cmp r1, #4 + bne _022004E8 + bl FUN_02200DA4 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022004E8: + ldr r0, [sb] + mvn sl, #0 + cmp r0, sl + beq _02200564 + ldr r6, _022006B0 ; =0x022113D8 + add r8, sp, #8 + add r7, sp, #0x10 + mov r5, #0x200 + mov r4, #0 +_0220050C: + bl FUN_021EFF2C + cmp r0, #0 + beq _02200564 + str r8, [sp] + str r7, [sp, #4] + ldr r0, [sb] + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl FUN_021EFC40 + mov r1, r0 + cmp r1, sl + beq _02200564 + mov r0, r6 + mov r2, r8 + bl FUN_021FFF78 + ldr r0, [sb, #0x10] + cmp r0, #4 + beq _02200564 + ldr r0, [sb] + cmp r0, sl + bne _0220050C +_02200564: + ldr r0, [sb, #0x10] + cmp r0, #0 + beq _02200578 + cmp r0, #2 + bne _022005E4 +_02200578: + bl FUN_021F025C + ldr r1, [sb, #0x28] + cmp r0, r1 + bls _022005E4 + ldr r1, [sb, #0x20] + ldr r0, [sb, #0x24] + cmp r1, r0 + ble _022005BC + ldr r3, [sb, #0x3c] + ldr r4, [sb, #0x38] + mov r0, #2 + mvn r1, #0 + mov r2, #0 + blx r4 + ldr r0, [sb, #8] + bl FUN_022006B4 + b _022005E4 +_022005BC: + add r0, r1, #1 + str r0, [sb, #0x20] + ldr r0, [sb, #0x10] + cmp r0, #0 + bne _022005DC + mov r0, sb + bl FUN_022009F8 + b _022005E4 +_022005DC: + mov r0, sb + bl FUN_022008D8 +_022005E4: + ldr r0, [sb, #0x10] + cmp r0, #3 + bne _02200664 + bl FUN_021F025C + ldr r1, [sb, #0x28] + cmp r0, r1 + bls _02200664 + ldr r1, [sb, #4] + mvn r0, #0 + cmp r1, r0 + bne _0220065C + mov r0, #2 + strb r0, [sp, #0x15] + ldrh r1, [sb, #0x30] + add r2, sp, #0x14 + mov r0, #0 + mov r3, r1, asr #8 + mov r1, r1, lsl #8 + and r3, r3, #0xff + and r1, r1, #0xff00 + orr r1, r3, r1 + strh r1, [sp, #0x16] + ldr r1, [sb, #0x2c] + str r1, [sp, #0x18] + ldr r1, [sb] + ldr r3, [sb, #0x3c] + ldr r4, [sb, #0x38] + blx r4 + mvn r0, #0 + str r0, [sb] +_0220065C: + ldr r0, [sb, #8] + bl FUN_022006B4 +_02200664: + ldr r0, [sb, #0x10] + cmp r0, #1 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl FUN_021F025C + ldr r1, [sb, #0x28] + cmp r0, r1 + addls sp, sp, #0x20 + ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r3, [sb, #0x3c] + ldr r4, [sb, #0x38] + mov r0, #1 + mvn r1, #0 + mov r2, #0 + blx r4 + ldr r0, [sb, #8] + bl FUN_022006B4 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022006B0: .word 0x022113D8 + + arm_func_start FUN_022006B4 +FUN_022006B4: ; 0x022006B4 + stmdb sp!, {r4, lr} + bl FUN_02200ED4 + movs r4, r0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + mvn r1, #0 + cmp r0, r1 + beq _022006D8 + bl FUN_021EFD9C +_022006D8: + mvn r0, #0 + str r0, [r4] + mov r0, #4 + str r0, [r4, #0x10] + ldmia sp!, {r4, pc} + + arm_func_start FUN_022006EC +FUN_022006EC: ; 0x022006EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _022007B4 ; =0x02210E5C + mov r8, r0 + ldr r0, [ip] + mov r7, r1 + cmp r0, #1 + mov r6, r2 + mov r5, r3 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + bl FUN_022007B8 + cmp r0, #0 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl FUN_02200E0C + movs r4, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + str r8, [r4, #4] + str r6, [r4, #0xc] + str r7, [r4, #8] + ldr r1, [sp, #0x18] + str r5, [r4, #0x34] + mov r0, #2 + ldr r2, [sp, #0x1c] + str r1, [r4, #0x38] + mov r1, r0 + str r2, [r4, #0x3c] + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x20] + strb r0, [r4, #0x32] + strb r0, [r4, #0x33] + str r0, [r4, #0x2c] + strh r0, [r4, #0x30] + str r0, [r4, #0x24] + ldr r1, [r4] + mvn r0, #0 + cmp r1, r0 + bne _022007A4 + mov r0, r4 + bl FUN_02200DA4 + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022007A4: + mov r0, r4 + bl FUN_022009F8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022007B4: .word 0x02210E5C + + arm_func_start FUN_022007B8 +FUN_022007B8: ; 0x022007B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02200848 ; =0x022113D0 + ldr r0, [r0] + cmp r0, #0 + bne _022007E8 + ldr r0, _0220084C ; =0x022113C8 + ldr r1, _02200850 ; =0x0220F020 + ldr r0, [r0] + bl FUN_02200860 + ldr r1, _02200848 ; =0x022113D0 + str r0, [r1] +_022007E8: + ldr r0, _02200854 ; =0x022113CC + ldr r0, [r0] + cmp r0, #0 + bne _02200810 + ldr r0, _02200858 ; =0x022113C4 + ldr r1, _0220085C ; =0x0220F03C + ldr r0, [r0] + bl FUN_02200860 + ldr r1, _02200854 ; =0x022113CC + str r0, [r1] +_02200810: + ldr r0, _02200848 ; =0x022113D0 + ldr r0, [r0] + cmp r0, #0 + beq _02200830 + ldr r0, _02200854 ; =0x022113CC + ldr r0, [r0] + cmp r0, #0 + bne _0220083C +_02200830: + add sp, sp, #4 + mov r0, #0 + ldmfd sp!, {pc} +_0220083C: + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02200848: .word 0x022113D0 +_0220084C: .word 0x022113C8 +_02200850: .word 0x0220F020 +_02200854: .word 0x022113CC +_02200858: .word 0x022113C4 +_0220085C: .word 0x0220F03C + + arm_func_start FUN_02200860 +FUN_02200860: ; 0x02200860 + stmdb sp!, {lr} + sub sp, sp, #0x84 + cmp r0, #0 + bne _0220088C + ldr r2, _02200898 ; =0x0220F058 + str r1, [sp] + ldr r3, _0220089C ; =0x02210EA0 + add r0, sp, #4 + mov r1, #0x80 + bl snprintf + add r0, sp, #4 +_0220088C: + bl FUN_022008A0 + add sp, sp, #0x84 + ldmfd sp!, {pc} + .align 2, 0 +_02200898: .word 0x0220F058 +_0220089C: .word 0x02210EA0 + + arm_func_start FUN_022008A0 +FUN_022008A0: ; 0x022008A0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_021EFB38 + mvn r1, #0 + cmp r0, r1 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl FUN_0209A6EC + cmp r0, #0 + moveq r0, #0 + ldrne r0, [r0, #0xc] + ldrne r0, [r0] + ldrne r0, [r0] + ldmia sp!, {r4, pc} + + arm_func_start FUN_022008D8 +FUN_022008D8: ; 0x022008D8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x1c + ldr lr, _022009F4 ; =0x0220F018 + add r5, sp, #4 + ldrb r4, [lr] + ldrb r3, [lr, #1] + mov r2, #2 + mov r1, #7 + strb r4, [r5] + strb r3, [r5, #1] + ldrb ip, [lr, #2] + ldrb r3, [lr, #3] + mov r4, r0 + strb ip, [r5, #2] + strb r3, [r5, #3] + ldrb r3, [lr, #4] + ldrb r0, [lr, #5] + strb r3, [r5, #4] + strb r0, [r5, #5] + strb r2, [sp, #0xa] + strb r1, [sp, #0xb] + ldr r3, [r4, #8] + mov r1, r3, lsr #0x18 + mov r0, r3, lsr #8 + mov r2, r3, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + mov r3, r3, lsl #0x18 + orr r0, r1, r0 + and r2, r2, #0xff0000 + and r1, r3, #0xff000000 + orr r0, r2, r0 + orr r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [r4, #0x2c] + add r3, sp, #4 + str r0, [sp, #0x10] + ldrh r0, [r4, #0x30] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0x14] + ldrb r0, [r4, #0x32] + mvn r1, #0 + strb r0, [sp, #0x16] + ldr r0, [r4, #0x10] + cmp r0, #2 + movne r0, #1 + moveq r0, #0 + strb r0, [sp, #0x17] + ldr r0, [r4, #4] + cmp r0, r1 + ldreq r0, [r4] + mov r1, #0x14 + str r1, [sp] + ldrh r2, [r4, #0x30] + ldr r1, [r4, #0x2c] + bl FUN_02200CEC + bl FUN_021F025C + add r0, r0, #0x2bc + str r0, [r4, #0x28] + mov r0, #0xc + str r0, [r4, #0x24] + ldrb r0, [r4, #0x32] + cmp r0, #0 + movne r0, #1 + strneb r0, [r4, #0x33] + add sp, sp, #0x1c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022009F4: .word 0x0220F018 + + arm_func_start FUN_022009F8 +FUN_022009F8: ; 0x022009F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x60 + ldr r7, _02200C30 ; =0x0220F018 + mov r6, r0 + ldrb r4, [r7] + ldrb r3, [r7, #1] + add r5, sp, #4 + mov r2, #2 + strb r4, [r5] + strb r3, [r5, #1] + ldrb r4, [r7, #2] + ldrb r3, [r7, #3] + mov r1, #0 + mvn r0, #0 + strb r4, [r5, #2] + strb r3, [r5, #3] + ldrb r4, [r7, #4] + ldrb r3, [r7, #5] + strb r4, [r5, #4] + strb r3, [r5, #5] + strb r2, [r5, #6] + strb r1, [r5, #7] + ldr r2, [r6, #0xc] + strb r2, [r5, #0xd] + ldr r7, [r6, #8] + mov r3, r7, lsr #0x18 + mov r2, r7, lsr #8 + mov r4, r7, lsl #8 + and r3, r3, #0xff + and r2, r2, #0xff00 + mov r7, r7, lsl #0x18 + orr r2, r3, r2 + and r4, r4, #0xff0000 + and r3, r7, #0xff000000 + orr r2, r4, r2 + orr r2, r3, r2 + str r2, [r5, #8] + ldr r2, [r6, #4] + cmp r2, r0 + movne r1, #1 + strb r1, [r5, #0xe] + bl FUN_02200C78 + mov r7, r0 + bl FUN_02200C78 + mov r8, r0 + bl FUN_02200C78 + mov r4, r0 + bl FUN_02200C78 + mov r2, #0 + mov r1, r7, lsl #0x18 + and r7, r1, #0xff000000 + mov r1, r8, lsl #8 + mov r0, r0, lsr #8 + and r3, r1, #0xff0000 + mov r1, r4, lsr #0x18 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + orr r0, r3, r0 + orr r3, r7, r0 + mov r1, r3, lsr #0x18 + strb r1, [sp, #0x13] + mov r1, r3, lsr #8 + mov r0, r3, lsr #0x10 + strb r1, [sp, #0x15] + strb r0, [sp, #0x14] + ldr r1, _02200C34 ; =0x02210EA0 + add r0, sp, #0x19 + strb r3, [sp, #0x16] + strb r2, [sp, #0x17] + strb r2, [sp, #0x18] + bl strcpy + ldr r0, _02200C34 ; =0x02210EA0 + bl strlen + ldrb r1, [r5, #0xe] + add r4, r0, #0x16 + cmp r1, #0 + beq _02200B60 + ldr r0, [r6, #0x14] + cmp r0, #0 + bne _02200B60 + mov r0, #0 + strb r0, [r5, #0xc] + str r4, [sp] + ldr r1, _02200C38 ; =0x022113D0 + ldr r0, [r6, #4] + ldr r1, [r1] + ldr r2, _02200C3C ; =0x00006CFD + mov r3, r5 + bl FUN_02200CEC +_02200B60: + ldr r0, [r6, #0x18] + cmp r0, #0 + bne _02200B90 + mov r0, #1 + strb r0, [r5, #0xc] + str r4, [sp] + ldr r1, _02200C38 ; =0x022113D0 + ldr r0, [r6] + ldr r1, [r1] + ldr r2, _02200C3C ; =0x00006CFD + mov r3, r5 + bl FUN_02200CEC +_02200B90: + ldrb r0, [r5, #0xe] + cmp r0, #0 + ldrne r8, [r6, #4] + ldreq r8, [r6] + cmp r0, #0 + ldrne r0, [r6, #4] + ldreq r0, [r6] + bl FUN_02200C44 + mov r7, r0 + mov r0, r8 + bl FUN_02200C44 + mov r1, r7, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, r1, asr #8 + strb r1, [sp, #0x18] + strb r0, [sp, #0x17] + ldr r0, [r6, #0x1c] + cmp r0, #0 + bne _02200C14 + mov r0, #2 + strb r0, [r5, #0xc] + str r4, [sp] + ldr r1, _02200C40 ; =0x022113CC + ldr r0, [r6] + ldr r1, [r1] + ldr r2, _02200C3C ; =0x00006CFD + mov r3, r5 + bl FUN_02200CEC +_02200C14: + bl FUN_021F025C + add r0, r0, #0x1f4 + str r0, [r6, #0x28] + mov r0, #0x1e + str r0, [r6, #0x24] + add sp, sp, #0x60 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02200C30: .word 0x0220F018 +_02200C34: .word 0x02210EA0 +_02200C38: .word 0x022113D0 +_02200C3C: .word 0x00006CFD +_02200C40: .word 0x022113CC + + arm_func_start FUN_02200C44 +FUN_02200C44: ; 0x02200C44 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r3, #8 + add r1, sp, #0 + add r2, sp, #8 + str r3, [sp, #8] + bl FUN_021EFB5C + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + ldrneh r0, [sp, #2] + add sp, sp, #0xc + ldmfd sp!, {pc} + + arm_func_start FUN_02200C78 +FUN_02200C78: ; 0x02200C78 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, #0 + bl FUN_021EFE70 + movs r6, r0 + addeq sp, sp, #4 + moveq r0, r5 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r4, _02200CE8 ; =0x0100007F + mov r7, r5 +_02200CA0: + ldr r0, [r6, #0xc] + ldr r0, [r0, r7, lsl #2] + cmp r0, #0 + beq _02200CDC + ldr r1, [r0] + cmp r1, r4 + beq _02200CD4 + mov r5, r1 + bl FUN_021EFDEC + cmp r0, #0 + addne sp, sp, #4 + movne r0, r5 + ldmneia sp!, {r4, r5, r6, r7, pc} +_02200CD4: + add r7, r7, #1 + b _02200CA0 +_02200CDC: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02200CE8: .word 0x0100007F + + arm_func_start FUN_02200CEC +FUN_02200CEC: ; 0x02200CEC + stmdb sp!, {lr} + sub sp, sp, #0x14 + mov ip, r2, asr #8 + mov r2, r2, lsl #8 + str r1, [sp, #0xc] + mov r1, r3 + and r3, ip, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + mov lr, #2 + strh r2, [sp, #0xa] + add r3, sp, #8 + strb lr, [sp, #9] + str r3, [sp] + mov ip, #8 + ldr r2, [sp, #0x18] + mov r3, #0 + str ip, [sp, #4] + bl FUN_021EFBD4 + add sp, sp, #0x14 + ldmfd sp!, {pc} + + arm_func_start FUN_02200D40 +FUN_02200D40: ; 0x02200D40 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02200D68 ; =0x0220F018 + mov r2, #6 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02200D68: .word 0x0220F018 + + arm_func_start FUN_02200D6C +FUN_02200D6C: ; 0x02200D6C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02200DA0 ; =0x022113D4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021EF074 + ldr r0, _02200DA0 ; =0x022113D4 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02200DA0: .word 0x022113D4 + + arm_func_start FUN_02200DA4 +FUN_02200DA4: ; 0x02200DA4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02200E08 ; =0x022113D4 + mov r6, r0 + ldr r0, [r1] + mov r5, #0 + bl FUN_021EF06C + cmp r0, #0 + ldmleia sp!, {r4, r5, r6, pc} + ldr r4, _02200E08 ; =0x022113D4 +_02200DC8: + ldr r0, [r4] + mov r1, r5 + bl FUN_021EEFFC + cmp r6, r0 + bne _02200DF0 + ldr r0, _02200E08 ; =0x022113D4 + mov r1, r5 + ldr r0, [r0] + bl FUN_021EEDE0 + ldmia sp!, {r4, r5, r6, pc} +_02200DF0: + ldr r0, [r4] + add r5, r5, #1 + bl FUN_021EF06C + cmp r5, r0 + blt _02200DC8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02200E08: .word 0x022113D4 + + arm_func_start FUN_02200E0C +FUN_02200E0C: ; 0x02200E0C + stmdb sp!, {lr} + sub sp, sp, #0x44 + mov r0, #0 + add r2, sp, #0 + mov r1, r0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2, {r0, r1} + ldr r0, _02200E9C ; =0x022113D4 + ldr r0, [r0] + cmp r0, #0 + bne _02200E68 + ldr r2, _02200EA0 ; =FUN_02200EA4 + mov r0, #0x40 + mov r1, #4 + bl FUN_021EF0E4 + ldr r1, _02200E9C ; =0x022113D4 + str r0, [r1] +_02200E68: + ldr r0, _02200E9C ; =0x022113D4 + add r1, sp, #0 + ldr r0, [r0] + bl FUN_021EEFA8 + ldr r0, _02200E9C ; =0x022113D4 + ldr r0, [r0] + bl FUN_021EF06C + ldr r2, _02200E9C ; =0x022113D4 + sub r1, r0, #1 + ldr r0, [r2] + bl FUN_021EEFFC + add sp, sp, #0x44 + ldmfd sp!, {pc} + .align 2, 0 +_02200E9C: .word 0x022113D4 +_02200EA0: .word FUN_02200EA4 + + arm_func_start FUN_02200EA4 +FUN_02200EA4: ; 0x02200EA4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + mvn r1, #0 + cmp r0, r1 + beq _02200EC0 + bl FUN_021EFD9C +_02200EC0: + mvn r0, #0 + str r0, [r4] + mov r0, #4 + str r0, [r4, #0x10] + ldmia sp!, {r4, pc} + + arm_func_start FUN_02200ED4 +FUN_02200ED4: ; 0x02200ED4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02200F38 ; =0x022113D4 + mov r6, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r5, #0 + bl FUN_021EF06C + cmp r0, #0 + ble _02200F30 + ldr r4, _02200F38 ; =0x022113D4 +_02200F04: + ldr r0, [r4] + mov r1, r5 + bl FUN_021EEFFC + ldr r1, [r0, #8] + cmp r1, r6 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r4] + add r5, r5, #1 + bl FUN_021EF06C + cmp r5, r0 + blt _02200F04 +_02200F30: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02200F38: .word 0x022113D4 + + arm_func_start FUN_02200F3C +FUN_02200F3C: ; 0x02200F3C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr ip, _02201120 ; =0x0000082C + sub sp, sp, ip + mov sl, r0 + mov sb, r1 + mov r3, #0 + add r0, sp, #0x24 + add r2, sl, #0x84 + mov r1, #3 + str r3, [sp, #0x824] + bl FUN_02201DCC + ldr r4, _02201124 ; =0x022115D8 + mov r8, #0 + ldr r0, [r4] + cmp r0, #0 + ble _02200FD0 + ldr fp, _02201128 ; =0x0220F174 + ldr r5, _0220112C ; =0x022115DC + add r7, sp, #0x10 + add r6, sp, #0x24 +_02200F8C: + mov r0, r7 + mov r1, fp + mov r2, r8 + bl sprintf + mov r0, r6 + mov r1, r7 + bl FUN_022021C0 + add r0, r5, r8, lsl #2 + ldmia r0, {r0} + bl FUN_0209A27C + mov r1, r0 + mov r0, r6 + bl FUN_022021C0 + add r8, r8, #1 + ldr r0, [r4] + cmp r8, r0 + blt _02200F8C +_02200FD0: + ldr r1, _02201130 ; =0x0220F180 + add r0, sp, #0x24 + bl FUN_022021C0 + ldr r1, [sl, #0xc0] + add r0, sp, #0x24 + bl FUN_02202220 + ldr r1, _02201134 ; =0x0220F18C + add r0, sp, #0x24 + bl FUN_022021C0 + ldr r0, [sl, #0xc8] + cmp r0, #0 + ldrne r1, _02201138 ; =0x0220F194 + add r0, sp, #0x24 + ldreq r1, _0220113C ; =0x0220F198 + bl FUN_022021C0 + cmp sb, #0 + beq _0220102C + ldr r1, _02201140 ; =0x0220F19C + add r0, sp, #0x24 + bl FUN_022021C0 + add r0, sp, #0x24 + mov r1, sb + bl FUN_02202220 +_0220102C: + ldr r1, _02201144 ; =0x0220F1AC + add r0, sp, #0x24 + bl FUN_022021C0 + add r0, sp, #0x24 + add r1, sl, #4 + bl FUN_022021C0 + ldr r0, [sl, #0xa8] + cmp r0, #0 + beq _02201084 + ldr r1, _02201148 ; =0x0220F1B8 + add r0, sp, #0x24 + bl FUN_022021C0 + ldr r1, [sl, #0x104] + add r0, sp, #0x24 + bl FUN_02202220 + ldr r1, _0220114C ; =0x0220F1C4 + add r0, sp, #0x24 + bl FUN_022021C0 + add r0, sl, #0x100 + ldrh r1, [r0, #8] + add r0, sp, #0x24 + bl FUN_02202220 +_02201084: + cmp sb, #2 + beq _022010B4 + mov r2, #0xff + str r2, [sp] + mov r3, #0 + str r3, [sp, #4] + str r2, [sp, #8] + add r1, sp, #0x24 + mov r0, sl + str r3, [sp, #0xc] + bl FUN_022019B4 + b _022010D4 +_022010B4: + ldr r2, [sp, #0x824] + rsb r0, r2, #0x800 + cmp r0, #1 + addge r1, r2, #1 + strge r1, [sp, #0x824] + addge r0, sp, #0x24 + movge r1, #0 + strgeb r1, [r0, r2] +_022010D4: + add r0, sl, #0xcc + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [sl] + ldr r2, [sp, #0x824] + add r1, sp, #0x24 + mov r3, #0 + bl FUN_021EFBD4 + bl FUN_021F025C + str r0, [sl, #0xac] + ldr r0, [sl, #0xac] + cmp sb, #0 + str r0, [sl, #0xb0] + movne r0, #0 + strne r0, [sl, #0xb4] + ldr ip, _02201120 ; =0x0000082C + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02201120: .word 0x0000082C +_02201124: .word 0x022115D8 +_02201128: .word 0x0220F174 +_0220112C: .word 0x022115DC +_02201130: .word 0x0220F180 +_02201134: .word 0x0220F18C +_02201138: .word 0x0220F194 +_0220113C: .word 0x0220F198 +_02201140: .word 0x0220F19C +_02201144: .word 0x0220F1AC +_02201148: .word 0x0220F1B8 +_0220114C: .word 0x0220F1C4 + + arm_func_start FUN_02201150 +FUN_02201150: ; 0x02201150 + stmdb sp!, {r4, lr} + sub sp, sp, #0x810 + mov r4, r0 + mov r3, #0 + add r0, sp, #8 + add r2, r4, #0x84 + mov r1, #8 + str r3, [sp, #0x808] + bl FUN_02201DCC + add r0, r4, #0xcc + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, [sp, #0x808] + add r1, sp, #8 + mov r3, #0 + bl FUN_021EFBD4 + bl FUN_021F025C + str r0, [r4, #0xb0] + add sp, sp, #0x810 + ldmia sp!, {r4, pc} + + arm_func_start FUN_022011A8 +FUN_022011A8: ; 0x022011A8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + ldr ip, _02201504 ; =0x00000814 + sub sp, sp, ip + movs r8, r0 + mov r0, #0 + str r0, [sp, #0x80c] + ldreq r0, _02201508 ; =0x0220F060 + mov r7, r2 + ldreq r8, [r0] + ldrsb r0, [r1] + mov r6, r3 + cmp r0, #0x3b + bne _0220120C + ldr r3, [r8, #0xd4] + cmp r3, #0 + ldreq ip, _02201504 ; =0x00000814 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, r1 + mov r1, r7 + mov r2, r6 + blx r3 + ldr ip, _02201504 ; =0x00000814 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0220120C: + cmp r0, #0x5c + bne _0220124C + add r1, sp, #0xc + mov r0, r8 + bl FUN_022016A8 + str r6, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r8] + ldr r2, [sp, #0x80c] + add r1, sp, #0xc + mov r3, #0 + bl FUN_021EFBD4 + ldr ip, _02201504 ; =0x00000814 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0220124C: + cmp r7, #7 + ldrlt ip, _02201504 ; =0x00000814 + addlt sp, sp, ip + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + and r0, r0, #0xff + cmp r0, #0xfe + ldrne ip, _02201504 ; =0x00000814 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r1, #1] + cmp r0, #0xfd + ldrne ip, _02201504 ; =0x00000814 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r8, #0xb8] + add r5, r1, #3 + cmp r0, #0 + movgt r0, #0 + strgt r0, [r8, #0xb8] + ldrsb sb, [r1, #2] + add r4, r1, #7 + add r0, sp, #0xc + mov r1, sb + mov r2, r5 + sub r7, r7, #7 + bl FUN_02201DCC + cmp sb, #8 + addls pc, pc, sb, lsl #2 + b _022014CC +_022012C0: ; jump table + b _022012E4 ; case 0 + b _022012FC ; case 1 + b _02201338 ; case 2 + b _022014CC ; case 3 + b _02201370 ; case 4 + b _022014CC ; case 5 + b _022013F8 ; case 6 + b _022014CC ; case 7 + b _022014CC ; case 8 +_022012E4: + add r1, sp, #0xc + mov r0, r8 + mov r2, r4 + mov r3, r7 + bl FUN_022018F0 + b _022014D8 +_022012FC: + cmp r7, #0xd + blt _02201320 + ldr r0, [r8, #0xa8] + cmp r0, #0 + beq _02201320 + add r1, r4, r7 + mov r0, r8 + sub r1, r1, #0xd + bl FUN_02201C70 +_02201320: + add r1, sp, #0xc + mov r0, r8 + mov r2, r4 + mov r3, r7 + bl FUN_02201D2C + b _022014D8 +_02201338: + ldr r0, [sp, #0x80c] + cmp r7, #0x20 + movgt r7, #0x20 + add r3, sp, #0xc + mov r5, #5 + mov r1, r4 + mov r2, r7 + add r0, r3, r0 + strb r5, [sp, #0xc] + bl memcpy + ldr r0, [sp, #0x80c] + add r0, r0, r7 + str r0, [sp, #0x80c] + b _022014D8 +_02201370: + ldr r1, [r8, #0xb8] + mvn r0, #0 + cmp r1, r0 + ldreq ip, _02201504 ; =0x00000814 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, #0 + str r0, [sp, #8] +_02201390: + ldr r2, [sp, #8] + add r0, r8, r2 + ldrsb r1, [r5, r2] + ldrsb r0, [r0, #0x84] + cmp r1, r0 + ldrne ip, _02201504 ; =0x00000814 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r0, r2, #1 + str r0, [sp, #8] + cmp r0, #4 + blt _02201390 + cmp r7, #2 + ldrlt ip, _02201504 ; =0x00000814 + addlt sp, sp, ip + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + mvn r0, #0 + str r0, [r8, #0xb8] + ldrsb r0, [r4] + ldr r2, [r8, #0x10c] + ldr r3, [r8, #0x9c] + add r1, r4, #1 + blx r3 + ldr ip, _02201504 ; =0x00000814 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022013F8: + mov r0, #0 + str r0, [sp, #8] +_02201400: + ldr r2, [sp, #8] + add r0, r8, r2 + ldrsb r1, [r5, r2] + ldrsb r0, [r0, #0x84] + cmp r1, r0 + ldrne ip, _02201504 ; =0x00000814 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r0, r2, #1 + str r0, [sp, #8] + cmp r0, #4 + blt _02201400 + cmp r7, #4 + ldrlt ip, _02201504 ; =0x00000814 + addlt sp, sp, ip + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, #7 + strb r0, [sp, #0xc] + ldrb r1, [r4] + ldrb r0, [r4, #1] + ldr r2, [sp, #0x80c] + add r5, sp, #0xc + strb r1, [r5, r2] + add r5, r5, r2 + strb r0, [r5, #1] + ldrb r2, [r4, #2] + ldrb r1, [r4, #3] + add r3, sp, #8 + mov r0, r8 + strb r2, [r5, #2] + strb r1, [r5, #3] + ldr r1, [sp, #0x80c] + add r1, r1, #4 + str r1, [sp, #0x80c] + ldrb r2, [r4] + ldrb r1, [r4, #1] + strb r2, [r3] + strb r1, [r3, #1] + ldrb r2, [r4, #2] + ldrb r1, [r4, #3] + strb r2, [r3, #2] + strb r1, [r3, #3] + ldr r1, [sp, #8] + bl FUN_0220150C + cmp r0, #0 + bne _022014D8 + mov r0, r8 + add r1, r4, #4 + sub r2, r7, #4 + bl FUN_0220157C + b _022014D8 +_022014CC: + ldr ip, _02201504 ; =0x00000814 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022014D8: + str r6, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r8] + ldr r2, [sp, #0x80c] + add r1, sp, #0xc + mov r3, #0 + bl FUN_021EFBD4 + ldr ip, _02201504 ; =0x00000814 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02201504: .word 0x00000814 +_02201508: .word 0x0220F060 + + arm_func_start FUN_0220150C +FUN_0220150C: ; 0x0220150C + stmdb sp!, {r4, lr} + mov r3, #0 +_02201514: + add r2, r0, r3, lsl #2 + ldr r2, [r2, #0xd8] + cmp r1, r2 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + add r3, r3, #1 + cmp r3, #0xa + blt _02201514 + ldr r2, [r0, #0x100] + ldr r3, _02201574 ; =0x66666667 + add lr, r2, #1 + smull r2, r4, r3, lr + mov r4, r4, asr #2 + mov r2, lr, lsr #0x1f + ldr ip, _02201578 ; =0x0000000A + add r4, r2, r4 + smull r2, r3, ip, r4 + sub r4, lr, r2 + str r4, [r0, #0x100] + ldr r2, [r0, #0x100] + add r0, r0, r2, lsl #2 + str r1, [r0, #0xd8] + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02201574: .word 0x66666667 +_02201578: .word 0x0000000A + + arm_func_start FUN_0220157C +FUN_0220157C: ; 0x0220157C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr ip, _022016A4 ; =0x0220BCD8 + mov r3, r0 + ldrb r7, [ip] + ldrb r6, [ip, #1] + ldrb r5, [ip, #2] + ldrb r4, [ip, #3] + ldrb lr, [ip, #4] + ldrb r0, [ip, #5] + strb r5, [sp, #2] + strb r4, [sp, #3] + strb r7, [sp] + strb r6, [sp, #1] + strb lr, [sp, #4] + strb r0, [sp, #5] + cmp r2, #0xa + add r4, sp, #0 + mov r5, #1 + blt _022015F8 + mov r6, #0 +_022015D0: + ldrb ip, [r4] + ldrb r0, [r1, r6] + cmp ip, r0 + movne r5, #0 + bne _022015FC + add r6, r6, #1 + cmp r6, #6 + add r4, r4, #1 + blt _022015D0 + b _022015FC +_022015F8: + mov r5, #0 +_022015FC: + cmp r5, #0 + beq _0220167C + add r2, r1, #6 + ldrb r1, [r1, #6] + ldrb r0, [r2, #1] + add ip, sp, #8 + strb r1, [ip] + strb r0, [ip, #1] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + strb r1, [ip, #2] + strb r0, [ip, #3] + ldr r2, [r3, #0xa0] + cmp r2, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr lr, [sp, #8] + ldr r1, [r3, #0x10c] + mov r3, lr, lsr #0x18 + mov r0, lr, lsr #8 + mov ip, lr, lsl #8 + and r3, r3, #0xff + and r0, r0, #0xff00 + mov lr, lr, lsl #0x18 + orr r0, r3, r0 + and ip, ip, #0xff0000 + and r3, lr, #0xff000000 + orr r0, ip, r0 + orr r0, r3, r0 + blx r2 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0220167C: + ldr ip, [r3, #0xa4] + cmp ip, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r1 + mov r1, r2 + ldr r2, [r3, #0x10c] + blx ip + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022016A4: .word 0x0220BCD8 + + arm_func_start FUN_022016A8 +FUN_022016A8: ; 0x022016A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + mov r2, #1 + mov r5, r0 + str r2, [r4, #0x800] + mov r3, #0x5c + mov r2, #0 + strb r3, [r4] + bl FUN_02201714 + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl FUN_02201714 + mov r0, r5 + mov r1, r4 + mov r2, #2 + bl FUN_02201714 + ldr r1, _02201710 ; =0x0220F1D0 + mov r0, r4 + bl FUN_022021C0 + ldr r0, [r4, #0x800] + sub r0, r0, #1 + str r0, [r4, #0x800] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02201710: .word 0x0220F1D0 + + arm_func_start FUN_02201714 +FUN_02201714: ; 0x02201714 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x194 + mov r8, r2 + sub r2, r8, #1 + mov r3, #0 + mov sl, r0 + cmp r2, #1 + movhi r0, #1 + mov sb, r1 + str r3, [sp, #0x18c] + strhi r0, [sp] + bhi _02201758 + ldr r1, [sl, #0x10c] + ldr r2, [sl, #0x98] + mov r0, r8 + blx r2 + str r0, [sp] +_02201758: + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x94] + add r1, sp, #0x8c + mov r0, r8 + blx r3 + ldr r1, [sp, #0x18c] + mov r0, #0 + str r0, [sp, #4] + cmp r1, #0 + addle sp, sp, #0x194 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r6, sp, #0x8c + str r0, [sp, #8] + mov r4, #0x5c +_02201790: + ldrb r1, [r6] + ldr r0, _022018E0 ; =0x0220F3A8 + ldr fp, [r0, r1, lsl #2] + cmp fp, #0 + ldreq fp, _022018E4 ; =0x0220F1E4 + cmp r8, #0 + bne _02201804 + mov r1, fp + mov r0, sb + bl FUN_022021C0 + ldr r0, [sb, #0x800] + mov r1, sb + sub r0, r0, #1 + strb r4, [sb, r0] + ldr r5, [sb, #0x800] + ldrb r0, [r6] + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x88] + blx r3 + ldr r0, [sb, #0x800] + cmp r5, r0 + bne _022017F4 + ldr r1, _022018E8 ; =0x0220F1EC + mov r0, sb + bl FUN_022021C0 +_022017F4: + ldr r0, [sb, #0x800] + sub r0, r0, #1 + strb r4, [sb, r0] + b _022018BC +_02201804: + ldr r0, [sp] + ldr r7, [sp, #8] + cmp r0, #0 + ble _022018BC +_02201814: + ldr r1, _022018EC ; =0x0220F1F0 + add r0, sp, #0xc + mov r2, fp + mov r3, r7 + bl sprintf + mov r0, sb + add r1, sp, #0xc + bl FUN_022021C0 + ldr r0, [sb, #0x800] + cmp r8, #1 + sub r0, r0, #1 + strb r4, [sb, r0] + ldr r5, [sb, #0x800] + bne _02201868 + ldrb r0, [r6] + mov r1, r7 + mov r2, sb + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x8c] + blx ip + b _02201888 +_02201868: + cmp r8, #2 + bne _02201888 + ldrb r0, [r6] + mov r1, r7 + mov r2, sb + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x90] + blx ip +_02201888: + ldr r0, [sb, #0x800] + cmp r5, r0 + bne _022018A0 + ldr r1, _022018E8 ; =0x0220F1EC + mov r0, sb + bl FUN_022021C0 +_022018A0: + ldr r0, [sb, #0x800] + add r7, r7, #1 + sub r0, r0, #1 + strb r4, [sb, r0] + ldr r0, [sp] + cmp r7, r0 + blt _02201814 +_022018BC: + ldr r0, [sp, #4] + ldr r1, [sp, #0x18c] + add r0, r0, #1 + add r6, r6, #1 + str r0, [sp, #4] + cmp r0, r1 + blt _02201790 + add sp, sp, #0x194 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022018E0: .word 0x0220F3A8 +_022018E4: .word 0x0220F1E4 +_022018E8: .word 0x0220F1EC +_022018EC: .word 0x0220F1F0 + + arm_func_start FUN_022018F0 +FUN_022018F0: ; 0x022018F0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r4, #0 + cmp r3, #3 + addlt sp, sp, #0x14 + mov lr, r4 + mov ip, r4 + ldmltia sp!, {r4, r5, r6, r7, pc} + ldrb r7, [r2], #1 + sub r3, r3, #1 + cmp r7, #0 + beq _02201930 + cmp r7, #0xff + movne r4, r2 + addne r2, r2, r7 + subne r3, r3, r7 +_02201930: + cmp r3, #2 + addlt sp, sp, #0x14 + ldmltia sp!, {r4, r5, r6, r7, pc} + ldrb r6, [r2], #1 + sub r3, r3, #1 + cmp r6, #0 + beq _0220195C + cmp r6, #0xff + movne lr, r2 + addne r2, r2, r6 + subne r3, r3, r6 +_0220195C: + cmp r3, #1 + addlt sp, sp, #0x14 + ldmltia sp!, {r4, r5, r6, r7, pc} + ldrb r5, [r2] + sub r3, r3, #1 + cmp r5, #0 + beq _02201984 + cmp r5, #0xff + addne ip, r2, #1 + subne r3, r3, r5 +_02201984: + cmp r3, #0 + addlt sp, sp, #0x14 + ldmltia sp!, {r4, r5, r6, r7, pc} + str r6, [sp] + str lr, [sp, #4] + str r5, [sp, #8] + mov r2, r7 + mov r3, r4 + str ip, [sp, #0xc] + bl FUN_022019B4 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_022019B4 +FUN_022019B4: ; 0x022019B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, r2 + mov r2, #0 + mov r5, r0 + mov r4, r1 + bl FUN_02201A14 + ldr ip, [sp, #0x14] + ldr r3, [sp, #0x10] + mov r0, r5 + mov r1, r4 + mov r2, #1 + str ip, [sp] + bl FUN_02201A14 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + mov r0, r5 + mov r1, r4 + mov r2, #2 + bl FUN_02201A14 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02201A14 +FUN_02201A14: ; 0x02201A14 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x114 + movs fp, r3 + mov r3, #0 + ldr r7, [sp, #0x138] + str r3, [sp, #0x10c] + mov sl, r0 + mov sb, r1 + mov r8, r2 + addeq sp, sp, #0x114 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + sub r0, r8, #1 + cmp r0, #1 + bhi _02201AC0 + ldr r0, [sb, #0x800] + rsb r0, r0, #0x800 + cmp r0, #2 + addlo sp, sp, #0x114 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0x10c] + ldr r2, [sl, #0x98] + mov r0, r8 + blx r2 + str r0, [sp] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #8] + add r0, sp, #8 + ldrb r1, [r0] + ldr r2, [sb, #0x800] + ldrb r0, [r0, #1] + add r3, sb, r2 + strb r1, [sb, r2] + strb r0, [r3, #1] + ldr r0, [sb, #0x800] + add r0, r0, #2 + str r0, [sb, #0x800] + b _02201AC8 +_02201AC0: + mov r0, #1 + str r0, [sp] +_02201AC8: + cmp fp, #0xff + bne _02201B9C + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x94] + add r1, sp, #0xc + mov r0, r8 + blx r3 + ldr r0, [sp, #0x10c] + mov r7, #0 + cmp r0, #0 + ble _02201B64 + ldr fp, _02201C64 ; =0x0220F1E4 + ldr r4, _02201C68 ; =0x0220F3A8 + add r5, sp, #0xc +_02201B00: + ldrb r0, [r5] + ldr r1, [r4, r0, lsl #2] + mov r0, sb + cmp r1, #0 + moveq r1, fp + bl FUN_022021C0 + cmp r8, #0 + bne _02201B50 + ldrb r0, [r5] + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x88] + mov r1, sb + ldr r6, [sb, #0x800] + blx r3 + ldr r0, [sb, #0x800] + cmp r6, r0 + bne _02201B50 + ldr r1, _02201C6C ; =0x0220F1EC + mov r0, sb + bl FUN_022021C0 +_02201B50: + ldr r0, [sp, #0x10c] + add r7, r7, #1 + cmp r7, r0 + add r5, r5, #1 + blt _02201B00 +_02201B64: + ldr r1, [sb, #0x800] + rsb r0, r1, #0x800 + cmp r0, #1 + addlt sp, sp, #0x114 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r1, #1 + str r0, [sb, #0x800] + mov r0, #0 + strb r0, [sb, r1] + ldr fp, [sp, #0x10c] + cmp r8, #0 + add r7, sp, #0xc + addeq sp, sp, #0x114 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02201B9C: + ldr r0, [sp] + mov r6, #0 + cmp r0, #0 + addle sp, sp, #0x114 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str r6, [sp, #4] +_02201BB4: + ldr r5, [sp, #4] + cmp fp, #0 + ble _02201C4C +_02201BC0: + cmp r8, #0 + ldr r4, [sb, #0x800] + bne _02201BE4 + ldrb r0, [r7, r5] + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x88] + mov r1, sb + blx r3 + b _02201C28 +_02201BE4: + cmp r8, #1 + bne _02201C08 + ldrb r0, [r7, r5] + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x8c] + mov r1, r6 + mov r2, sb + blx ip + b _02201C28 +_02201C08: + cmp r8, #2 + bne _02201C28 + ldrb r0, [r7, r5] + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x90] + mov r1, r6 + mov r2, sb + blx ip +_02201C28: + ldr r0, [sb, #0x800] + cmp r4, r0 + bne _02201C40 + ldr r1, _02201C6C ; =0x0220F1EC + mov r0, sb + bl FUN_022021C0 +_02201C40: + add r5, r5, #1 + cmp r5, fp + blt _02201BC0 +_02201C4C: + ldr r0, [sp] + add r6, r6, #1 + cmp r6, r0 + blt _02201BB4 + add sp, sp, #0x114 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02201C64: .word 0x0220F1E4 +_02201C68: .word 0x0220F3A8 +_02201C6C: .word 0x0220F1EC + + arm_func_start FUN_02201C70 +FUN_02201C70: ; 0x02201C70 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r0, r1 + ldr r1, _02201D28 ; =0x0220F1F8 + add r2, sp, #0 + add r3, sp, #4 + bl sscanf + ldr r0, [sp] + ldr lr, [sp, #4] + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #8 + mov r3, r0, lsl #8 + mov ip, r0, lsl #0x18 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + and r3, r3, #0xff0000 + and r2, ip, #0xff000000 + orr r1, r3, r1 + orrs r2, r2, r1 + mov r0, lr, lsl #0x10 + str r2, [sp] + addeq sp, sp, #8 + mov r1, r0, lsr #0x10 + ldmeqia sp!, {r4, pc} + cmp r1, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x104] + cmp r0, r2 + bne _02201D04 + add r0, r4, #0x100 + ldrh r0, [r0, #8] + cmp r0, r1 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} +_02201D04: + str r2, [r4, #0x104] + add r0, r4, #0x100 + strh r1, [r0, #8] + ldr r0, [sp] + ldr r2, [r4, #0x10c] + ldr r3, [r4, #0xa8] + blx r3 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02201D28: .word 0x0220F1F8 + + arm_func_start FUN_02201D2C +FUN_02201D2C: ; 0x02201D2C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov r5, r3 + cmp r5, #1 + mov r6, r0 + mov r4, r1 + addlt sp, sp, #0x48 + ldmltia sp!, {r4, r5, r6, pc} + cmp r5, #0x41 + addgt sp, sp, #0x48 + ldmgtia sp!, {r4, r5, r6, pc} + sub r0, r5, #1 + ldrsb r0, [r2, r0] + cmp r0, #0 + addne sp, sp, #0x48 + ldmneia sp!, {r4, r5, r6, pc} + add r0, sp, #0 + mov r1, r2 + bl strcpy + add r0, r6, #0x44 + bl strlen + mov r1, r0 + add r2, sp, #0 + add r0, r6, #0x44 + sub r3, r5, #1 + bl FUN_02201E0C + ldr r2, [r4, #0x800] + sub r1, r5, #1 + add r0, sp, #0 + add r2, r4, r2 + bl FUN_02201F50 + ldr r0, [r4, #0x800] + add r0, r4, r0 + bl strlen + ldr r1, [r4, #0x800] + add r0, r0, #1 + add r0, r1, r0 + str r0, [r4, #0x800] + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02201DCC +FUN_02201DCC: ; 0x02201DCC + stmdb sp!, {lr} + sub sp, sp, #4 + strb r1, [r0] + ldrb ip, [r2] + ldrb r3, [r2, #1] + add lr, r0, #1 + mov r1, #5 + strb ip, [r0, #1] + strb r3, [lr, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r3, [lr, #2] + strb r2, [lr, #3] + str r1, [r0, #0x800] + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_02201E0C +FUN_02201E0C: ; 0x02201E0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x104 + str r1, [sp] + add r4, sp, #4 + mov sl, r0 + mov sb, r2 + mov r8, r3 + mov r1, #0 +_02201E2C: + add r0, r1, #1 + mov r0, r0, lsl #0x10 + strb r1, [r4], #1 + mov r1, r0, asr #0x10 + cmp r1, #0x100 + blt _02201E2C + mov r7, #0 + add r5, sp, #4 + mov r6, r7 + mov r4, r7 + mov fp, r5 +_02201E58: + ldrb r3, [r5] + ldrb r2, [sl, r7] + ldr r1, [sp] + add r0, r7, #1 + add r2, r3, r2 + add r2, r6, r2 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #24 + add r2, r3, r2, ror #24 + and r6, r2, #0xff + bl _s32_div_f + and r7, r1, #0xff + mov r0, r5 + add r1, fp, r6 + bl FUN_0220206C + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x100 + add r5, r5, #1 + blt _02201E58 + mov r6, #0 + cmp r8, #0 + mov r5, r6 + mov r7, r6 + addle sp, sp, #0x104 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r4, sp, #4 +_02201EC8: + ldrb r0, [sb, r7] + add r0, r6, r0 + add r0, r0, #1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #24 + add r0, r1, r0, ror #24 + and r6, r0, #0xff + ldrb r1, [r4, r6] + add r0, r4, r6 + add r1, r1, r5 + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #24 + add r1, r2, r1, ror #24 + and r5, r1, #0xff + add r1, r4, r5 + bl FUN_0220206C + ldrb r2, [r4, r6] + ldrb r1, [r4, r5] + add r3, r7, #1 + ldrb r0, [sb, r7] + add r1, r2, r1 + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #24 + add r1, r2, r1, ror #24 + and r1, r1, #0xff + ldrb r2, [r4, r1] + mov r1, r3, lsl #0x10 + eor r0, r0, r2 + strb r0, [sb, r7] + mov r7, r1, asr #0x10 + cmp r7, r8 + blt _02201EC8 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02201F50 +FUN_02201F50: ; 0x02201F50 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + mov sl, r0 + mov r8, r2 + cmp sb, #0 + mov r7, #0 + ble _02202010 + mov r4, r7 + str r7, [sp] + mov fp, r7 +_02201F7C: + mov r2, fp + add r1, sp, #4 +_02201F84: + cmp r7, sb + ldrltb r0, [sl], #1 + add r2, r2, #1 + add r7, r7, #1 + strltb r0, [r1] + strgeb r4, [r1] + cmp r2, #2 + add r1, r1, #1 + ble _02201F84 + ldrb r5, [sp, #4] + ldrb r3, [sp, #5] + ldrb r2, [sp, #6] + and r1, r5, #3 + and r0, r3, #0xf + mov r5, r5, asr #2 + mov r1, r1, lsl #4 + strb r5, [sp, #7] + add r3, r1, r3, asr #4 + mov r0, r0, lsl #2 + add r1, r0, r2, asr #6 + and r0, r2, #0x3f + ldr r5, [sp] + add r6, sp, #7 + strb r3, [sp, #8] + strb r1, [sp, #9] + strb r0, [sp, #0xa] +_02201FEC: + ldrb r0, [r6] + bl FUN_02202020 + add r5, r5, #1 + cmp r5, #3 + strb r0, [r8], #1 + add r6, r6, #1 + ble _02201FEC + cmp r7, sb + blt _02201F7C +_02202010: + mov r0, #0 + strb r0, [r8] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02202020 +FUN_02202020: ; 0x02202020 + cmp r0, #0x1a + addlo r0, r0, #0x41 + andlo r0, r0, #0xff + bxlo lr + cmp r0, #0x34 + addlo r0, r0, #0x47 + andlo r0, r0, #0xff + bxlo lr + cmp r0, #0x3e + sublo r0, r0, #4 + andlo r0, r0, #0xff + bxlo lr + cmp r0, #0x3e + moveq r0, #0x2b + bxeq lr + cmp r0, #0x3f + moveq r0, #0x2f + movne r0, #0 + bx lr + + arm_func_start FUN_0220206C +FUN_0220206C: ; 0x0220206C + ldrb r3, [r0] + ldrb r2, [r1] + strb r2, [r0] + strb r3, [r1] + bx lr + + arm_func_start FUN_02202080 +FUN_02202080: ; 0x02202080 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r4, r1, asr #8 + mov r1, r1, lsl #8 + mov r6, r2 + mov r5, #2 + and r2, r4, #0xff + and r1, r1, #0xff00 + strb r5, [r6, #1] + orr r1, r2, r1 + strh r1, [r6, #2] + mov r4, #0 + movs r7, r0 + mov r5, r3 + streq r4, [r6, #4] + beq _022020D0 + bl FUN_021EFB38 + str r0, [r6, #4] +_022020D0: + ldr r1, [r6, #4] + mvn r0, #0 + cmp r1, r0 + bne _0220211C + ldr r1, _02202130 ; =0x0220F204 + mov r0, r7 + bl strcmp + cmp r0, #0 + beq _0220211C + mov r0, r7 + bl FUN_0209A6EC + movs r4, r0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [r6, #4] +_0220211C: + cmp r5, #0 + strne r4, [r5] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02202130: .word 0x0220F204 + + arm_func_start FUN_02202134 +FUN_02202134: ; 0x02202134 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl FUN_021EFE70 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _022021B8 ; =0x022115D8 + mov r2, #0 + str r2, [r1] + ldr ip, _022021BC ; =0x022115DC +_0220215C: + ldr r3, [r1] + ldr r2, [r0, #0xc] + mov r5, r3, lsl #2 + ldr r4, [r2, r3, lsl #2] + cmp r4, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldrb r3, [r4] + ldrb r2, [r4, #1] + add lr, ip, r5 + strb r3, [ip, r5] + strb r2, [lr, #1] + ldrb r3, [r4, #2] + ldrb r2, [r4, #3] + strb r3, [lr, #2] + strb r2, [lr, #3] + ldr r2, [r1] + add r2, r2, #1 + str r2, [r1] + cmp r2, #5 + blt _0220215C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022021B8: .word 0x022115D8 +_022021BC: .word 0x022115DC + + arm_func_start FUN_022021C0 +FUN_022021C0: ; 0x022021C0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r4, r0 + mov r0, r6 + bl strlen + ldr r3, [r4, #0x800] + add r5, r0, #1 + rsb r0, r3, #0x800 + cmp r5, r0 + movgt r5, r0 + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r1, r6 + mov r2, r5 + add r0, r4, r3 + bl memcpy + ldr r0, [r4, #0x800] + mov r1, #0 + add r0, r0, r5 + str r0, [r4, #0x800] + ldr r0, [r4, #0x800] + sub r0, r0, #1 + strb r1, [r4, r0] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02202220 +FUN_02202220: ; 0x02202220 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + mov r2, r1 + mov r4, r0 + ldr r1, _02202250 ; =0x0220F214 + add r0, sp, #0 + bl sprintf + add r1, sp, #0 + mov r0, r4 + bl FUN_022021C0 + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + .align 2, 0 +_02202250: .word 0x0220F214 + + arm_func_start FUN_02202254 +FUN_02202254: ; 0x02202254 + ldr r3, [r0, #0x100] + cmp r3, #0xfe + bxge lr + cmp r1, #1 + bxlt lr + cmp r1, #0xfe + bxgt lr + add r2, r3, #1 + str r2, [r0, #0x100] + strb r1, [r0, r3] + bx lr + + arm_func_start FUN_02202280 +FUN_02202280: ; 0x02202280 + stmdb sp!, {r4, lr} + movs r4, r0 + ldreq r0, _02202300 ; =0x0220F060 + ldreq r4, [r0] + ldr r0, [r4, #0xbc] + cmp r0, #0 + beq _022022A8 + mov r0, r4 + mov r1, #2 + bl FUN_02200F3C +_022022A8: + ldr r0, [r4] + mvn r1, #0 + cmp r0, r1 + beq _022022C8 + ldr r1, [r4, #0xc4] + cmp r1, #0 + beq _022022C8 + bl FUN_021EFD9C +_022022C8: + mvn r0, #0 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0xac] + ldr r0, [r4, #0xc4] + cmp r0, #0 + beq _022022E8 + bl FUN_021F0248 +_022022E8: + ldr r0, _02202304 ; =0x0220F064 + cmp r4, r0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl FUN_021DD82C + ldmia sp!, {r4, pc} + .align 2, 0 +_02202300: .word 0x0220F060 +_02202304: .word 0x0220F064 + + arm_func_start FUN_02202308 +FUN_02202308: ; 0x02202308 + stmdb sp!, {r4, lr} + movs r4, r0 + ldreq r0, _0220235C ; =0x0220F060 + ldreq r4, [r0] + ldr r0, [r4, #0xbc] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_021F025C + ldr r2, [r4, #0xac] + ldr r1, _02202360 ; =0x00002710 + sub r0, r0, r2 + cmp r0, r1 + movlo r0, #1 + strlo r0, [r4, #0xb4] + ldmloia sp!, {r4, pc} + mov r0, r4 + mov r1, #1 + bl FUN_02200F3C + mov r0, #0 + str r0, [r4, #0xb4] + ldmia sp!, {r4, pc} + .align 2, 0 +_0220235C: .word 0x0220F060 +_02202360: .word 0x00002710 + + arm_func_start FUN_02202364 +FUN_02202364: ; 0x02202364 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021F025C + ldr r2, [r5] + mvn r1, #0 + cmp r2, r1 + mov r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r2, [r5, #0xb8] + cmp r2, #0 + ble _022023F4 + ldr r1, [r5, #0xac] + ldr r0, _0220247C ; =0x00002710 + sub r1, r4, r1 + cmp r1, r0 + bls _022023F4 + cmp r2, #4 + blt _022023D8 + mov r0, #0 + str r0, [r5, #0xb8] + ldr r2, [r5, #0x10c] + ldr r3, [r5, #0x9c] + ldr r1, _02202480 ; =0x0220F218 + mov r0, #5 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022023D8: + mov r0, r5 + mov r1, #3 + bl FUN_02200F3C + ldr r0, [r5, #0xb8] + add r0, r0, #1 + str r0, [r5, #0xb8] + b _02202454 +_022023F4: + ldr r0, [r5, #0xb4] + cmp r0, #0 + beq _02202424 + ldr r1, [r5, #0xac] + ldr r0, _0220247C ; =0x00002710 + sub r1, r4, r1 + cmp r1, r0 + bls _02202424 + mov r0, r5 + mov r1, #1 + bl FUN_02200F3C + b _02202454 +_02202424: + ldr r2, [r5, #0xac] + ldr r0, _02202484 ; =0x0000EA60 + sub r1, r4, r2 + cmp r1, r0 + bhi _02202448 + cmp r2, #0 + beq _02202448 + cmp r4, r2 + bhs _02202454 +_02202448: + mov r0, r5 + mov r1, #0 + bl FUN_02200F3C +_02202454: + ldr r1, [r5, #0xb0] + ldr r0, _02202488 ; =0x00004E20 + sub r1, r4, r1 + cmp r1, r0 + addls sp, sp, #4 + ldmlsia sp!, {r4, r5, pc} + mov r0, r5 + bl FUN_02201150 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0220247C: .word 0x00002710 +_02202480: .word 0x0220F218 +_02202484: .word 0x0000EA60 +_02202488: .word 0x00004E20 + + arm_func_start FUN_0220248C +FUN_0220248C: ; 0x0220248C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x18 + mov r1, #8 + mov r4, r0 + str r1, [sp, #0x10] + ldr r0, [r4, #0xc4] + cmp r0, #0 + addeq sp, sp, #0x18 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [r4] + bl FUN_021EFF2C + cmp r0, #0 + addeq sp, sp, #0x18 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r8, _02202530 ; =0x02211630 + add sl, sp, #8 + add sb, sp, #0x10 + mov r6, #0 + mov r7, #0xff + mvn r5, #0 +_022024DC: + str sl, [sp] + str sb, [sp, #4] + ldr r0, [r4] + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl FUN_021EFC40 + mov r2, r0 + cmp r2, r5 + beq _02202518 + mov r0, r4 + mov r1, r8 + mov r3, sl + strb r6, [r8, r2] + bl FUN_022011A8 +_02202518: + ldr r0, [r4] + bl FUN_021EFF2C + cmp r0, #0 + bne _022024DC + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02202530: .word 0x02211630 + + arm_func_start FUN_02202534 +FUN_02202534: ; 0x02202534 + stmdb sp!, {r4, lr} + movs r4, r0 + ldreq r0, _02202564 ; =0x0220F060 + ldreq r4, [r0] + ldr r0, [r4, #0xbc] + cmp r0, #0 + beq _02202558 + mov r0, r4 + bl FUN_02202364 +_02202558: + mov r0, r4 + bl FUN_0220248C + ldmia sp!, {r4, pc} + .align 2, 0 +_02202564: .word 0x0220F060 + + arm_func_start FUN_02202568 +FUN_02202568: ; 0x02202568 + cmp r0, #0 + ldreq r0, _0220257C ; =0x0220F060 + ldreq r0, [r0] + str r1, [r0, #0xa8] + bx lr + .align 2, 0 +_0220257C: .word 0x0220F060 + + arm_func_start FUN_02202580 +FUN_02202580: ; 0x02202580 + cmp r0, #0 + ldreq r0, _02202594 ; =0x0220F060 + ldreq r0, [r0] + str r1, [r0, #0xa4] + bx lr + .align 2, 0 +_02202594: .word 0x0220F060 + + arm_func_start FUN_02202598 +FUN_02202598: ; 0x02202598 + cmp r0, #0 + ldreq r0, _022025AC ; =0x0220F060 + ldreq r0, [r0] + str r1, [r0, #0xa0] + bx lr + .align 2, 0 +_022025AC: .word 0x0220F060 + + arm_func_start FUN_022025B0 +FUN_022025B0: ; 0x022025B0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + movs r5, r0 + mov r8, r1 + mov r4, r2 + mov r7, r3 + ldreq r5, _02202760 ; =0x0220F064 + beq _022025E0 + mov r0, #0x110 + bl FUN_021DD860 + str r0, [r5] + ldr r5, [r5] +_022025E0: + bl FUN_021F025C + bl srand + mov r1, r7 + add r0, r5, #4 + bl strcpy + ldr r1, [sp, #0x58] + add r0, r5, #0x44 + bl strcpy + str r4, [r5, #0xc0] + mov r6, #0 + str r6, [r5, #0xac] + str r6, [r5, #0xb0] + str r8, [r5] + mov r1, #1 + ldr r0, [sp, #0x7c] + str r1, [r5, #0xb8] + ldr r1, [sp, #0x64] + str r0, [r5, #0x10c] + ldr r0, [sp, #0x68] + str r1, [r5, #0x88] + ldr r1, [sp, #0x6c] + str r0, [r5, #0x8c] + ldr r0, [sp, #0x70] + str r1, [r5, #0x90] + ldr r1, [sp, #0x74] + str r0, [r5, #0x94] + ldr r0, [sp, #0x78] + str r1, [r5, #0x98] + str r0, [r5, #0x9c] + str r6, [r5, #0xa0] + str r6, [r5, #0xa4] + ldr r0, [sp, #0x5c] + str r6, [r5, #0xd4] + str r0, [r5, #0xbc] + ldr r0, [sp, #0x60] + str r6, [r5, #0xc4] + str r0, [r5, #0xc8] + str r6, [r5, #0x104] + add r0, r5, #0x100 + strh r6, [r0, #8] + str r6, [r5, #0xa8] + str r6, [r5, #0xb4] + ldr r4, _02202764 ; =0x80808081 + ldr r8, _02202768 ; =0x000000FF +_02202690: + bl rand + smull r1, r2, r4, r0 + add r2, r0, r2 + add r3, r5, r6 + add r6, r6, #1 + mov r2, r2, asr #7 + mov r1, r0, lsr #0x1f + add r2, r1, r2 + smull r1, r2, r8, r2 + sub r2, r0, r1 + strb r2, [r3, #0x84] + cmp r6, #4 + blt _02202690 + mov r2, #0 + mvn r1, #0 +_022026CC: + add r0, r5, r2, lsl #2 + add r2, r2, #1 + str r1, [r0, #0xd8] + cmp r2, #0xa + blt _022026CC + mov r1, #0 + ldr r0, _0220276C ; =0x022115D8 + str r1, [r5, #0x100] + ldr r0, [r0] + cmp r0, #0 + bne _022026FC + bl FUN_02202134 +_022026FC: + ldr r0, [sp, #0x5c] + cmp r0, #0 + beq _02202748 + ldr r0, _02202770 ; =0x022115F0 + ldrsb r4, [r0] + cmp r4, #0 + bne _02202728 + ldr r1, _02202774 ; =0x0220F250 + add r0, sp, #0 + mov r2, r7 + bl sprintf +_02202728: + cmp r4, #0 + ldrne r0, _02202770 ; =0x022115F0 + ldr r1, _02202778 ; =0x00006CFC + addeq r0, sp, #0 + add r2, r5, #0xcc + mov r3, #0 + bl FUN_02202080 + b _0220274C +_02202748: + mov r0, #1 +_0220274C: + cmp r0, #0 + movne r0, #0 + moveq r0, #3 + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02202760: .word 0x0220F064 +_02202764: .word 0x80808081 +_02202768: .word 0x000000FF +_0220276C: .word 0x022115D8 +_02202770: .word 0x022115F0 +_02202774: .word 0x0220F250 +_02202778: .word 0x00006CFC + + arm_func_start FUN_0220277C +FUN_0220277C: ; 0x0220277C + cmp r0, #0x32 + bxlt lr + cmp r0, #0xfe + bxgt lr + ldr r2, _02202798 ; =0x0220F3A8 + str r1, [r2, r0, lsl #2] + bx lr + .align 2, 0 +_02202798: .word 0x0220F3A8 + + arm_func_start FUN_0220279C +FUN_0220279C: ; 0x0220279C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r2 + cmp r5, #0 + mov r7, r0 + mov r6, r1 + mov r4, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, pc} +_022027C0: + ldrb r1, [r6, r4] + mov r0, r7 + bl FUN_022027E4 + strb r0, [r6, r4] + add r4, r4, #1 + cmp r4, r5 + blt _022027C0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_022027E4 +FUN_022027E4: ; 0x022027E4 + stmdb sp!, {r4, lr} + ldrb r4, [r0, #0x100] + add r2, r4, #1 + strb r2, [r0, #0x100] + ldrb r3, [r0, #0x101] + ldrb r2, [r0, r4] + add r2, r3, r2 + strb r2, [r0, #0x101] + ldrb r3, [r0, #0x104] + ldrb r2, [r0, #0x101] + ldrb r4, [r0, r3] + ldrb r2, [r0, r2] + strb r2, [r0, r3] + ldrb r3, [r0, #0x103] + ldrb r2, [r0, #0x101] + ldrb r3, [r0, r3] + strb r3, [r0, r2] + ldrb r3, [r0, #0x100] + ldrb r2, [r0, #0x103] + ldrb r3, [r0, r3] + strb r3, [r0, r2] + ldrb r2, [r0, #0x100] + strb r4, [r0, r2] + ldrb r3, [r0, #0x102] + ldrb r2, [r0, r4] + add r2, r3, r2 + strb r2, [r0, #0x102] + ldrb r3, [r0, #0x103] + ldrb r2, [r0, #0x104] + ldrb ip, [r0, #0x101] + ldrb r4, [r0, #0x102] + ldrb lr, [r0, #0x100] + ldrb r3, [r0, r3] + ldrb r2, [r0, r2] + ldrb ip, [r0, ip] + ldrb r4, [r0, r4] + add r2, r3, r2 + ldrb r3, [r0, lr] + add r2, ip, r2 + and r2, r2, #0xff + add r3, r4, r3 + ldrb r2, [r0, r2] + and r3, r3, #0xff + ldrb r3, [r0, r3] + ldrb r2, [r0, r2] + eor r3, r1, r3 + eor r2, r3, r2 + strb r2, [r0, #0x103] + strb r1, [r0, #0x104] + ldrb r0, [r0, #0x103] + ldmia sp!, {r4, pc} + + arm_func_start FUN_022028B0 +FUN_022028B0: ; 0x022028B0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r7, r2 + mov sb, r0 + mov r8, r1 + cmp r7, #1 + bhs _022028D8 + bl FUN_02202978 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022028D8: + mov r0, #0 +_022028DC: + strb r0, [sb, r0] + add r0, r0, #1 + cmp r0, #0x100 + blt _022028DC + mov r0, #0 + str r0, [sp, #0xc] + strb r0, [sp, #8] + mov r6, #0xff + add r5, sp, #8 + add r4, sp, #0xc +_02202904: + str r5, [sp] + mov r0, sb + mov r1, r6 + mov r2, r8 + mov r3, r7 + str r4, [sp, #4] + bl FUN_022029C0 + ldrb r2, [sb, r6] + ldrb r1, [sb, r0] + strb r1, [sb, r6] + strb r2, [sb, r0] + subs r6, r6, #1 + bpl _02202904 + ldrb r1, [sb, #1] + mov r0, #0 + strb r1, [sb, #0x100] + ldrb r1, [sb, #3] + strb r1, [sb, #0x101] + ldrb r1, [sb, #5] + strb r1, [sb, #0x102] + ldrb r1, [sb, #7] + strb r1, [sb, #0x103] + ldrb r1, [sp, #8] + ldrb r1, [sb, r1] + strb r1, [sb, #0x104] + strb r0, [sp, #8] + str r0, [sp, #0xc] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_02202978 +FUN_02202978: ; 0x02202978 + mov r1, #1 + strb r1, [r0, #0x100] + mov r1, #3 + strb r1, [r0, #0x101] + mov r1, #5 + strb r1, [r0, #0x102] + mov r1, #7 + strb r1, [r0, #0x103] + mov r1, #0xb + strb r1, [r0, #0x104] + mov r2, #0 + mov r1, #0xff +_022029A8: + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #0x100 + sub r1, r1, #1 + blt _022029A8 + bx lr + + arm_func_start FUN_022029C0 +FUN_022029C0: ; 0x022029C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r8, [sp, #0x28] + ldr r7, [sp, #0x2c] + movs sl, r1 + mov fp, r0 + str r2, [sp] + mov sb, r3 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sl, #1 + mov r6, #0 + mov r5, #1 + bls _02202A0C +_022029FC: + mov r0, r5, lsl #1 + add r5, r0, #1 + cmp r5, sl + blo _022029FC +_02202A0C: + mov r4, #0 +_02202A10: + ldr r2, [r7] + add r6, r6, #1 + add r0, r2, #1 + str r0, [r7] + ldrb r1, [r8] + ldr r0, [sp] + ldrb r0, [r0, r2] + ldrb r1, [fp, r1] + add r0, r1, r0 + strb r0, [r8] + ldr r0, [r7] + cmp r0, sb + strhs r4, [r7] + ldrhsb r0, [r8] + addhs r0, r0, sb + strhsb r0, [r8] + ldrb r0, [r8] + cmp r6, #0xb + and r0, r5, r0 + bls _02202A6C + mov r1, sl + bl _u32_div_f + mov r0, r1 +_02202A6C: + cmp r0, sl + bhi _02202A10 + and r0, r0, #0xff + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02202A80 +FUN_02202A80: ; 0x02202A80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + add r0, r5, #8 + mov r4, r1 + bl FUN_022032AC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r1, r4 + add r0, r5, #0x14 + bl FUN_022032AC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02202AB8 +FUN_02202AB8: ; 0x02202AB8 + ldr r3, [r0, #0x40] + cmp r3, #0x14 + addlt r2, r3, #1 + strlt r2, [r0, #0x40] + addlt r0, r0, r3 + strltb r1, [r0, #0x2c] + bx lr + + arm_func_start FUN_02202AD4 +FUN_02202AD4: ; 0x02202AD4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + mov r1, #0 + bl FUN_02202C14 + mov r0, r4 + bl FUN_02202B84 + ldr r0, [r4, #0x1c] + cmp r0, #0 + ble _02202B0C + mov r0, r4 + bl FUN_02202B34 +_02202B0C: + ldr r0, [r4, #0x10] + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r3, [r4, #0x48] + ldr ip, [r4, #0x44] + mov r0, r4 + mov r1, #2 + mov r2, #0 + blx ip + ldmia sp!, {r4, pc} + + arm_func_start FUN_02202B34 +FUN_02202B34: ; 0x02202B34 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + add r4, r5, #0x14 + b _02202B5C +_02202B48: + mov r0, r4 + bl FUN_02203318 + mov r1, r0 + mov r0, r5 + bl FUN_022030C0 +_02202B5C: + ldr r1, [r5, #0x10] + ldr r0, [r5, #4] + cmp r1, r0 + addge sp, sp, #4 + ldmgeia sp!, {r4, r5, pc} + ldr r0, [r5, #0x1c] + cmp r0, #0 + bgt _02202B48 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02202B84 +FUN_02202B84: ; 0x02202B84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + bl FUN_021F025C + ldr r3, [r6, #8] + mov r5, r0 + cmp r3, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r4, _02202C10 ; =0x000009C4 + add r7, r6, #8 + mov r8, #1 +_02202BAC: + ldr r0, [r3, #0x1c] + add r0, r0, r4 + cmp r5, r0 + ldmlsia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r2, [r3, #0x15] + mov r0, r6 + mov r1, r8 + orr r2, r2, #0x10 + strb r2, [r3, #0x15] + ldr r2, [r6, #8] + str r4, [r2, #0x1c] + ldr r3, [r6, #8] + ldrb r2, [r3, #0x15] + and r2, r2, #0xd3 + strb r2, [r3, #0x15] + ldr r2, [r6, #8] + ldr r3, [r6, #0x48] + ldr ip, [r6, #0x44] + blx ip + mov r0, r7 + bl FUN_02203318 + ldr r3, [r6, #8] + cmp r3, #0 + bne _02202BAC + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02202C10: .word 0x000009C4 + + arm_func_start FUN_02202C14 +FUN_02202C14: ; 0x02202C14 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr ip, _02202DB0 ; =0x00000814 + sub sp, sp, ip + movs sb, r1 + mov r1, #8 + mov sl, r0 + str r1, [sp, #0x10] + ldrne r8, [sl, #0x24] + ldreq r8, [sl, #0x20] + mov r0, r8 + bl FUN_021EFF2C + cmp r0, #0 + ldreq ip, _02202DB0 ; =0x00000814 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r5, sp, #0x14 + add fp, sp, #8 + mov r4, #0 +_02202C5C: + ldr r2, _02202DB4 ; =0x000007FF + str fp, [sp] + add r6, sp, #0x10 + mov r0, r8 + mov r1, r5 + mov r3, r4 + str r6, [sp, #4] + bl FUN_021EFC40 + mov r7, r0 + mvn r0, #0 + cmp r7, r0 + ldreq ip, _02202DB0 ; =0x00000814 + addeq sp, sp, ip + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + strb r4, [r5, r7] + ldr r6, [sl, #8] + cmp r6, #0 + beq _02202D94 +_02202CA4: + cmp sb, #0 + beq _02202CC8 + ldrb r0, [r6, #0x15] + ands r0, r0, #8 + beq _02202CC8 + ldr r1, [r6, #0x10] + ldr r0, [sp, #0xc] + cmp r1, r0 + beq _02202D24 +_02202CC8: + ldr r0, [sp, #0xc] + ldr r3, [r6] + cmp r3, r0 + bne _02202CF0 + ldrh r2, [r6, #4] + ldrh r1, [sp, #0xa] + cmp r2, r1 + beq _02202D24 + cmp sb, #0 + bne _02202D24 +_02202CF0: + ldr r1, [sl, #0x28] + cmp r3, r1 + bne _02202D88 + ldrb r1, [r6, #0x15] + ands r1, r1, #2 + beq _02202D88 + ldr r1, [r6, #8] + cmp r1, r0 + bne _02202D88 + ldrh r1, [r6, #0xc] + ldrh r0, [sp, #0xa] + cmp r1, r0 + bne _02202D88 +_02202D24: + cmp sb, #0 + beq _02202D4C + mov r0, sl + mov r1, r6 + mov r2, r5 + mov r3, r7 + bl FUN_02202DB8 + cmp r0, #0 + beq _02202D88 + b _02202D94 +_02202D4C: + ldr r0, [sl] + cmp r0, #1 + bne _02202D70 + mov r0, sl + mov r1, r6 + mov r2, r5 + mov r3, r7 + bl FUN_02202E68 + b _02202D94 +_02202D70: + mov r0, sl + mov r1, r6 + mov r2, r5 + mov r3, r7 + bl FUN_02202DC0 + b _02202D94 +_02202D88: + ldr r6, [r6, #0x20] + cmp r6, #0 + bne _02202CA4 +_02202D94: + mov r0, r8 + bl FUN_021EFF2C + cmp r0, #0 + bne _02202C5C + ldr ip, _02202DB0 ; =0x00000814 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02202DB0: .word 0x00000814 +_02202DB4: .word 0x000007FF + + arm_func_start FUN_02202DB8 +FUN_02202DB8: ; 0x02202DB8 + mov r0, #1 + bx lr + + arm_func_start FUN_02202DC0 +FUN_02202DC0: ; 0x02202DC0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r4, r1 + mov r7, r2 + mov r5, r0 + ldr r1, _02202E64 ; =0x0220F7A0 + mov r0, r7 + bl strstr + cmp r0, #0 + movne r6, #1 + moveq r6, #0 + mov r0, r4 + mov r1, r7 + bl FUN_02203738 + cmp r6, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldrb r0, [r4, #0x14] + ands r1, r0, #4 + orrne r0, r0, #0x41 + strneb r0, [r4, #0x14] + orreq r0, r0, #0x42 + streqb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + and r0, r0, #0xf3 + strb r0, [r4, #0x14] + bl FUN_021F025C + ldr r2, [r4, #0x1c] + mov r1, r4 + sub r0, r0, r2 + str r0, [r4, #0x1c] + add r0, r5, #8 + bl FUN_022032AC + ldr r3, [r5, #0x48] + ldr ip, [r5, #0x44] + mov r0, r5 + mov r2, r4 + mov r1, #0 + blx ip + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02202E64: .word 0x0220F7A0 + + arm_func_start FUN_02202E68 +FUN_02202E68: ; 0x02202E68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r8, r2 + ldrsb r2, [r8] + mov sl, r0 + mov sb, r1 + mov r7, r3 + cmp r2, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [sb, #0x14] + add r8, r8, #5 + sub r7, r7, #5 + ands r0, r0, #4 + beq _02202F04 + ldr r0, [sl, #0x40] + mov r6, #0 + cmp r0, #0 + ble _02202EF4 + ldr r4, _02202F64 ; =0x0220F3A8 +_02202EB0: + mov r0, r8 + mov r1, r7 + bl FUN_02206378 + movs r5, r0 + bmi _02202EF4 + add r0, sl, r6 + ldrb r1, [r0, #0x2c] + mov r0, sb + mov r2, r8 + ldr r1, [r4, r1, lsl #2] + bl FUN_02203A80 + ldr r0, [sl, #0x40] + add r6, r6, #1 + cmp r6, r0 + add r8, r8, r5 + sub r7, r7, r5 + blt _02202EB0 +_02202EF4: + ldrb r0, [sb, #0x14] + orr r0, r0, #0x41 + strb r0, [sb, #0x14] + b _02202F20 +_02202F04: + mov r0, sb + mov r1, r8 + mov r2, r7 + bl FUN_02203554 + ldrb r0, [sb, #0x14] + orr r0, r0, #0x43 + strb r0, [sb, #0x14] +_02202F20: + ldrb r0, [sb, #0x14] + and r0, r0, #0xf3 + strb r0, [sb, #0x14] + bl FUN_021F025C + ldr r2, [sb, #0x1c] + mov r1, sb + sub r0, r0, r2 + str r0, [sb, #0x1c] + add r0, sl, #8 + bl FUN_022032AC + ldr r3, [sl, #0x48] + ldr r4, [sl, #0x44] + mov r0, sl + mov r2, sb + mov r1, #0 + blx r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02202F64: .word 0x0220F3A8 + + arm_func_start FUN_02202F68 +FUN_02202F68: ; 0x02202F68 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrb ip, [r1, #0x14] + add lr, r1, #0x14 + cmp r3, #0 + and ip, ip, #0xc3 + strb ip, [r1, #0x14] + ldreqb r3, [lr] + orreq r3, r3, #4 + streqb r3, [lr] + beq _02202FB4 + cmp r3, #1 + ldreqb r3, [lr] + orreq r3, r3, #8 + streqb r3, [lr] + beq _02202FB4 + cmp r3, #2 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02202FB4: + ldr ip, [r0, #0x10] + ldr r3, [r0, #4] + cmp ip, r3 + bge _02202FD0 + bl FUN_022030C0 + add sp, sp, #4 + ldmfd sp!, {pc} +_02202FD0: + cmp r2, #0 + beq _02202FE8 + add r0, r0, #0x14 + bl FUN_02203350 + add sp, sp, #4 + ldmfd sp!, {pc} +_02202FE8: + add r0, r0, #0x14 + bl FUN_02203378 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_02202FF8 +FUN_02202FF8: ; 0x02202FF8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x20] + bl FUN_021EFD9C + mvn r1, #0 + add r0, r4, #0x14 + str r1, [r4, #0x20] + bl FUN_02203294 + add r0, r4, #8 + bl FUN_02203294 + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203024 +FUN_02203024: ; 0x02203024 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x14 + bl FUN_02203294 + add r0, r4, #8 + bl FUN_02203294 + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203040 +FUN_02203040: ; 0x02203040 + str r1, [r0, #0x28] + bx lr + + arm_func_start FUN_02203048 +FUN_02203048: ; 0x02203048 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + cmp r3, #0 + bne _02203070 + ldr r0, _022030BC ; =0x02210E5C + ldr r0, [r0] + cmp r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_02203070: + bl FUN_021F024C + str r4, [r6] + mov r0, #2 + str r5, [r6, #4] + mov r2, #0 + ldr r3, [sp, #0x10] + str r2, [r6, #0x40] + ldr r1, [sp, #0x14] + str r3, [r6, #0x44] + str r1, [r6, #0x48] + mov r1, r0 + str r2, [r6, #0x28] + bl FUN_021EFDB8 + str r0, [r6, #0x20] + add r0, r6, #0x14 + bl FUN_02203294 + add r0, r6, #8 + bl FUN_02203294 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022030BC: .word 0x02210E5C + + arm_func_start FUN_022030C0 +FUN_022030C0: ; 0x022030C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x114 + mov r5, r0 + mov r4, r1 + add r0, r5, #8 + bl FUN_02203378 + bl FUN_021F025C + str r0, [r4, #0x1c] + mov r0, #2 + strb r0, [sp, #9] + ldrb r1, [r4, #0x14] + ands r0, r1, #0x20 + addne sp, sp, #0x114 + ldmneia sp!, {r4, r5, pc} + ldr r0, [r5] + cmp r0, #1 + bne _022031C8 + mov r2, #0xfe + mov r1, #0xfd + mov r0, #0 + strb r2, [sp, #0x10] + strb r1, [sp, #0x11] + strb r0, [sp, #0x12] + add r3, r4, #0x1c + ldrb r2, [r4, #0x1c] + ldrb r1, [r3, #1] + add ip, sp, #0x13 + strb r2, [ip] + strb r1, [ip, #1] + ldrb r2, [r3, #2] + ldrb r1, [r3, #3] + strb r2, [ip, #2] + strb r1, [ip, #3] + ldrb r1, [r4, #0x14] + ands r1, r1, #4 + beq _022031B0 + ldr r1, [r5, #0x40] + strb r1, [sp, #0x17] + ldr r2, [r5, #0x40] + cmp r2, #0 + ble _02203188 + add r1, sp, #0x10 +_02203168: + add r2, r5, r0 + ldrb r3, [r2, #0x2c] + add r2, r0, #8 + add r0, r0, #1 + strb r3, [r1, r2] + ldr r2, [r5, #0x40] + cmp r0, r2 + blt _02203168 +_02203188: + add r0, r2, #8 + add r1, sp, #0x10 + mov r2, #0 + strb r2, [r1, r0] + ldr r0, [r5, #0x40] + add r0, r0, #9 + strb r2, [r1, r0] + ldr r0, [r5, #0x40] + add r2, r0, #0xa + b _0220322C +_022031B0: + mov r0, #0xff + strb r0, [sp, #0x17] + strb r0, [sp, #0x18] + strb r0, [sp, #0x19] + mov r2, #0xa + b _0220322C +_022031C8: + ands r0, r1, #4 + beq _02203204 + ldr r3, _0220328C ; =0x0220F7A8 + add ip, sp, #0x10 + mov r2, #6 +_022031DC: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [ip], #1 + strb r0, [ip], #1 + bne _022031DC + ldrb r0, [r3] + mov r2, #0xd + strb r0, [ip] + b _0220322C +_02203204: + ldr r3, _02203290 ; =0x0220F7B8 + add ip, sp, #0x10 + mov r2, #4 +_02203210: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [ip], #1 + strb r0, [ip], #1 + bne _02203210 + mov r2, #8 +_0220322C: + ldr r1, [r4] + ldr r0, [r5, #0x28] + cmp r1, r0 + bne _02203258 + ldrb r0, [r4, #0x15] + ands r0, r0, #2 + ldrne r0, [r4, #8] + strne r0, [sp, #0xc] + ldrneh r0, [r4, #0xc] + strneh r0, [sp, #0xa] + bne _02203264 +_02203258: + str r1, [sp, #0xc] + ldrh r0, [r4, #4] + strh r0, [sp, #0xa] +_02203264: + add r1, sp, #8 + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0x20] + add r1, sp, #0x10 + mov r3, #0 + bl FUN_021EFBD4 + add sp, sp, #0x114 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0220328C: .word 0x0220F7A8 +_02203290: .word 0x0220F7B8 + + arm_func_start FUN_02203294 +FUN_02203294: ; 0x02203294 + mov r2, #0 + str r2, [r0, #4] + ldr r1, [r0, #4] + str r1, [r0] + str r2, [r0, #8] + bx lr + + arm_func_start FUN_022032AC +FUN_022032AC: ; 0x022032AC + ldr r3, [r0] + mov r2, #0 + cmp r3, #0 + beq _02203310 +_022032BC: + cmp r3, r1 + bne _02203300 + cmp r2, #0 + ldrne r1, [r3, #0x20] + strne r1, [r2, #0x20] + ldr r1, [r0] + cmp r1, r3 + ldreq r1, [r3, #0x20] + streq r1, [r0] + ldr r1, [r0, #4] + cmp r1, r3 + streq r2, [r0, #4] + ldr r1, [r0, #8] + sub r1, r1, #1 + str r1, [r0, #8] + mov r0, #1 + bx lr +_02203300: + mov r2, r3 + ldr r3, [r3, #0x20] + cmp r3, #0 + bne _022032BC +_02203310: + mov r0, #0 + bx lr + + arm_func_start FUN_02203318 +FUN_02203318: ; 0x02203318 + ldr r2, [r0] + cmp r2, #0 + beq _02203348 + ldr r1, [r2, #0x20] + str r1, [r0] + ldr r1, [r0] + cmp r1, #0 + moveq r1, #0 + streq r1, [r0, #4] + ldr r1, [r0, #8] + sub r1, r1, #1 + str r1, [r0, #8] +_02203348: + mov r0, r2 + bx lr + + arm_func_start FUN_02203350 +FUN_02203350: ; 0x02203350 + ldr r2, [r0] + str r2, [r1, #0x20] + str r1, [r0] + ldr r2, [r0, #4] + cmp r2, #0 + streq r1, [r0, #4] + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + bx lr + + arm_func_start FUN_02203378 +FUN_02203378: ; 0x02203378 + ldr r2, [r0, #4] + cmp r2, #0 + strne r1, [r2, #0x20] + str r1, [r0, #4] + mov r2, #0 + str r2, [r1, #0x20] + ldr r2, [r0] + cmp r2, #0 + streq r1, [r0] + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + bx lr + + arm_func_start FUN_022033AC +FUN_022033AC: ; 0x022033AC + ldr r1, _022033C4 ; =0x02211738 + ldr r1, [r1] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022033C4: .word 0x02211738 + + arm_func_start FUN_022033C8 +FUN_022033C8: ; 0x022033C8 + ldrb r0, [r0, #0x14] + bx lr + + arm_func_start FUN_022033D0 +FUN_022033D0: ; 0x022033D0 + strb r1, [r0, #0x14] + bx lr + + arm_func_start FUN_022033D8 +FUN_022033D8: ; 0x022033D8 + str r1, [r0, #0x10] + bx lr + + arm_func_start FUN_022033E0 +FUN_022033E0: ; 0x022033E0 + str r1, [r0, #8] + strh r2, [r0, #0xc] + bx lr + + arm_func_start FUN_022033EC +FUN_022033EC: ; 0x022033EC + strb r1, [r0, #0x15] + bx lr + + arm_func_start FUN_022033F4 +FUN_022033F4: ; 0x022033F4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r0, #0x24 + mov r6, r1 + mov r5, r2 + bl FUN_021DD860 + movs r4, r0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _02203498 ; =FUN_022034AC + ldr r2, _0220349C ; =FUN_022034D0 + str r0, [sp] + mov r0, #8 + ldr r3, _022034A0 ; =FUN_022034C0 + mov r1, r0 + str r2, [sp, #4] + mov r2, #4 + bl FUN_021EF62C + str r0, [r4, #0x18] + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02203464 + mov r0, r4 + bl FUN_021DD82C + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02203464: + mov r1, #0 + strb r1, [r4, #0x14] + strb r1, [r4, #0x15] + str r1, [r4, #0x20] + str r1, [r4, #0x1c] + str r1, [r4, #0x10] + str r6, [r4] + strh r5, [r4, #4] + str r1, [r4, #8] + mov r0, r4 + strh r1, [r4, #0xc] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02203498: .word FUN_022034AC +_0220349C: .word FUN_022034D0 +_022034A0: .word FUN_022034C0 + + arm_func_start FUN_022034A4 +FUN_022034A4: ; 0x022034A4 + ldr r0, [r0, #0x1c] + bx lr + + arm_func_start FUN_022034AC +FUN_022034AC: ; 0x022034AC + ldr ip, _022034BC ; =0x020E9B38 + ldr r0, [r0] + ldr r1, [r1] + bx ip + .align 2, 0 +_022034BC: .word 0x020E9B38 + + arm_func_start FUN_022034C0 +FUN_022034C0: ; 0x022034C0 + ldr ip, _022034CC ; =FUN_022034F4 + ldr r0, [r0] + bx ip + .align 2, 0 +_022034CC: .word FUN_022034F4 + + arm_func_start FUN_022034D0 +FUN_022034D0: ; 0x022034D0 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4] + mov r0, #0 + bl FUN_022063A8 + ldr r1, [r4, #4] + mov r0, #0 + bl FUN_022063A8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_022034F4 +FUN_022034F4: ; 0x022034F4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrsb lr, [r0] + mov ip, #0 + cmp lr, #0 + beq _02203538 + ldr r3, _0220354C ; =0x0210420C + ldr r2, _02203550 ; =0x9CCF9319 +_02203514: + cmp lr, #0 + blt _02203528 + cmp lr, #0x80 + bge _02203528 + ldrb lr, [r3, lr] +_02203528: + mla ip, r2, ip, lr + ldrsb lr, [r0, #1]! + cmp lr, #0 + bne _02203514 +_02203538: + mov r0, ip + bl _u32_div_f + mov r0, r1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_0220354C: .word 0x0210420C +_02203550: .word 0x9CCF9319 + + arm_func_start FUN_02203554 +FUN_02203554: ; 0x02203554 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x9c + mov sl, r1 + ldrsb r1, [sl] + mov fp, r0 + mov sb, r2 + cmp r1, #0 + beq _022035D4 +_02203574: + mov r0, sl + mov r1, sb + bl FUN_02206378 + cmp r0, #0 + addlt sp, sp, #0x9c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, sl + sub sb, sb, r0 + add sl, sl, r0 + mov r0, sl + mov r1, sb + bl FUN_02206378 + cmp r0, #0 + addlt sp, sp, #0x9c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r2, sl + mov r1, r4 + add sl, sl, r0 + sub sb, sb, r0 + mov r0, fp + bl FUN_02203A80 + ldrsb r0, [sl] + cmp r0, #0 + bne _02203574 +_022035D4: + mov r0, #0 + add sl, sl, #1 + sub sb, sb, #1 + str r0, [sp, #4] + str r0, [sp, #0x10] + str r0, [sp, #8] + str r0, [sp, #0xc] +_022035F0: + cmp sb, #2 + addlt sp, sp, #0x9c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sl] + ldrb r1, [sl, #1] + add r0, sp, #0x14 + add sl, sl, #2 + strb r2, [r0] + strb r1, [r0, #1] + ldrh r2, [sp, #0x14] + str sl, [sp] + ldr r8, [sp, #8] + mov r0, r2, asr #8 + and r1, r0, #0xff + mov r0, r2, lsl #8 + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp, #0x14] + ldrsb r0, [sl] + sub sb, sb, #2 + cmp r0, #0 + beq _02203680 +_02203648: + mov r0, sl + mov r1, sb + bl FUN_02206378 + cmp r0, #0 + addlt sp, sp, #0x9c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #0x64 + addgt sp, sp, #0x9c + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r1, [sl, r0]! + sub sb, sb, r0 + add r8, r8, #1 + cmp r1, #0 + bne _02203648 +_02203680: + ldrh r0, [sp, #0x14] + ldr r7, [sp, #0xc] + add sl, sl, #1 + cmp r0, #0 + sub sb, sb, #1 + ble _02203718 +_02203698: + ldr r5, [sp] + cmp r8, #0 + ldr r6, [sp, #0x10] + ble _02203708 +_022036A8: + mov r0, sl + mov r1, sb + bl FUN_02206378 + movs r4, r0 + addmi sp, sp, #0x9c + ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _02203734 ; =0x0220F7D4 + add r0, sp, #0x16 + mov r2, r5 + mov r3, r7 + bl sprintf + mov r0, fp + add r1, sp, #0x16 + mov r2, sl + bl FUN_02203A80 + mov r0, r5 + add sl, sl, r4 + sub sb, sb, r4 + bl strlen + add r0, r0, #1 + add r6, r6, #1 + add r5, r5, r0 + cmp r6, r8 + blt _022036A8 +_02203708: + ldrh r0, [sp, #0x14] + add r7, r7, #1 + cmp r7, r0 + blt _02203698 +_02203718: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #2 + blt _022035F0 + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02203734: .word 0x0220F7D4 + + arm_func_start FUN_02203738 +FUN_02203738: ; 0x02203738 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + add r0, r1, #1 + mov r1, #0x5c + bl FUN_022037BC + movs r8, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r4, _022037B8 ; =0x0220F7DC + mov r6, #0 + mov r5, #0x5c +_02203768: + mov r0, r6 + mov r1, r5 + bl FUN_022037BC + movs r7, r0 + mov r0, r8 + moveq r7, r4 + bl FUN_02203828 + cmp r0, #0 + beq _0220379C + mov r0, sb + mov r1, r8 + mov r2, r7 + bl FUN_02203A80 +_0220379C: + mov r0, r6 + mov r1, r5 + bl FUN_022037BC + movs r8, r0 + bne _02203768 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022037B8: .word 0x0220F7DC + + arm_func_start FUN_022037BC +FUN_022037BC: ; 0x022037BC + cmp r0, #0 + ldrne r2, _02203824 ; =0x02211730 + strne r0, [r2] + ldr r2, _02203824 ; =0x02211730 + ldr r0, [r2] + b _022037E0 +_022037D4: + ldr r3, [r2] + add r3, r3, #1 + str r3, [r2] +_022037E0: + ldr ip, [r2] + ldrsb r3, [ip] + cmp r3, #0 + beq _022037F8 + cmp r3, r1 + bne _022037D4 +_022037F8: + cmp ip, r0 + moveq r0, #0 + cmp r3, #0 + bxeq lr + ldr r1, _02203824 ; =0x02211730 + mov r2, #0 + ldr r3, [r1] + add r3, r3, #1 + str r3, [r1] + strb r2, [ip] + bx lr + .align 2, 0 +_02203824: .word 0x02211730 + + arm_func_start FUN_02203828 +FUN_02203828: ; 0x02203828 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r1, _02203884 ; =0x0220BCE0 + add r4, sp, #0 + ldr r2, [r1] + ldr r1, [r1, #4] + mov r6, r0 + str r2, [sp] + str r1, [sp, #4] + mov r5, #0 +_02203850: + ldr r1, [r4, r5, lsl #2] + mov r0, r6 + bl strcmp + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + cmp r5, #2 + blo _02203850 + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02203884: .word 0x0220BCE0 + + arm_func_start FUN_02203888 +FUN_02203888: ; 0x02203888 + ldr r0, [r0, #0x20] + bx lr + + arm_func_start FUN_02203890 +FUN_02203890: ; 0x02203890 + str r1, [r0, #0x20] + bx lr + + arm_func_start FUN_02203898 +FUN_02203898: ; 0x02203898 + ldrh r0, [r0, #0xc] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + + arm_func_start FUN_022038BC +FUN_022038BC: ; 0x022038BC + ldr r0, [r0, #8] + bx lr + + arm_func_start FUN_022038C4 +FUN_022038C4: ; 0x022038C4 + ldrb r0, [r0, #0x15] + and r0, r0, #2 + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + bx lr + + arm_func_start FUN_022038DC +FUN_022038DC: ; 0x022038DC + ldrh r0, [r0, #4] + bx lr + + arm_func_start FUN_022038E4 +FUN_022038E4: ; 0x022038E4 + ldrh r0, [r0, #4] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + + arm_func_start FUN_02203908 +FUN_02203908: ; 0x02203908 + ldr r0, [r0] + bx lr + + arm_func_start FUN_02203910 +FUN_02203910: ; 0x02203910 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r2 + mov r2, #0 + mov r4, r3 + bl FUN_022039E0 + cmp r0, #0 + beq _0220393C + bl atod + mov r5, r0 + mov r4, r1 +_0220393C: + mov r0, r5 + mov r1, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_0220394C +FUN_0220394C: ; 0x0220394C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + ldr r1, _022039D8 ; =0x0220F7E0 + mov r0, r5 + mov r4, r2 + bl strcmp + cmp r0, #0 + bne _0220397C + mov r0, r6 + bl FUN_022034A4 + ldmia sp!, {r4, r5, r6, pc} +_0220397C: + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl FUN_022039E0 + cmp r0, #0 + beq _022039C8 + ldrb r2, [r0] + cmp r2, #0 + blt _022039A8 + cmp r2, #0x80 + blt _022039B0 +_022039A8: + mov r1, #0 + b _022039C0 +_022039B0: + ldr r1, _022039DC ; =0x0210430C + mov r2, r2, lsl #1 + ldrh r1, [r1, r2] + and r1, r1, #8 +_022039C0: + cmp r1, #0 + bne _022039D0 +_022039C8: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} +_022039D0: + bl atol + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022039D8: .word 0x0220F7E0 +_022039DC: .word 0x0210430C + + arm_func_start FUN_022039E0 +FUN_022039E0: ; 0x022039E0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + movs r6, r0 + mov r5, r1 + mov r4, r2 + bne _02203A0C + ldr r0, _02203A40 ; =0x0220F7E8 + ldr r1, _02203A44 ; =0x0220F7F0 + mov r2, #0 + mov r3, #0x97 + bl __msl_assertion_failed +_02203A0C: + cmp r6, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + str r5, [sp] + ldr r0, [r6, #0x18] + add r1, sp, #0 + bl FUN_021EF358 + cmp r0, #0 + ldrne r4, [r0, #4] + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02203A40: .word 0x0220F7E8 +_02203A44: .word 0x0220F7F0 + + arm_func_start FUN_02203A48 +FUN_02203A48: ; 0x02203A48 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r1 + mov r5, r0 + ldr r1, _02203A7C ; =0x0220F7FC + add r0, sp, #0 + bl sprintf + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + bl FUN_02203A80 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02203A7C: .word 0x0220F7FC + + arm_func_start FUN_02203A80 +FUN_02203A80: ; 0x02203A80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r2 + mov r0, #0 + bl FUN_02206428 + str r0, [sp] + mov r1, r4 + mov r0, #0 + bl FUN_02206428 + str r0, [sp, #4] + ldr r0, [r5, #0x18] + add r1, sp, #0 + bl FUN_021EF494 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02203AC0 +FUN_02203AC0: ; 0x02203AC0 + stmdb sp!, {r4, lr} + ldr r4, [r0] + ldr r0, [r4, #0x18] + bl FUN_021EF5B0 + mov r1, #0 + mov r0, r4 + str r1, [r4, #0x18] + bl FUN_021DD82C + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203AE4 +FUN_02203AE4: ; 0x02203AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02203B30 ; =0x02211734 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl FUN_021EF540 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02203B30 ; =0x02211734 + ldr r0, [r0] + bl FUN_021EF5B0 + ldr r0, _02203B30 ; =0x02211734 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02203B30: .word 0x02211734 + + arm_func_start FUN_02203B34 +FUN_02203B34: ; 0x02203B34 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02203B88 ; =0x02211734 + ldr r0, [r0] + cmp r0, #0 + bne _02203B78 + ldr r0, _02203B8C ; =FUN_02203BA8 + ldr ip, _02203B90 ; =FUN_02203B98 + str r0, [sp] + ldr r3, _02203B94 ; =FUN_02203BBC + mov r0, #8 + mov r1, #0x64 + mov r2, #2 + str ip, [sp, #4] + bl FUN_021EF62C + ldr r1, _02203B88 ; =0x02211734 + str r0, [r1] +_02203B78: + ldr r0, _02203B88 ; =0x02211734 + ldr r0, [r0] + add sp, sp, #0xc + ldmfd sp!, {pc} + .align 2, 0 +_02203B88: .word 0x02211734 +_02203B8C: .word FUN_02203BA8 +_02203B90: .word FUN_02203B98 +_02203B94: .word FUN_02203BBC + + arm_func_start FUN_02203B98 +FUN_02203B98: ; 0x02203B98 + ldr ip, _02203BA4 ; =FUN_021DD82C + ldr r0, [r0] + bx ip + .align 2, 0 +_02203BA4: .word FUN_021DD82C + + arm_func_start FUN_02203BA8 +FUN_02203BA8: ; 0x02203BA8 + ldr ip, _02203BB8 ; =0x020E9B38 + ldr r0, [r0] + ldr r1, [r1] + bx ip + .align 2, 0 +_02203BB8: .word 0x020E9B38 + + arm_func_start FUN_02203BBC +FUN_02203BBC: ; 0x02203BBC + ldr ip, _02203BC8 ; =FUN_022034F4 + ldr r0, [r0] + bx ip + .align 2, 0 +_02203BC8: .word FUN_022034F4 + + arm_func_start FUN_02203BCC +FUN_02203BCC: ; 0x02203BCC + ldr r0, [r0, #0x4ec] + bx lr + + arm_func_start FUN_02203BD4 +FUN_02203BD4: ; 0x02203BD4 + ldr ip, _02203BE0 ; =FUN_02206740 + add r0, r0, #0x4c + bx ip + .align 2, 0 +_02203BE0: .word FUN_02206740 + + arm_func_start FUN_02203BE4 +FUN_02203BE4: ; 0x02203BE4 + ldr ip, _02203BF0 ; =0x0220658C + add r0, r0, #0x4c + bx ip + .align 2, 0 +_02203BF0: .word 0x0220658C + + arm_func_start FUN_02203BF4 +FUN_02203BF4: ; 0x02203BF4 + ldr ip, _02203C00 ; =FUN_02206570 + add r0, r0, #0x4c + bx ip + .align 2, 0 +_02203C00: .word FUN_02206570 + + arm_func_start FUN_02203C04 +FUN_02203C04: ; 0x02203C04 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_02203C1C + add r0, r4, #0x4c + bl FUN_022064BC + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203C1C +FUN_02203C1C: ; 0x02203C1C + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x4c + bl FUN_02205994 + mov r0, r4 + bl FUN_02203024 + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203C38 +FUN_02203C38: ; 0x02203C38 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_02202AD4 + add r0, r4, #0x4c + bl FUN_022041FC + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203C50 +FUN_02203C50: ; 0x02203C50 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x4c + bl FUN_022066A4 + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0x4c + bl FUN_0220659C + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203C7C +FUN_02203C7C: ; 0x02203C7C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r6, r2 + mov r0, r1 + mov r4, r3 + bl FUN_021EFB38 + mov r3, r6, asr #8 + mov r2, r6, lsl #8 + mov r1, r0 + and r3, r3, #0xff + and r0, r2, #0xff00 + orr r0, r3, r0 + mov r2, r0, lsl #0x10 + mov r3, r4 + add r0, r5, #0x4c + mov r2, r2, lsr #0x10 + bl FUN_02204380 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02203CC4 +FUN_02203CC4: ; 0x02203CC4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r6, r2 + mov r0, r1 + mov r4, r3 + bl FUN_021EFB38 + mov r3, r6, asr #8 + mov r2, r6, lsl #8 + ldr ip, [sp, #0x18] + mov r1, r0 + str ip, [sp] + and r3, r3, #0xff + and r0, r2, #0xff00 + orr r0, r3, r0 + mov r2, r0, lsl #0x10 + mov r3, r4 + add r0, r5, #0x4c + mov r2, r2, lsr #0x10 + bl FUN_02204438 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02203D1C +FUN_02203D1C: ; 0x02203D1C + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, [sp, #0x1c] + str lr, [sp] + str ip, [sp, #4] + mov lr, #0x80 + ldr ip, [sp, #0x20] + str lr, [sp, #8] + str ip, [sp, #0xc] + bl FUN_02203D50 + add sp, sp, #0x14 + ldmfd sp!, {pc} + + arm_func_start FUN_02203D50 +FUN_02203D50: ; 0x02203D50 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10c + ldr r8, [sp, #0x130] + mov sl, r0 + str r1, [sp, #4] + add r4, sp, #8 + mov sb, r3 + mov r1, #0x40 + mov r0, #0 +_02203D74: + strb r0, [r4], #1 + strb r0, [r4], #1 + strb r0, [r4], #1 + strb r0, [r4], #1 + subs r1, r1, #1 + bne _02203D74 + mov r7, #0 + str r2, [sl, #0x620] + mov r6, r7 + str r7, [sl, #0x40] + cmp r8, #0 + ble _02203DFC + ldr fp, _02203E78 ; =0x0220F3A8 +_02203DA8: + ldrb r0, [sb, r6] + add r4, sb, r6 + ldr r5, [fp, r0, lsl #2] + mov r0, r5 + bl strlen + add r0, r7, r0 + add r0, r0, #1 + cmp r0, #0x100 + bge _02203DFC + add r0, sp, #8 + ldr r1, _02203E7C ; =0x0220F800 + mov r2, r5 + add r0, r0, r7 + bl sprintf + add r7, r7, r0 + ldrb r1, [r4] + mov r0, sl + bl FUN_02202AB8 + add r6, r6, #1 + cmp r6, r8 + blt _02203DA8 +_02203DFC: + ldr r4, [sp, #0x13c] + ldr r2, [sp, #0x134] + ldr r3, [sp, #0x138] + add r1, sp, #8 + add r0, sl, #0x4c + str r4, [sp] + bl FUN_02205AB4 + cmp r0, #0 + addne sp, sp, #0x10c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp, #4] + cmp r1, #0 + addne sp, sp, #0x10c + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, #0xa + b _02203E4C +_02203E3C: + mov r0, r4 + bl FUN_021F0250 + mov r0, sl + bl FUN_02203C38 +_02203E4C: + ldr r1, [sl, #0x4c] + cmp r1, #3 + beq _02203E3C + ldr r1, [sl, #0x10] + cmp r1, #0 + addle sp, sp, #0x10c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #0 + beq _02203E3C + add sp, sp, #0x10c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02203E78: .word 0x0220F3A8 +_02203E7C: .word 0x0220F800 + + arm_func_start FUN_02203E80 +FUN_02203E80: ; 0x02203E80 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x4c + bl FUN_0220595C + mov r0, r4 + bl FUN_02202FF8 + mov r0, r4 + bl FUN_021DD82C + ldmia sp!, {r4, pc} + + arm_func_start FUN_02203EA4 +FUN_02203EA4: ; 0x02203EA4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + ldr r4, [sp, #0x30] + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + cmp r4, #0 + bne _02203EE0 + ldr r0, _02203F68 ; =0x02210E5C + ldr r0, [r0] + cmp r0, #1 + addne sp, sp, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02203EE0: + ldr r0, _02203F6C ; =0x00000638 + bl FUN_021DD860 + movs r4, r0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x38] + str r1, [r4, #0x630] + str r0, [r4, #0x634] + mov r0, #0 + str r0, [r4, #0x624] + ldr r1, [sp, #0x30] + str r5, [sp] + ldr r0, _02203F70 ; =FUN_02204028 + str r1, [sp, #4] + str r0, [sp, #8] + mov r1, r8 + mov r2, r7 + mov r3, r6 + add r0, r4, #0x4c + str r4, [sp, #0xc] + bl FUN_02206248 + ldr r0, _02203F74 ; =FUN_02203F78 + ldr r1, [sp, #0x28] + str r0, [sp] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + mov r0, r4 + str r4, [sp, #4] + bl FUN_02203048 + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02203F68: .word 0x02210E5C +_02203F6C: .word 0x00000638 +_02203F70: .word FUN_02204028 +_02203F74: .word FUN_02203F78 + + arm_func_start FUN_02203F78 +FUN_02203F78: ; 0x02203F78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r2 + mov r4, r3 + cmp r1, #0 + beq _02203FBC + cmp r1, #1 + beq _02203FA4 + cmp r1, #2 + beq _02203FD4 + b _02203FE8 +_02203FA4: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #2 + blx ip + b _02203FE8 +_02203FBC: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #1 + blx ip + b _02203FE8 +_02203FD4: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #4 + blx ip +_02203FE8: + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, [r5] + ldr r0, [r4, #0x628] + cmp r1, r0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + add r0, r4, #0x600 + ldrh r1, [r5, #4] + ldrh r0, [r0, #0x2c] + cmp r1, r0 + moveq r0, #0 + streq r0, [r4, #0x628] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02204028 +FUN_02204028: ; 0x02204028 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r2 + mov r4, r3 + cmp r1, #6 + addls pc, pc, r1, lsl #2 + b _022041C8 +_02204044: ; jump table + b _02204060 ; case 0 + b _022040E8 ; case 1 + b _02204124 ; case 2 + b _02204158 ; case 3 + b _022041C8 ; case 4 + b _022041A0 ; case 5 + b _022041BC ; case 6 +_02204060: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #0 + blx ip + ldrb r1, [r5, #0x14] + ands r0, r1, #3 + beq _02204088 + ands r0, r1, #0x40 + bne _022041C8 +_02204088: + ands r0, r1, #0x2c + bne _022041C8 + ldr r0, [r4, #0x624] + cmp r0, #0 + bne _022041C8 + ldrb r0, [r5, #0x15] + ands r0, r0, #1 + beq _022040D0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _022040C0 + ldr r0, [r4, #0x40] + cmp r0, #0 + bne _022040C8 +_022040C0: + mov r3, #1 + b _022040D4 +_022040C8: + mov r3, #0 + b _022040D4 +_022040D0: + mov r3, #2 +_022040D4: + mov r0, r4 + mov r1, r5 + mov r2, #0 + bl FUN_02202F68 + b _022041C8 +_022040E8: + ldrb r0, [r5, #0x14] + ands r0, r0, #0x43 + bne _0220410C + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #2 + blx ip + b _022041C8 +_0220410C: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #1 + blx ip + b _022041C8 +_02204124: + ldrb r0, [r5, #0x14] + ands r0, r0, #0x2c + beq _0220413C + mov r0, r4 + mov r1, r5 + bl FUN_02202A80 +_0220413C: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r2, r5 + mov r1, #3 + blx ip + b _022041C8 +_02204158: + ldr r1, [r4, #0x620] + cmp r1, #0 + beq _02204168 + bl FUN_02205994 +_02204168: + ldr r0, [r6, #4] + bl FUN_021EF06C + cmp r0, #0 + beq _02204184 + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _022041C8 +_02204184: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #4 + mov r2, #0 + blx ip + b _022041C8 +_022041A0: + ldr r3, [r4, #0x634] + ldr ip, [r4, #0x630] + mov r0, r4 + mov r1, #5 + mov r2, #0 + blx ip + b _022041C8 +_022041BC: + ldr r1, [r4, #0x4ec] + mov r0, r4 + bl FUN_02203040 +_022041C8: + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5] + ldr r0, [r4, #0x628] + cmp r1, r0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r4, #0x600 + ldrh r1, [r5, #4] + ldrh r0, [r0, #0x2c] + cmp r1, r0 + moveq r0, #0 + streq r0, [r4, #0x628] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_022041FC +FUN_022041FC: ; 0x022041FC + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_02206514 + ldr r0, [r4] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02204240 +_02204218: ; jump table + b _02204234 ; case 0 + b _02204240 ; case 1 + b _02204228 ; case 2 + b _02204228 ; case 3 +_02204228: + mov r0, r4 + bl FUN_02204560 + ldmia sp!, {r4, pc} +_02204234: + mov r0, r4 + bl FUN_02204248 + ldmia sp!, {r4, pc} +_02204240: + mov r0, #0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_02204248 +FUN_02204248: ; 0x02204248 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr ip, _02204374 ; =0x000005F4 + sub sp, sp, ip + mov r1, #8 + mov sl, r0 + str r1, [sp, #0x10] + ldr r0, [sl, #0x4b0] + bl FUN_021EFF2C + cmp r0, #0 + beq _0220431C + add sb, sp, #8 + add r8, sp, #0x10 + add fp, sp, #0x14 + mov r5, #0x11 + mov r7, #0 + mvn r4, #0 +_02204288: + str sb, [sp] + str r8, [sp, #4] + ldr r0, [sl, #0x4b0] + ldr r2, _02204378 ; =0x000005DB + mov r1, fp + mov r3, r7 + bl FUN_021EFC40 + mvn r1, #0 + cmp r0, r1 + beq _0220430C + ldrh r2, [sp, #0xa] + ldr r1, [sp, #0xc] + mov r0, sl + bl FUN_02206628 + cmp r0, r4 + bne _0220430C + ldrh r2, [sp, #0xa] + ldr r1, [sp, #0xc] + mov r0, sl + bl FUN_022033F4 + mov r6, r0 + bl FUN_022033AC + cmp r0, #0 + ldrne ip, _02204374 ; =0x000005F4 + movne r0, #5 + addne sp, sp, ip + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r6 + mov r1, r5 + bl FUN_022033EC + mov r0, sl + mov r1, r6 + bl FUN_02206704 +_0220430C: + ldr r0, [sl, #0x4b0] + bl FUN_021EFF2C + cmp r0, #0 + bne _02204288 +_0220431C: + bl FUN_021F025C + ldr r1, [sl, #0x4b4] + sub r0, r0, r1 + cmp r0, #0x7d0 + bls _02204364 + ldr r0, [sl, #0x4b0] + bl FUN_021EFD9C + mvn r0, #0 + str r0, [sl, #0x4b0] + mov r0, #1 + str r0, [sl] + ldr r0, _0220437C ; =0x02211738 + ldr r3, [sl, #0x494] + ldr r2, [r0] + ldr r4, [sl, #0x488] + mov r0, sl + mov r1, #3 + blx r4 +_02204364: + mov r0, #0 + ldr ip, _02204374 ; =0x000005F4 + add sp, sp, ip + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02204374: .word 0x000005F4 +_02204378: .word 0x000005DB +_0220437C: .word 0x02211738 + + arm_func_start FUN_02204380 +FUN_02204380: ; 0x02204380 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + ldr r3, [sp, #0x3c] + mov r7, #0xfd + mov sb, r3, lsr #0x18 + mov r8, r3, lsr #8 + mov sl, r3, lsl #8 + and sb, sb, #0xff + and r8, r8, #0xff00 + mov r6, #0xfc + mov r5, #0x1e + mov r4, #0x66 + mov lr, #0x6a + mov ip, #0xb2 + strb r7, [sp, #4] + mov r3, r3, lsl #0x18 + orr r8, sb, r8 + and sl, sl, #0xff0000 + and sb, r3, #0xff000000 + orr r3, sl, r8 + orr r3, sb, r3 + str r3, [sp, #0x3c] + add r8, sp, #0x3c + strb r6, [sp, #5] + strb r5, [sp, #6] + strb r4, [sp, #7] + strb lr, [sp, #8] + strb ip, [sp, #9] + ldrb r5, [r8] + ldrb r4, [r8, #1] + add r7, sp, #0xa + add r3, sp, #4 + strb r5, [r7] + strb r4, [r7, #1] + ldrb r6, [r8, #2] + ldrb r5, [r8, #3] + mov r4, #0xa + strb r6, [r7, #2] + strb r5, [r7, #3] + str r4, [sp] + bl FUN_02204438 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_02204438 +FUN_02204438: ; 0x02204438 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r5, r0 + ldr r1, [r5] + mov r4, r3 + cmp r1, #1 + bne _0220446C + mov r1, #0 + mov r2, r1 + mov r3, #2 + str r1, [sp] + bl FUN_02205AB4 +_0220446C: + ldr r0, [r5] + cmp r0, #1 + addeq sp, sp, #0x18 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r0, [sp, #0x38] + add r1, sp, #4 + add r0, r0, #9 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, r0, asr #8 + mov r0, r0, lsl #8 + and r2, r2, #0xff + and r0, r0, #0xff00 + orr r0, r2, r0 + strh r0, [sp, #4] + ldrb r3, [r1] + ldrb r2, [r1, #1] + add r1, sp, #6 + mov r0, #2 + strb r3, [r1] + strb r2, [r1, #1] + add lr, sp, #0x2c + strb r0, [sp, #8] + ldrb r3, [lr] + ldrb r0, [lr, #1] + add r6, sp, #9 + add r2, sp, #0x30 + strb r3, [r6] + strb r0, [r6, #1] + ldrb ip, [lr, #2] + ldrb r3, [lr, #3] + add lr, sp, #0xd + mov r0, r5 + strb ip, [r6, #2] + strb r3, [r6, #3] + ldrb ip, [r2] + ldrb r3, [r2, #1] + mov r2, #9 + strb ip, [lr] + strb r3, [lr, #1] + bl FUN_02205D28 + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r4, r5, r6, lr} + addne sp, sp, #0x10 + bxne lr + ldr r0, [r5, #0x4b0] + ldr r2, [sp, #0x38] + mov r1, r4 + mov r3, #0 + bl FUN_021EFC24 + cmp r0, #0 + movlt r0, #3 + movge r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_02204560 +FUN_02204560: ; 0x02204560 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0x4b0] + bl FUN_021EFF2C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, [r6, #0x80] + ldr r1, [r6, #0x7c] + ldr r0, [r6, #0x4b0] + add r1, r1, r4 + rsb r2, r4, #0x1000 + mov r3, #0 + bl FUN_021EFC78 + add r1, r0, #1 + cmp r1, #1 + bhi _022045B4 + mov r0, r6 + bl FUN_02206184 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_022045B4: + ldr r1, [r6, #0x80] + mov r5, #0 + add r0, r1, r0 + str r0, [r6, #0x80] + ldr r0, [r6] + cmp r0, #2 + beq _022045DC + ldr r0, [r6, #0x5c8] + cmp r0, #0 + ble _022045F8 +_022045DC: + ldr r1, [r6, #0x7c] + ldr r2, [r6, #0x80] + ldr r0, _02204648 ; =0x000004BC + add r1, r1, r4 + add r0, r6, r0 + sub r2, r2, r4 + bl FUN_0220279C +_022045F8: + ldr r0, [r6] + cmp r0, #3 + bne _02204610 + mov r0, r6 + bl FUN_02204DF0 + mov r5, r0 +_02204610: + cmp r5, #0 + movne r0, r5 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r6] + cmp r0, #2 + bne _02204640 + ldr r0, [r6, #0x80] + cmp r0, #0 + ble _02204640 + mov r0, r6 + bl FUN_0220464C + ldmia sp!, {r4, r5, r6, pc} +_02204640: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02204648: .word 0x000004BC + + arm_func_start FUN_0220464C +FUN_0220464C: ; 0x0220464C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sb, r0 + ldr r0, [sb, #0x80] + mov r8, #0 + cmp r0, #3 + blt _02204800 + ldr sl, _0220481C ; =0x0220F818 + ldr fp, _02204820 ; =0x0220F830 + add r7, sp, #0 + mov r6, r8 + mov r4, r8 + add r5, sb, #0x80 +_02204680: + ldr r0, [sb, #0x7c] + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r7] + strb r0, [r7, #1] + ldrh r0, [sp] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [sp] + ldrh r2, [sp] + cmp r2, #0x1000 + movhi r8, #4 + bhi _02204800 + ldr r0, [sb, #0x80] + cmp r0, r2 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sb, #0x7c] + ldrsb r0, [r1, #2] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02204798 +_022046E8: ; jump table + b _02204798 ; case 0 + b _02204704 ; case 1 + b _0220471C ; case 2 + b _02204734 ; case 3 + b _02204754 ; case 4 + b _0220476C ; case 5 + b _02204784 ; case 6 +_02204704: + mov r0, sb + add r1, r1, #3 + sub r2, r2, #3 + bl FUN_02204D10 + mov r8, r0 + b _02204798 +_0220471C: + mov r0, sb + add r1, r1, #3 + sub r2, r2, #3 + bl FUN_02204828 + mov r8, r0 + b _02204798 +_02204734: + ldr r0, [sb, #0x4b0] + mov r3, r6 + bl FUN_021EFC24 + cmp r0, #0 + bgt _02204798 + add sp, sp, #4 + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02204754: + mov r0, sb + add r1, r1, #3 + sub r2, r2, #3 + bl FUN_02204920 + mov r8, r0 + b _02204798 +_0220476C: + mov r0, sb + add r1, r1, #3 + sub r2, r2, #3 + bl FUN_022049B0 + mov r8, r0 + b _02204798 +_02204784: + mov r0, sb + add r1, r1, #3 + sub r2, r2, #3 + bl FUN_02204B40 + mov r8, r0 +_02204798: + ldrh r0, [sp] + ldr r1, [r5] + sub r0, r1, r0 + str r0, [r5] + ldr r0, [sb, #0x80] + cmp r0, #0 + bge _022047C8 + ldr r3, _02204824 ; =0x000005B4 + mov r0, sl + mov r1, fp + mov r2, r4 + bl __msl_assertion_failed +_022047C8: + ldr r2, [sb, #0x80] + cmp r2, #0 + beq _022047EC + ldr r0, [sb, #0x7c] + cmp r0, #0 + beq _022047EC + ldrh r1, [sp] + add r1, r0, r1 + bl memmove +_022047EC: + cmp r8, #0 + bne _02204800 + ldr r0, [sb, #0x80] + cmp r0, #3 + bge _02204680 +_02204800: + cmp r8, #0 + beq _02204810 + mov r0, sb + bl FUN_02206184 +_02204810: + mov r0, r8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0220481C: .word 0x0220F818 +_02204820: .word 0x0220F830 +_02204824: .word 0x000005B4 + + arm_func_start FUN_02204828 +FUN_02204828: ; 0x02204828 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r6, r2 + cmp r6, #5 + mov r8, r0 + mov r7, r1 + addlt sp, sp, #0x10 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + add r4, sp, #4 + add r3, sp, #8 + str r4, [sp] + bl FUN_02205650 + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, r8 + bl FUN_02206628 + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + bne _022048A8 + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, r8 + bl FUN_022033F4 + mov r5, r0 + bl FUN_022033AC + cmp r0, #0 + beq _022048B8 + add sp, sp, #0x10 + mov r0, #5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022048A8: + mov r0, r8 + mov r1, r4 + bl FUN_02206570 + mov r5, r0 +_022048B8: + mov ip, #0 + mov r0, r8 + mov r1, r5 + mov r2, r7 + mov r3, r6 + str ip, [sp] + bl FUN_02205378 + cmp r0, #0 + addlt sp, sp, #0x10 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + mvn r0, #0 + cmp r4, r0 + bne _022048FC + mov r0, r8 + mov r1, r5 + bl FUN_02206704 +_022048FC: + ldr r3, [r8, #0x494] + ldr r4, [r8, #0x488] + mov r0, r8 + mov r2, r5 + mov r1, #1 + blx r4 + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_02204920 +FUN_02204920: ; 0x02204920 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + cmp r2, #6 + mov r4, r0 + addlt sp, sp, #0xc + movlt r0, #4 + ldmltia sp!, {r4, r5, pc} + ldrb ip, [r1] + ldrb r2, [r1, #1] + add r5, sp, #4 + add r3, r1, #4 + strb ip, [r5] + strb r2, [r5, #1] + ldrb lr, [r1, #2] + ldrb r2, [r1, #3] + add ip, sp, #0 + strb lr, [r5, #2] + strb r2, [r5, #3] + ldrb r2, [r1, #4] + ldrb r1, [r3, #1] + strb r2, [ip] + strb r1, [ip, #1] + ldrh r2, [sp] + ldr r1, [sp, #4] + bl FUN_02206628 + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + mov r0, r4 + bl FUN_0220659C + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_022049B0 +FUN_022049B0: ; 0x022049B0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x54 + mov r8, r2 + cmp r8, #0xb + mov sl, r0 + mov sb, r1 + addlt sp, sp, #0x54 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r3, [sb] + ldrb r2, [sb, #1] + add r5, sp, #0x10 + add r1, sb, #4 + strb r3, [r5] + strb r2, [r5, #1] + ldrb r4, [sb, #2] + ldrb r2, [sb, #3] + add r3, sp, #8 + strb r4, [r5, #2] + strb r2, [r5, #3] + ldrb r2, [sb, #4] + ldrb r1, [r1, #1] + strb r2, [r3] + strb r1, [r3, #1] + ldrh r2, [sp, #8] + ldr r1, [sp, #0x10] + bl FUN_02206628 + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #0x54 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + bl FUN_02206570 + add r3, sb, #6 + ldrb r2, [sb, #6] + ldrb r1, [r3, #1] + add r4, sp, #0xc + mov fp, r0 + strb r2, [r4] + strb r1, [r4, #1] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + sub r8, r8, #0xb + mov r6, #0 + strb r1, [r4, #2] + strb r0, [r4, #3] + ldr r0, [sp, #0xc] + add r5, sp, #0x14 + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #8 + mov r3, r0, lsl #8 + and r2, r2, #0xff + and r1, r1, #0xff00 + mov r0, r0, lsl #0x18 + orr r1, r2, r1 + and r3, r3, #0xff0000 + and r2, r0, #0xff000000 + orr r0, r3, r1 + orr r0, r2, r0 + str r0, [sp, #0xc] + ldrb r7, [sb, #0xa] + add sb, sb, #0xb + mvn r4, #0 + b _02204AEC +_02204AB8: + cmp r8, #1 + blt _02204AFC + mov r0, sb + mov r1, r8 + bl FUN_02206378 + cmp r0, r4 + addeq sp, sp, #0x54 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str sb, [r5, r6, lsl #2] + add sb, sb, r0 + sub r8, r8, r0 + add r6, r6, #1 +_02204AEC: + cmp r6, r7 + bge _02204AFC + cmp r6, #0x10 + blt _02204AB8 +_02204AFC: + ldr r4, [sl, #0x48c] + cmp r4, #0 + addeq sp, sp, #0x54 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #0x14 + str r1, [sp] + ldr r2, [sl, #0x494] + mov r0, sl + str r2, [sp, #4] + ldr r2, [sp, #0xc] + mov r1, fp + mov r3, r6 + blx r4 + mov r0, #0 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02204B40 +FUN_02204B40: ; 0x02204B40 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov r7, r2 + cmp r7, #2 + mov sb, r0 + mov r8, r1 + addlt sp, sp, #0x24 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r8, #1] + sub r7, r7, #2 + mov r6, #0 + str r0, [sp, #0x10] + ldrb r0, [r8] + add r8, r8, #2 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _02204CD0 + add r5, sp, #0x18 + add r4, sp, #0x1c +_02204B94: + mov r0, r8 + mov r1, r7 + mov fp, r8 + bl FUN_02206378 + mvn r1, #0 + cmp r0, r1 + addeq sp, sp, #0x24 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + sub r2, r7, r0 + cmp r2, #0xb + add lr, r8, r0 + addlt sp, sp, #0x24 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r1, [lr] + ldrb r0, [lr, #1] + sub r7, r2, #0xa + add r3, lr, #6 + strb r1, [r5] + strb r0, [r5, #1] + ldrb r2, [lr, #2] + ldrb r1, [lr, #3] + add r0, lr, #4 + add r8, lr, #0xa + strb r2, [r5, #2] + strb r1, [r5, #3] + ldrb sl, [r0, #1] + ldrb ip, [lr, #4] + add r2, sp, #0x14 + mov r0, r8 + strb ip, [r2] + strb sl, [r2, #1] + ldrb sl, [lr, #6] + ldrb r2, [r3, #1] + mov r1, r7 + strb sl, [r4] + strb r2, [r4, #1] + ldrb sl, [r3, #2] + ldrb r2, [r3, #3] + strb sl, [r4, #2] + strb r2, [r4, #3] + ldr ip, [sp, #0x1c] + mov r3, ip, lsl #0x18 + mov r2, ip, lsr #0x18 + and sl, r3, #0xff000000 + mov r3, ip, lsl #8 + mov ip, ip, lsr #8 + and r2, r2, #0xff + and ip, ip, #0xff00 + and r3, r3, #0xff0000 + orr r2, r2, ip + orr r2, r3, r2 + orr r2, sl, r2 + str r2, [sp, #0x1c] + bl FUN_02206378 + mov sl, r0 + mvn r0, #0 + cmp sl, r0 + addeq sp, sp, #0x24 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp, #0x1c] + mov r0, sb + str r1, [sp] + str r8, [sp, #4] + ldr r2, [sb, #0x494] + mov r1, fp + str r2, [sp, #8] + ldrh r3, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr fp, [sb, #0x490] + blx fp + ldr r0, [sp, #0x10] + add r6, r6, #1 + cmp r6, r0 + add r8, r8, sl + sub r7, r7, sl + blt _02204B94 +_02204CD0: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02204D04 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r2, [sb, #0x494] + mov r0, sb + str r2, [sp, #8] + ldr r4, [sb, #0x490] + mov r2, r1 + mov r3, r1 + blx r4 +_02204D04: + mov r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02204D10 +FUN_02204D10: ; 0x02204D10 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + ldr r3, [sl, #8] + mov sb, r1 + mov r8, r2 + cmp r3, #0 + sub r8, r8, #1 + ldrb r6, [sb], #1 + beq _02204D3C + bl FUN_022059F8 +_02204D3C: + mov r1, r6 + mov r0, #8 + mov r2, #0 + bl FUN_021EF0E4 + str r0, [sl, #8] + ldr r0, [sl, #8] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r6, #0 + mov r7, #0 + ble _02204DE4 + add fp, sp, #0 + mvn r4, #0 +_02204D78: + cmp r8, #2 + addlt sp, sp, #0xc + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sb, #1 + sub r1, r8, #1 + bl FUN_02206378 + mov r5, r0 + cmp r5, r4 + addeq sp, sp, #0xc + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sb] + mov r0, sl + add r1, sb, #1 + str r2, [sp, #4] + bl FUN_02206428 + str r0, [sp] + ldr r0, [sl, #8] + mov r1, fp + bl FUN_021EEFA8 + add r0, r5, #1 + add r7, r7, #1 + cmp r7, r6 + add sb, sb, r0 + sub r8, r8, r0 + blt _02204D78 +_02204DE4: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02204DF0 +FUN_02204DF0: ; 0x02204DF0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r8, r0 + ldr r1, [r8, #0x5c8] + ldr r7, [r8, #0x7c] + ldr r6, [r8, #0x80] + cmp r1, #4 + addls pc, pc, r1, lsl #2 + b _022051D0 +_02204E14: ; jump table + b _02204E28 ; case 0 + b _02204E88 ; case 1 + b _02204F98 ; case 2 + b _0220508C ; case 3 + b _02205140 ; case 4 +_02204E28: + cmp r6, #1 + blt _022051D0 + ldrb r1, [r7] + eor r1, r1, #0xec + add r3, r1, #2 + cmp r6, r3 + blt _022051D0 + sub r1, r3, #1 + ldrb r1, [r7, r1] + eor r2, r1, #0xea + add r4, r3, r2 + cmp r6, r4 + blt _022051D0 + add r1, r7, r3 + bl FUN_022058B0 + ldr r0, _02205224 ; =0x000004BC + add r7, r7, r4 + sub r6, r6, r4 + mov r3, #1 + mov r1, r7 + mov r2, r6 + add r0, r8, r0 + str r3, [r8, #0x5c8] + bl FUN_0220279C +_02204E88: + cmp r6, #6 + blt _022051D0 + ldrb r1, [r7] + ldrb r0, [r7, #1] + add r5, r8, #0x4a0 + ldr r2, _02205228 ; =0x02211738 + strb r1, [r8, #0x4a0] + strb r0, [r5, #1] + ldrb r4, [r7, #2] + ldrb r3, [r7, #3] + mov r0, r8 + mov r1, #6 + strb r4, [r5, #2] + strb r3, [r5, #3] + ldr r2, [r2] + ldr r3, [r8, #0x494] + ldr r4, [r8, #0x488] + blx r4 + add r1, r7, #4 + ldr r0, _0220522C ; =0x000004A8 + ldrb r2, [r7, #4] + ldrb r1, [r1, #1] + add r3, r8, r0 + add r0, r8, #0x400 + strb r2, [r8, #0x4a8] + strb r1, [r3, #1] + ldrh r1, [r0, #0xa8] + ldr r0, _02205230 ; =0x0000FFFF + cmp r1, r0 + bne _02204F4C + add r0, r7, #6 + sub r1, r6, #6 + bl FUN_02206378 + mvn r1, #0 + cmp r0, r1 + beq _022051D0 + mov r0, r8 + add r1, r7, #6 + bl FUN_02205240 + ldr r0, _02205228 ; =0x02211738 + ldr r3, [r8, #0x494] + ldr r2, [r0] + ldr r4, [r8, #0x488] + mov r0, r8 + mov r1, #5 + blx r4 + ldr r0, [r8, #0x7c] + cmp r0, #0 + beq _022051D0 +_02204F4C: + ldr r0, [r8, #0x5c4] + add r7, r7, #6 + sub r6, r6, #6 + ands r0, r0, #2 + bne _02204F74 + add r0, r8, #0x400 + ldrh r1, [r0, #0xa8] + ldr r0, _02205230 ; =0x0000FFFF + cmp r1, r0 + bne _02204F88 +_02204F74: + mov r0, #5 + str r0, [r8, #0x5c8] + mov r0, #2 + str r0, [r8] + b _022051D0 +_02204F88: + mov r0, #2 + str r0, [r8, #0x5c8] + mvn r0, #0 + str r0, [r8, #0x484] +_02204F98: + ldr r1, [r8, #0x484] + mvn r0, #0 + cmp r1, r0 + bne _02204FE8 + cmp r6, #1 + blt _022051D0 + ldrb r1, [r7] + mov r0, #8 + mov r2, #0 + str r1, [r8, #0x484] + ldr r1, [r8, #0x484] + bl FUN_021EF0E4 + str r0, [r8, #8] + ldr r0, [r8, #8] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r7, r7, #1 + sub r6, r6, #1 +_02204FE8: + ldr r0, [r8, #8] + bl FUN_021EF06C + ldr r1, [r8, #0x484] + cmp r1, r0 + ble _02205068 + add r5, sp, #0 + mvn r4, #0 +_02205004: + cmp r6, #2 + blt _02205068 + add r0, r7, #1 + sub r1, r6, #1 + bl FUN_02206378 + mov sb, r0 + cmp sb, r4 + beq _02205068 + ldrb r2, [r7] + mov r0, r8 + add r1, r7, #1 + str r2, [sp, #4] + bl FUN_02206428 + str r0, [sp] + ldr r0, [r8, #8] + mov r1, r5 + bl FUN_021EEFA8 + add r1, sb, #1 + ldr r0, [r8, #8] + add r7, r7, r1 + sub r6, r6, r1 + bl FUN_021EF06C + ldr r1, [r8, #0x484] + cmp r1, r0 + bgt _02205004 +_02205068: + ldr r0, [r8, #8] + bl FUN_021EF06C + ldr r1, [r8, #0x484] + cmp r1, r0 + bgt _022051D0 + mov r0, #3 + str r0, [r8, #0x5c8] + mvn r0, #0 + str r0, [r8, #0x484] +_0220508C: + ldr r1, [r8, #0x484] + mvn r0, #0 + cmp r1, r0 + bne _022050BC + cmp r6, #1 + blt _022051D0 + ldrb r1, [r7] + mov r0, #0 + add r7, r7, #1 + str r1, [r8, #0x484] + str r0, [r8, #0x480] + sub r6, r6, #1 +_022050BC: + ldr r1, [r8, #0x484] + ldr r0, [r8, #0x480] + cmp r1, r0 + ble _02205128 + add r4, r8, #0x480 + mvn sb, #0 +_022050D4: + mov r0, r7 + mov r1, r6 + bl FUN_02206378 + mov r5, r0 + cmp r5, sb + beq _02205128 + mov r0, r8 + mov r1, r7 + bl FUN_02206428 + ldr r1, [r4] + ldr r2, [r8, #0x480] + add r1, r1, #1 + str r1, [r4] + add r1, r8, r2, lsl #2 + str r0, [r1, #0x84] + ldr r1, [r8, #0x484] + ldr r0, [r8, #0x480] + add r7, r7, r5 + cmp r1, r0 + sub r6, r6, r5 + bgt _022050D4 +_02205128: + ldr r1, [r8, #0x484] + ldr r0, [r8, #0x480] + cmp r1, r0 + bgt _022051D0 + mov r0, #4 + str r0, [r8, #0x5c8] +_02205140: + cmp r6, #5 + blt _022051D0 + mov sb, #0 + mvn r4, #0 + mvn r5, #1 +_02205154: + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_02205248 + cmp r0, r5 + addeq sp, sp, #0xc + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + cmp r0, r4 + bne _022051B4 + mov r0, #5 + str r0, [r8, #0x5c8] + mov r0, #2 + str r0, [r8] + ldr r0, _02205228 ; =0x02211738 + ldr r3, [r8, #0x494] + ldr r2, [r0] + ldr r4, [r8, #0x488] + mov r0, r8 + mov r1, #3 + sub r6, r6, #5 + add r7, r7, #5 + blx r4 + b _022051D0 +_022051B4: + ldr r1, [r8, #0x7c] + add r7, r7, r0 + cmp r1, #0 + sub r6, r6, r0 + moveq r0, sb + cmp r0, #0 + bne _02205154 +_022051D0: + cmp r6, #0 + bge _022051EC + ldr r0, _02205234 ; =0x0220F840 + ldr r1, _02205238 ; =0x0220F830 + ldr r3, _0220523C ; =0x000004AF + mov r2, #0 + bl __msl_assertion_failed +_022051EC: + ldr r0, [r8, #0x7c] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + cmp r6, #0 + beq _02205214 + mov r1, r7 + mov r2, r6 + bl memmove +_02205214: + str r6, [r8, #0x80] + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02205224: .word 0x000004BC +_02205228: .word 0x02211738 +_0220522C: .word 0x000004A8 +_02205230: .word 0x0000FFFF +_02205234: .word 0x0220F840 +_02205238: .word 0x0220F830 +_0220523C: .word 0x000004AF + + arm_func_start FUN_02205240 +FUN_02205240: ; 0x02205240 + str r1, [r0, #0x4ac] + bx lr + + arm_func_start FUN_02205248 +FUN_02205248: ; 0x02205248 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r4, r2 + cmp r4, #1 + mov r6, r0 + mov r5, r1 + addlt sp, sp, #0x10 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r7, [r5] + mov r0, r7 + bl FUN_02205884 + mov r8, r0 + cmp r4, r8 + addlt sp, sp, #0x10 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + ands r0, r7, #0x40 + beq _022052B4 + mov r0, r6 + add r1, r5, r8 + sub r2, r4, r8 + bl FUN_022056DC + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022052B4: + ands r0, r7, #0x80 + beq _022052D8 + add r0, r5, r8 + sub r1, r4, r8 + bl FUN_022057EC + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022052D8: + ldr r1, _02205374 ; =0x0220F84C + add r0, r5, #1 + mov r2, #4 + bl memcmp + cmp r0, #0 + addeq sp, sp, #0x10 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r7, sp, #4 + add r3, sp, #8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r7, [sp] + bl FUN_02205650 + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, r6 + bl FUN_022033F4 + mov r7, r0 + bl FUN_022033AC + cmp r0, #0 + addne sp, sp, #0x10 + mvnne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov ip, #1 + mov r0, r6 + mov r1, r7 + mov r2, r5 + mov r3, r4 + str ip, [sp] + bl FUN_02205378 + mov r4, r0 + mov r0, r6 + mov r1, r7 + bl FUN_02206704 + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02205374: .word 0x0220F84C + + arm_func_start FUN_02205378 +FUN_02205378: ; 0x02205378 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov r8, r2 + ldrb r2, [r8] + mov sb, r1 + mov sl, r0 + mov r7, r3 + str r2, [sp, #4] + mov r0, sb + mov r1, r2 + str r7, [sp] + ldr r6, [sp, #0x38] + bl FUN_022033EC + ldr r0, [sp, #4] + add r8, r8, #5 + ands r0, r0, #0x10 + sub r7, r7, #5 + ldr r0, [sp, #4] + addne r8, r8, #2 + subne r7, r7, #2 + ands r0, r0, #2 + moveq r0, #0 + streq r0, [sp, #0xc] + beq _02205404 + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r2, sp, #0xc + sub r7, r7, #4 + strb r1, [r2] + strb r0, [r2, #1] + ldrb r1, [r8, #2] + ldrb r0, [r8, #3] + add r8, r8, #4 + strb r1, [r2, #2] + strb r0, [r2, #3] +_02205404: + ldr r0, [sp, #4] + ands r0, r0, #0x20 + addeq r0, sl, #0x400 + ldreqh r0, [r0, #0xa8] + streqh r0, [sp, #0xa] + beq _02205438 + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r2, sp, #0xa + add r8, r8, #2 + strb r1, [r2] + strb r0, [r2, #1] + sub r7, r7, #2 +_02205438: + ldrh r2, [sp, #0xa] + ldr r1, [sp, #0xc] + mov r0, sb + bl FUN_022033E0 + ldr r0, [sp, #4] + ands r0, r0, #8 + beq _0220548C + ldrb r2, [r8] + ldrb r1, [r8, #1] + add r3, sp, #0xc + mov r0, sb + strb r2, [r3] + strb r1, [r3, #1] + ldrb r2, [r8, #2] + ldrb r1, [r8, #3] + add r8, r8, #4 + sub r7, r7, #4 + strb r2, [r3, #2] + strb r1, [r3, #3] + ldr r1, [sp, #0xc] + bl FUN_022033D8 +_0220548C: + ldr r0, [sp, #4] + ands r0, r0, #0x40 + beq _022055C4 + ldr r0, [sl, #8] + bl FUN_021EF06C + mov r5, r0 + cmp r5, #0 + mov r4, #0 + ble _022055AC + mov fp, #0xff +_022054B4: + ldr r0, [sl, #8] + mov r1, r4 + bl FUN_021EEFFC + mov r1, r0 + ldr r0, [r1, #4] + cmp r0, #0 + beq _0220554C + cmp r0, #1 + beq _022054E4 + cmp r0, #2 + beq _02205500 + b _022055A0 +_022054E4: + ldrb r2, [r8] + ldr r1, [r1] + mov r0, sb + bl FUN_02203A48 + add r8, r8, #1 + sub r7, r7, #1 + b _022055A0 +_02205500: + ldrb ip, [r8] + ldrb r3, [r8, #1] + add r2, sp, #8 + mov r0, sb + strb ip, [r2] + strb r3, [r2, #1] + ldrh r3, [sp, #8] + ldr r1, [r1] + mov r2, r3, asr #8 + mov r3, r3, lsl #8 + and r2, r2, #0xff + and r3, r3, #0xff00 + orr r2, r2, r3 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl FUN_02203A48 + add r8, r8, #2 + sub r7, r7, #2 + b _022055A0 +_0220554C: + cmp r6, #0 + ldrneb r0, [r8], #1 + subne r7, r7, #1 + moveq r0, fp + cmp r0, #0xff + bne _0220558C + ldr r1, [r1] + mov r0, sb + mov r2, r8 + bl FUN_02203A80 + mov r0, r8 + bl strlen + add r0, r0, #1 + add r8, r8, r0 + sub r7, r7, r0 + b _022055A0 +_0220558C: + add r0, sl, r0, lsl #2 + ldr r1, [r1] + ldr r2, [r0, #0x84] + mov r0, sb + bl FUN_02203A80 +_022055A0: + add r4, r4, #1 + cmp r4, r5 + blt _022054B4 +_022055AC: + mov r0, sb + bl FUN_022033C8 + orr r1, r0, #1 + mov r0, sb + and r1, r1, #0xff + bl FUN_022033D0 +_022055C4: + ldr r0, [sp, #4] + ands r0, r0, #0x80 + beq _02205640 + b _02205610 +_022055D4: + mov r0, r8 + mov r4, r8 + bl strlen + add r3, r0, #1 + add r8, r8, r3 + mov r0, sb + mov r1, r4 + mov r2, r8 + sub r7, r7, r3 + bl FUN_02203A80 + mov r0, r8 + bl strlen + add r0, r0, #1 + add r8, r8, r0 + sub r7, r7, r0 +_02205610: + ldrsb r0, [r8] + cmp r0, #0 + beq _02205624 + cmp r7, #0 + bgt _022055D4 +_02205624: + mov r0, sb + sub r7, r7, #1 + bl FUN_022033C8 + orr r1, r0, #2 + mov r0, sb + and r1, r1, #0xff + bl FUN_022033D0 +_02205640: + ldr r0, [sp] + sub r0, r0, r7 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02205650 +FUN_02205650: ; 0x02205650 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + cmp r2, #5 + addlt sp, sp, #4 + ldmltia sp!, {r4, r5, pc} + add r5, r1, #1 + ldrb ip, [r1] + ldrb r4, [r1, #1] + ldrb lr, [r5, #1] + ands ip, ip, #0x10 + strb r4, [r3] + strb lr, [r3, #1] + ldrb lr, [r5, #2] + ldrb ip, [r5, #3] + strb lr, [r3, #2] + strb ip, [r3, #3] + beq _022056C4 + sub r0, r2, #5 + cmp r0, #2 + addlt sp, sp, #4 + ldmltia sp!, {r4, r5, pc} + add r0, r1, #5 + ldrb r1, [r1, #5] + ldr r2, [sp, #0x10] + ldrb r0, [r0, #1] + add sp, sp, #4 + strb r1, [r2] + strb r0, [r2, #1] + ldmia sp!, {r4, r5, pc} +_022056C4: + add r0, r0, #0x400 + ldrh r1, [r0, #0xa8] + ldr r0, [sp, #0x10] + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_022056DC +FUN_022056DC: ; 0x022056DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r0 + ldr r0, [r8, #8] + mov r7, r1 + mov r6, r2 + bl FUN_021EF06C + mov r5, r0 + cmp r5, #0 + mov r4, #0 + ble _022057D4 + mvn sb, #0 +_0220570C: + ldr r0, [r8, #8] + mov r1, r4 + bl FUN_021EEFFC + ldr r0, [r0, #4] + cmp r0, #0 + beq _02205750 + cmp r0, #1 + beq _02205738 + cmp r0, #2 + beq _02205744 + b _02205798 +_02205738: + add r7, r7, #1 + sub r6, r6, #1 + b _022057B8 +_02205744: + add r7, r7, #2 + sub r6, r6, #2 + b _022057B8 +_02205750: + cmp r6, #1 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r7], #1 + sub r6, r6, #1 + cmp r0, #0xff + bne _022057B8 + mov r0, r7 + mov r1, r6 + bl FUN_02206378 + cmp r0, sb + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r7, r7, r0 + sub r6, r6, r0 + b _022057B8 +_02205798: + ldr r0, _022057E0 ; =0x0220F854 + ldr r1, _022057E4 ; =0x0220F830 + ldr r3, _022057E8 ; =0x00000317 + mov r2, #0 + bl __msl_assertion_failed + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022057B8: + cmp r6, #0 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r4, r4, #1 + cmp r4, r5 + blt _0220570C +_022057D4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022057E0: .word 0x0220F854 +_022057E4: .word 0x0220F830 +_022057E8: .word 0x00000317 + + arm_func_start FUN_022057EC +FUN_022057EC: ; 0x022057EC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + b _02205848 +_02205800: + mov r0, r5 + mov r1, r4 + bl FUN_02206378 + cmp r0, #0 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, pc} + sub r4, r4, r0 + add r5, r5, r0 + mov r0, r5 + mov r1, r4 + bl FUN_02206378 + cmp r0, #0 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, pc} + add r5, r5, r0 + sub r4, r4, r0 +_02205848: + cmp r4, #0 + ble _0220585C + ldrsb r0, [r5] + cmp r0, #0 + bne _02205800 +_0220585C: + cmp r4, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldrsb r0, [r5] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02205884 +FUN_02205884: ; 0x02205884 + mov r2, #5 + ands r1, r0, #2 + addne r2, r2, #4 + ands r1, r0, #8 + addne r2, r2, #4 + ands r1, r0, #0x10 + addne r2, r2, #2 + ands r0, r0, #0x20 + addne r2, r2, #2 + mov r0, r2 + bx lr + + arm_func_start FUN_022058B0 +FUN_022058B0: ; 0x022058B0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r7, r2 + add r0, sb, #0x54 + mov r8, r1 + bl strlen + mov r5, r0 + cmp r7, #0 + add r4, sb, #0x54 + mov r6, #0 + ble _0220593C +_022058E0: + mov r0, r6 + mov r1, r5 + bl _s32_div_f + ldrsb r1, [r4, r1] + mov r2, r6, lsr #0x1f + rsb r0, r2, r6, lsl #29 + mul r3, r6, r1 + mov r1, r3, lsr #0x1f + add r2, r2, r0, ror #29 + rsb r0, r1, r3, lsl #29 + add r2, sb, r2 + add r3, r1, r0, ror #29 + ldrsb r0, [r8, r6] + ldrsb r1, [r2, #0x74] + add r2, sb, r3 + add r6, r6, #1 + eor r0, r1, r0 + ldrsb r1, [r2, #0x74] + mov r0, r0, lsl #0x18 + cmp r6, r7 + eor r0, r1, r0, asr #24 + strb r0, [r2, #0x74] + blt _022058E0 +_0220593C: + ldr r0, _02205958 ; =0x000004BC + add r1, sb, #0x74 + add r0, sb, r0 + mov r2, #8 + bl FUN_022028B0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02205958: .word 0x000004BC + + arm_func_start FUN_0220595C +FUN_0220595C: ; 0x0220595C + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_02205994 + mov r0, r4 + bl FUN_022064BC + mov r0, r4 + bl FUN_02203AE4 + ldr r0, [r4, #4] + cmp r0, #0 + beq _02205988 + bl FUN_021EF074 +_02205988: + mov r0, #0 + str r0, [r4, #4] + ldmia sp!, {r4, pc} + + arm_func_start FUN_02205994 +FUN_02205994: ; 0x02205994 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x7c] + cmp r0, #0 + beq _022059AC + bl FUN_021DD82C +_022059AC: + mov r0, #0 + str r0, [r4, #0x7c] + str r0, [r4, #0x80] + ldr r0, [r4, #0x4b0] + mvn r1, #0 + cmp r0, r1 + beq _022059CC + bl FUN_021EFD9C +_022059CC: + mvn r1, #0 + mov r0, r4 + str r1, [r4, #0x4b0] + mov r1, #1 + str r1, [r4] + bl FUN_022059F8 + mvn r1, #0 + mov r0, r4 + str r1, [r4, #0x484] + bl FUN_02205A68 + ldmia sp!, {r4, pc} + + arm_func_start FUN_022059F8 +FUN_022059F8: ; 0x022059F8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5, #8] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r4, #0 + bl FUN_021EF06C + cmp r0, #0 + ble _02205A50 +_02205A24: + ldr r0, [r5, #8] + mov r1, r4 + bl FUN_021EEFFC + ldr r1, [r0] + mov r0, r5 + bl FUN_022063A8 + ldr r0, [r5, #8] + add r4, r4, #1 + bl FUN_021EF06C + cmp r4, r0 + blt _02205A24 +_02205A50: + ldr r0, [r5, #8] + bl FUN_021EF074 + mov r0, #0 + str r0, [r5, #8] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02205A68 +FUN_02205A68: ; 0x02205A68 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5, #0x480] + mov r4, #0 + cmp r0, #0 + ble _02205AA4 +_02205A84: + add r0, r5, r4, lsl #2 + ldr r1, [r0, #0x84] + mov r0, r5 + bl FUN_022063A8 + ldr r0, [r5, #0x480] + add r4, r4, #1 + cmp r4, r0 + blt _02205A84 +_02205AA4: + mov r0, #0 + str r0, [r5, #0x480] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02205AB4 +FUN_02205AB4: ; 0x02205AB4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x30c + mov r5, r0 + ldr r0, [r5] + mov r7, r1 + mov r6, r2 + mov r4, r3 + cmp r0, #1 + beq _02205AEC + ldr r0, _02205D18 ; =0x0220F858 + ldr r1, _02205D1C ; =0x0220F830 + ldr r3, _02205D20 ; =0x0000020A + mov r2, #0 + bl __msl_assertion_failed +_02205AEC: + cmp r7, #0 + ldreq r7, _02205D24 ; =0x0220F878 + cmp r6, #0 + ldreq r6, _02205D24 ; =0x0220F878 + mov r0, r7 + bl strlen + cmp r0, #0x100 + addhi sp, sp, #0x30c + movhi r0, #6 + ldmhiia sp!, {r4, r5, r6, r7, pc} + mov r0, r6 + bl strlen + cmp r0, #0x100 + addhi sp, sp, #0x30c + movhi r0, #6 + ldmhiia sp!, {r4, r5, r6, r7, pc} + mov r0, r5 + bl FUN_02205FF0 + cmp r0, #0 + addne sp, sp, #0x30c + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, r5 + str r4, [r5, #0x5c4] + bl FUN_02205DCC + add r3, sp, #0xe + mov ip, #2 + add r0, sp, #8 + add r2, sp, #4 + mov r1, #0 + str ip, [sp, #4] + str r3, [sp, #8] + bl FUN_02205F74 + add r0, sp, #8 + add r2, sp, #4 + mov r1, #1 + bl FUN_02205F74 + add r0, sp, #8 + mov r1, #3 + add r2, sp, #4 + bl FUN_02205F74 + ldr r1, [r5, #0x4b8] + add r0, sp, #8 + add r2, sp, #4 + bl FUN_02205F18 + add r0, sp, #8 + add r1, r5, #0xc + add r2, sp, #4 + bl FUN_02205F98 + add r0, sp, #8 + add r1, r5, #0x30 + add r2, sp, #4 + bl FUN_02205F98 + add r0, sp, #8 + add r1, r5, #0x74 + mov r2, #8 + add r3, sp, #4 + bl FUN_02205EE4 + mov r1, r6 + add r0, sp, #8 + add r2, sp, #4 + bl FUN_02205F98 + mov r1, r7 + add r0, sp, #8 + add r2, sp, #4 + bl FUN_02205F98 + mov r1, r4, lsl #0x18 + and ip, r1, #0xff000000 + mov r1, r4, lsl #8 + and r3, r1, #0xff0000 + mov r1, r4, lsr #0x18 + and r2, r1, #0xff + mov r1, r4, lsr #8 + and r1, r1, #0xff00 + orr r1, r2, r1 + orr r1, r3, r1 + add r0, sp, #8 + orr r1, ip, r1 + add r2, sp, #4 + bl FUN_02205F18 + ldr r0, [r5, #0x5c4] + ands r0, r0, #8 + beq _02205C44 + ldr r1, [r5, #0x4a4] + add r0, sp, #8 + add r2, sp, #4 + bl FUN_02205F18 +_02205C44: + ldr r0, [r5, #0x5c4] + ands r0, r0, #0x80 + beq _02205C60 + ldr r1, [sp, #0x320] + add r0, sp, #8 + add r2, sp, #4 + bl FUN_02205F18 +_02205C60: + ldr r0, [sp, #4] + add r1, sp, #0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, r0, asr #8 + mov r0, r0, lsl #8 + and r2, r2, #0xff + and r0, r0, #0xff00 + orr r0, r2, r0 + strh r0, [sp] + ldrb r2, [r1] + ldrb r0, [r1, #1] + add r1, sp, #0xc + mov r3, #0 + strb r2, [r1] + strb r0, [r1, #1] + ldr r0, [r5, #0x4b0] + ldr r2, [sp, #4] + bl FUN_021EFC24 + cmp r0, #0 + bgt _02205CC8 + mov r0, r5 + bl FUN_02205994 + add sp, sp, #0x30c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_02205CC8: + mov r0, #3 + str r0, [r5] + mov r0, #0 + str r0, [r5, #0x5c8] + ldr r0, [r5, #0x7c] + cmp r0, #0 + bne _02205D0C + mov r0, #0x1000 + bl FUN_021DD860 + str r0, [r5, #0x7c] + ldr r0, [r5, #0x7c] + cmp r0, #0 + addeq sp, sp, #0x30c + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #0 + str r0, [r5, #0x80] +_02205D0C: + mov r0, #0 + add sp, sp, #0x30c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02205D18: .word 0x0220F858 +_02205D1C: .word 0x0220F830 +_02205D20: .word 0x0000020A +_02205D24: .word 0x0220F878 + + arm_func_start FUN_02205D28 +FUN_02205D28: ; 0x02205D28 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r6, #1 + mov r5, #0 + mov r4, #2 +_02205D48: + ldr r0, [sl, #0x4b0] + mov r1, sb + mov r2, r8 + mov r3, r5 + sub r6, r6, #1 + bl FUN_021EFC24 + mov r7, r0 + cmp r7, #0 + bgt _02205DB8 + cmp r6, #0 + blt _02205DB8 + mov r0, sl + bl FUN_02205994 + mov r0, sl + mov r1, r5 + mov r2, r5 + mov r3, r4 + str r5, [sp] + bl FUN_02205AB4 + movs fp, r0 + beq _02205DB0 + mov r0, sl + bl FUN_02206184 + add sp, sp, #4 + mov r0, fp + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02205DB0: + cmp r6, #0 + bge _02205D48 +_02205DB8: + cmp r7, #0 + movle r0, #3 + movgt r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02205DCC +FUN_02205DCC: ; 0x02205DCC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + bl rand + ldr r1, _02205EDC ; =0x2C0B02C1 + mov r8, #0 + smull r3, r4, r1, r0 + mov r2, r0, lsr #0x1f + mov r4, r4, asr #4 + ldr r1, _02205EE0 ; =0x0000005D + add r4, r2, r4 + smull r2, r3, r1, r4 + sub r4, r0, r2 + add r0, r4, #0x21 + mov sb, #1 + strb r0, [sl, #0x74] + mov r5, r8 + mov r6, sb + mov fp, r8 + mov r4, sb +_02205E1C: + sub r0, sb, #1 + add r0, sl, r0 + ldrsb r2, [r0, #0x74] + ldrsb r3, [sl, #0x74] + add r7, sl, sb + cmp r2, r3 + eor r2, sb, r2 + movlt r0, r6 + and r2, r2, #1 + movge r0, r5 + cmp r3, #0x4f + movlt r1, r4 + and r3, r3, #1 + eor r2, r8, r2 + movge r1, fp + eor r2, r3, r2 + eor r1, r2, r1 + eor r8, r1, r0 + bl rand + ldr r2, _02205EDC ; =0x2C0B02C1 + cmp r8, #0 + smull r3, r1, r2, r0 + mov r1, r1, asr #4 + mov r2, r0, lsr #0x1f + add r1, r2, r1 + ldr r2, _02205EE0 ; =0x0000005D + smull r1, r3, r2, r1 + sub r1, r0, r1 + add r0, r1, #0x21 + strb r0, [r7, #0x74] + beq _02205EA4 + ldrsb r0, [r7, #0x74] + ands r0, r0, #1 + beq _02205EBC +_02205EA4: + cmp r8, #0 + bne _02205EC8 + ldrsb r0, [r7, #0x74] + and r0, r0, #1 + cmp r0, #1 + bne _02205EC8 +_02205EBC: + ldrsb r0, [r7, #0x74] + add r0, r0, #1 + strb r0, [r7, #0x74] +_02205EC8: + add sb, sb, #1 + cmp sb, #8 + blt _02205E1C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02205EDC: .word 0x2C0B02C1 +_02205EE0: .word 0x0000005D + + arm_func_start FUN_02205EE4 +FUN_02205EE4: ; 0x02205EE4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6] + mov r4, r3 + mov r5, r2 + bl memcpy + ldr r0, [r4] + add r0, r0, r5 + str r0, [r4] + ldr r0, [r6] + add r0, r0, r5 + str r0, [r6] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02205F18 +FUN_02205F18: ; 0x02205F18 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add ip, sp, #0xc + ldrb r3, [ip] + ldrb r1, [ip, #1] + ldr lr, [r0] + strb r3, [lr] + strb r1, [lr, #1] + ldrb r3, [ip, #2] + ldrb r1, [ip, #3] + strb r3, [lr, #2] + strb r1, [lr, #3] + ldr r1, [r2] + add r1, r1, #4 + str r1, [r2] + ldr r1, [r0] + add r1, r1, #4 + str r1, [r0] + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_02205F74 +FUN_02205F74: ; 0x02205F74 + ldr r3, [r0] + strb r1, [r3] + ldr r1, [r2] + add r1, r1, #1 + str r1, [r2] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + arm_func_start FUN_02205F98 +FUN_02205F98: ; 0x02205F98 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r1 + ldreq r7, _02205FEC ; =0x0220F878 + mov r4, r0 + mov r0, r7 + mov r6, r2 + bl strlen + add r5, r0, #1 + ldr r0, [r4] + mov r1, r7 + mov r2, r5 + bl memcpy + ldr r0, [r6] + add r0, r0, r5 + str r0, [r6] + ldr r0, [r4] + add r0, r0, r5 + str r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02205FEC: .word 0x0220F878 + + arm_func_start FUN_02205FF0 +FUN_02205FF0: ; 0x02205FF0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x88 + mov r4, r0 + add r0, r4, #0xc + mov r1, #0x14 + bl FUN_02206124 + ldr r1, _02206118 ; =0x0221173C + mov r3, r0 + ldr r1, [r1] + cmp r1, #0 + beq _02206028 + add r0, sp, #8 + bl strcpy + b _02206038 +_02206028: + ldr r1, _0220611C ; =0x0220F87C + add r0, sp, #8 + add r2, r4, #0xc + bl sprintf +_02206038: + ldr r1, _02206120 ; =0x0000EE70 + mov r2, #2 + add r0, sp, #8 + strb r2, [sp, #1] + strh r1, [sp, #2] + bl FUN_021EFB38 + mvn r1, #0 + str r0, [sp, #4] + cmp r0, r1 + bne _022060A4 + add r0, sp, #8 + bl FUN_0209A6EC + cmp r0, #0 + addeq sp, sp, #0x88 + moveq r0, #2 + ldmeqia sp!, {r4, pc} + ldr r0, [r0, #0xc] + add r3, sp, #4 + ldr r2, [r0] + ldrb r1, [r2] + ldrb r0, [r2, #1] + strb r1, [r3] + strb r0, [r3, #1] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + strb r1, [r3, #2] + strb r0, [r3, #3] +_022060A4: + ldr r0, [r4, #0x4b0] + mvn r1, #0 + cmp r0, r1 + bne _022060E0 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl FUN_021EFDB8 + str r0, [r4, #0x4b0] + ldr r0, [r4, #0x4b0] + mvn r1, #0 + cmp r0, r1 + addeq sp, sp, #0x88 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_022060E0: + add r1, sp, #0 + mov r2, #8 + bl FUN_021EFCE4 + cmp r0, #0 + addeq sp, sp, #0x88 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x4b0] + bl FUN_021EFD9C + mvn r0, #0 + str r0, [r4, #0x4b0] + mov r0, #3 + add sp, sp, #0x88 + ldmia sp!, {r4, pc} + .align 2, 0 +_02206118: .word 0x0221173C +_0220611C: .word 0x0220F87C +_02206120: .word 0x0000EE70 + + arm_func_start FUN_02206124 +FUN_02206124: ; 0x02206124 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrsb lr, [r0] + mov ip, #0 + cmp lr, #0 + beq _02206168 + ldr r3, _0220617C ; =0x0210420C + ldr r2, _02206180 ; =0x9CCF9319 +_02206144: + cmp lr, #0 + blt _02206158 + cmp lr, #0x80 + bge _02206158 + ldrb lr, [r3, lr] +_02206158: + mla ip, r2, ip, lr + ldrsb lr, [r0, #1]! + cmp lr, #0 + bne _02206144 +_02206168: + mov r0, ip + bl _u32_div_f + mov r0, r1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_0220617C: .word 0x0210420C +_02206180: .word 0x9CCF9319 + + arm_func_start FUN_02206184 +FUN_02206184: ; 0x02206184 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r5, [r4, #0x80] + cmp r5, #0 + ble _02206214 + ldr r0, _02206240 ; =0x0220F804 + ldr r6, [r0] + mov r0, r6 + bl strlen + cmp r5, r0 + bls _02206214 + ldr r0, _02206240 ; =0x0220F804 + ldr r7, [r4, #0x7c] + ldr r5, [r0] + mov r0, r5 + bl strlen + mov r2, r0 + mov r0, r7 + mov r1, r5 + bl strncmp + cmp r0, #0 + bne _02206214 + mov r0, r6 + bl strlen + mov r1, r0 + mov r0, r4 + add r1, r7, r1 + bl FUN_02205240 + ldr r0, _02206244 ; =0x02211738 + ldr r3, [r4, #0x494] + ldr r2, [r0] + ldr ip, [r4, #0x488] + mov r0, r4 + mov r1, #5 + blx ip +_02206214: + ldr r0, _02206244 ; =0x02211738 + ldr r3, [r4, #0x494] + ldr r2, [r0] + ldr ip, [r4, #0x488] + mov r0, r4 + mov r1, #4 + blx ip + mov r0, r4 + bl FUN_02205994 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02206240: .word 0x0220F804 +_02206244: .word 0x02211738 + + arm_func_start FUN_02206248 +FUN_02206248: ; 0x02206248 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bne _02206278 + ldr r0, _02206360 ; =0x0220F898 + ldr r1, _02206364 ; =0x0220F830 + mov r2, #0 + mov r3, #0x11c + bl __msl_assertion_failed +_02206278: + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _02206298 + ldr r0, _02206368 ; =0x02210E5C + ldr r0, [r0] + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} +_02206298: + mov r1, #1 + mov r0, r7 + str r1, [r7] + bl FUN_02206494 + mov r0, r7 + bl FUN_02203B34 + mov r1, r6 + add r0, r7, #0xc + bl strcpy + mov r1, r5 + add r0, r7, #0x30 + bl strcpy + mov r1, r4 + add r0, r7, #0x54 + bl strcpy + ldr r0, [sp, #0x20] + mov r2, #0 + str r0, [r7, #0x488] + cmp r0, #0 + str r2, [r7, #0x48c] + bne _022062FC + ldr r0, _0220636C ; =0x0220F8A8 + ldr r1, _02206364 ; =0x0220F830 + ldr r3, _02206370 ; =0x00000132 + bl __msl_assertion_failed +_022062FC: + ldr r0, [sp, #0x24] + ldr r1, _02206374 ; =0x0220F878 + str r0, [r7, #0x494] + str r1, [r7, #0x498] + mov r3, #0 + str r3, [r7, #0x4a0] + mvn r0, #0 + str r0, [r7, #0x4b0] + str r3, [r7, #0x7c] + str r3, [r7, #0x80] + str r3, [r7, #8] + str r0, [r7, #0x484] + str r3, [r7, #0x480] + ldr r2, [sp, #0x18] + str r3, [r7, #0x4a4] + mov r0, r7 + str r2, [r7, #0x4b8] + bl FUN_02205240 + mov r0, #0 + str r0, [r7, #0x5cc] + bl FUN_021F025C + bl srand + bl FUN_021F024C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02206360: .word 0x0220F898 +_02206364: .word 0x0220F830 +_02206368: .word 0x02210E5C +_0220636C: .word 0x0220F8A8 +_02206370: .word 0x00000132 +_02206374: .word 0x0220F878 + + arm_func_start FUN_02206378 +FUN_02206378: ; 0x02206378 + cmp r1, #0 + mov r3, #0 + ble _022063A0 +_02206384: + ldrsb r2, [r0, r3] + cmp r2, #0 + addeq r0, r3, #1 + bxeq lr + add r3, r3, #1 + cmp r3, r1 + blt _02206384 +_022063A0: + mvn r0, #0 + bx lr + + arm_func_start FUN_022063A8 +FUN_022063A8: ; 0x022063A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + str r1, [sp] + bl FUN_02203B34 + add r1, sp, #0 + bl FUN_021EF358 + movs r4, r0 + bne _022063E0 + ldr r0, _02206420 ; =0x0220F8BC + ldr r1, _02206424 ; =0x0220F830 + mov r2, #0 + mov r3, #0xf4 + bl __msl_assertion_failed +_022063E0: + cmp r4, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, pc} + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #4] + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, pc} + mov r0, r5 + bl FUN_02203B34 + add r1, sp, #0 + bl FUN_021EF3F4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02206420: .word 0x0220F8BC +_02206424: .word 0x0220F830 + + arm_func_start FUN_02206428 +FUN_02206428: ; 0x02206428 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + str r4, [sp] + bl FUN_02203B34 + add r1, sp, #0 + bl FUN_021EF358 + cmp r0, #0 + ldrne r1, [r0, #4] + addne sp, sp, #0xc + addne r1, r1, #1 + strne r1, [r0, #4] + ldrne r0, [r0] + ldmneia sp!, {r4, r5, pc} + mov r0, r4 + bl FUN_021F0208 + str r0, [sp] + mov r1, #1 + mov r0, r5 + str r1, [sp, #4] + bl FUN_02203B34 + add r1, sp, #0 + bl FUN_021EF494 + ldr r0, [sp] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02206494 +FUN_02206494: ; 0x02206494 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #4 + mov r1, #0x64 + mov r2, #0 + bl FUN_021EF0E4 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x5d0] + ldmia sp!, {r4, pc} + + arm_func_start FUN_022064BC +FUN_022064BC: ; 0x022064BC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #4] + bl FUN_021EF06C + mov r4, r0 + cmp r4, #0 + mov r5, #0 + ble _02206500 +_022064DC: + ldr r0, [r6, #4] + mov r1, r5 + bl FUN_021EEFFC + ldr r1, [r0] + mov r0, r6 + bl FUN_022065E8 + add r5, r5, #1 + cmp r5, r4 + blt _022064DC +_02206500: + ldr r0, [r6, #4] + bl FUN_021EEB28 + mov r0, r6 + bl FUN_02206514 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02206514 +FUN_02206514: ; 0x02206514 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + ldr r0, [r6, #0x5d0] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, r5, r6, pc} + str r0, [sp] + cmp r0, #0 + beq _02206560 + add r4, sp, #0 +_02206540: + ldr r0, [sp] + bl FUN_02203888 + mov r5, r0 + mov r0, r4 + bl FUN_02203AC0 + str r5, [sp] + cmp r5, #0 + bne _02206540 +_02206560: + mov r0, #0 + str r0, [r6, #0x5d0] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02206570 +FUN_02206570: ; 0x02206570 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, [r0, #4] + bl FUN_021EEFFC + ldr r0, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + ldr ip, _02206598 ; =FUN_021EF06C + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_02206598: .word FUN_021EF06C + + arm_func_start FUN_0220659C +FUN_0220659C: ; 0x0220659C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #4] + mov r5, r1 + bl FUN_021EEFFC + ldr r4, [r0] + ldr r3, [r6, #0x494] + ldr ip, [r6, #0x488] + mov r0, r6 + mov r2, r4 + mov r1, #2 + blx ip + ldr r0, [r6, #4] + mov r1, r5 + bl FUN_021EED84 + mov r0, r6 + mov r1, r4 + bl FUN_022065E8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_022065E8 +FUN_022065E8: ; 0x022065E8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + ldr r1, [r5, #0x5d0] + cmp r1, #0 + bne _02206614 + mov r0, r4 + mov r1, #0 + bl FUN_02203890 + b _0220661C +_02206614: + mov r0, r4 + bl FUN_02203890 +_0220661C: + str r4, [r5, #0x5d0] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start FUN_02206628 +FUN_02206628: ; 0x02206628 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + ldr r0, [sb, #4] + mov r8, r1 + mov r7, r2 + bl FUN_021EF06C + mov r6, r0 + cmp r6, #0 + mov r4, #0 + ble _02206698 +_02206654: + ldr r0, [sb, #4] + mov r1, r4 + bl FUN_021EEFFC + ldr r5, [r0] + mov r0, r5 + bl FUN_02203908 + cmp r8, r0 + bne _0220668C + mov r0, r5 + bl FUN_022038DC + cmp r7, r0 + addeq sp, sp, #4 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0220668C: + add r4, r4, #1 + cmp r4, r6 + blt _02206654 +_02206698: + mvn r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_022066A4 +FUN_022066A4: ; 0x022066A4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + ldr r0, [r7, #4] + mov r6, r1 + bl FUN_021EF06C + mov r5, r0 + cmp r5, #0 + mov r4, #0 + ble _022066F8 +_022066CC: + ldr r0, [r7, #4] + mov r1, r4 + bl FUN_021EEFFC + ldr r0, [r0] + cmp r6, r0 + addeq sp, sp, #4 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + add r4, r4, #1 + cmp r4, r5 + blt _022066CC +_022066F8: + mvn r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start FUN_02206704 +FUN_02206704: ; 0x02206704 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #4] + add r1, sp, #0xc + bl FUN_021EEFA8 + ldr r2, [sp, #0xc] + ldr r3, [r4, #0x494] + ldr ip, [r4, #0x488] + mov r0, r4 + mov r1, #0 + blx ip + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_02206740 +FUN_02206740: ; 0x02206740 + cmp r3, #3 + addls pc, pc, r3, lsl #2 + b _0220677C +_0220674C: ; jump table + b _0220675C ; case 0 + b _02206764 ; case 1 + b _0220676C ; case 2 + b _02206774 ; case 3 +_0220675C: + ldr r3, _022067A0 ; =FUN_02206978 + b _02206780 +_02206764: + ldr r3, _022067A4 ; =FUN_02206898 + b _02206780 +_0220676C: + ldr r3, _022067A8 ; =FUN_02206828 + b _02206780 +_02206774: + ldr r3, _022067AC ; =FUN_022067B8 + b _02206780 +_0220677C: + ldr r3, _022067AC ; =FUN_022067B8 +_02206780: + str r2, [r0, #0x498] + str r1, [r0, #0x49c] + ldr r2, _022067B0 ; =0x02211740 + ldr ip, _022067B4 ; =FUN_021EED08 + str r0, [r2] + mov r1, r3 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_022067A0: .word FUN_02206978 +_022067A4: .word FUN_02206898 +_022067A8: .word FUN_02206828 +_022067AC: .word FUN_022067B8 +_022067B0: .word 0x02211740 +_022067B4: .word FUN_021EED08 + + arm_func_start FUN_022067B8 +FUN_022067B8: ; 0x022067B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _02206820 ; =0x02211740 + mov r5, r1 + ldr r1, [r2] + ldr r0, [r0] + ldr r1, [r1, #0x498] + ldr r2, _02206824 ; =0x0220F878 + bl FUN_022039E0 + ldr r1, _02206820 ; =0x02211740 + mov r4, r0 + ldr r1, [r1] + ldr r0, [r5] + ldr r1, [r1, #0x498] + ldr r2, _02206824 ; =0x0220F878 + bl FUN_022039E0 + mov r1, r0 + mov r0, r4 + bl strnicmp + ldr r1, _02206820 ; =0x02211740 + ldr r1, [r1] + ldr r1, [r1, #0x49c] + cmp r1, #0 + rsbeq r0, r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02206820: .word 0x02211740 +_02206824: .word 0x0220F878 + + arm_func_start FUN_02206828 +FUN_02206828: ; 0x02206828 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _02206890 ; =0x02211740 + mov r5, r1 + ldr r1, [r2] + ldr r0, [r0] + ldr r1, [r1, #0x498] + ldr r2, _02206894 ; =0x0220F878 + bl FUN_022039E0 + ldr r1, _02206890 ; =0x02211740 + mov r4, r0 + ldr r1, [r1] + ldr r0, [r5] + ldr r1, [r1, #0x498] + ldr r2, _02206894 ; =0x0220F878 + bl FUN_022039E0 + mov r1, r0 + mov r0, r4 + bl strcmp + ldr r1, _02206890 ; =0x02211740 + ldr r1, [r1] + ldr r1, [r1, #0x49c] + cmp r1, #0 + rsbeq r0, r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02206890: .word 0x02211740 +_02206894: .word 0x0220F878 + + arm_func_start FUN_02206898 +FUN_02206898: ; 0x02206898 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02206974 ; =0x02211740 + mov r2, #0 + ldr r3, [r3] + ldr r5, [r1] + ldr r0, [r0] + ldr r1, [r3, #0x498] + mov r3, r2 + bl FUN_02203910 + ldr r3, _02206974 ; =0x02211740 + mov r2, #0 + mov r4, r0 + ldr r0, [r3] + mov r6, r1 + ldr r1, [r0, #0x498] + mov r0, r5 + mov r3, r2 + bl FUN_02203910 + mov r2, r0 + mov r3, r1 + mov r0, r4 + mov r1, r6 + bl _dsub + ldr r2, _02206974 ; =0x02211740 + mov r4, r0 + ldr r0, [r2] + mov r5, r1 + ldr r0, [r0, #0x49c] + cmp r0, #0 + bne _0220692C + mov r0, #0 + mov r1, r0 + mov r2, r4 + mov r3, r5 + bl _dsub + mov r4, r0 + mov r5, r1 +_0220692C: + mov r0, r4 + mov r1, r5 + bl _d2f + mov r1, #0 + bl _fgr + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r4 + mov r1, r5 + bl _d2f + mov r1, #0 + bl _fls + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + rsb r0, r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02206974: .word 0x02211740 + + arm_func_start FUN_02206978 +FUN_02206978: ; 0x02206978 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _022069D8 ; =0x02211740 + ldr r0, [r0] + ldr r2, [r2] + ldr r5, [r1] + ldr r1, [r2, #0x498] + mov r2, #0 + bl FUN_0220394C + ldr r1, _022069D8 ; =0x02211740 + mov r4, r0 + ldr r1, [r1] + mov r0, r5 + ldr r1, [r1, #0x498] + mov r2, #0 + bl FUN_0220394C + ldr r1, _022069D8 ; =0x02211740 + sub r0, r4, r0 + ldr r1, [r1] + ldr r1, [r1, #0x49c] + cmp r1, #0 + rsbeq r0, r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022069D8: .word 0x02211740 + + arm_func_start FUN_022069DC +FUN_022069DC: ; 0x022069DC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_02208364 + bl FUN_02206B14 + mov r1, r6 + mov r0, #0 + bl FUN_02206A4C + cmp r0, #0 + beq _02206A3C + mov r1, r5 + mov r0, #1 + bl FUN_02206A4C + cmp r0, #0 + beq _02206A3C + mov r1, r4 + mov r0, #2 + bl FUN_02206A4C + cmp r0, #0 + beq _02206A3C + bl FUN_02208350 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02206A3C: + bl FUN_02206B14 + bl FUN_02208350 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02206A4C +FUN_02206A4C: ; 0x02206A4C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + ldrsb r1, [r6] + mov r4, r0 + cmp r1, #0 + beq _02206B00 + mov r0, r6 + bl FUN_022083D4 + cmp r0, #0xa + ldrgt r0, _02206B08 ; =0x02211760 + movgt r1, #7 + strgt r1, [r0] + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl FUN_022083D4 + mov r5, r0 + cmp r5, #0xa + ldrgt r0, _02206B08 ; =0x02211760 + movgt r1, #7 + strgt r1, [r0] + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} + bl FUN_02206DA4 + ldr r1, _02206B0C ; =0x02211750 + add r0, r0, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + ldr r1, _02206B10 ; =0x02211778 + str r0, [r1, r4, lsl #2] + ldr r0, [r1, r4, lsl #2] + cmp r0, #0 + ldreq r0, _02206B08 ; =0x02211760 + moveq r1, #1 + streq r1, [r0] + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r1, r6 + mov r2, r5 + bl FUN_02206C98 + ldr r1, _02206B10 ; =0x02211778 + mov r2, #0 + ldr r1, [r1, r4, lsl #2] + strb r2, [r1, r0] +_02206B00: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02206B08: .word 0x02211760 +_02206B0C: .word 0x02211750 +_02206B10: .word 0x02211778 + + arm_func_start FUN_02206B14 +FUN_02206B14: ; 0x02206B14 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, #0 + ldr r4, _02206B58 ; =0x02211764 + ldr r6, _02206B5C ; =0x02211778 + mov r5, r7 +_02206B2C: + ldr r0, [r6, r7, lsl #2] + cmp r0, #0 + beq _02206B44 + ldr r1, [r4] + blx r1 + str r5, [r6, r7, lsl #2] +_02206B44: + add r7, r7, #1 + cmp r7, #3 + blt _02206B2C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02206B58: .word 0x02211764 +_02206B5C: .word 0x02211778 + + arm_func_start FUN_02206B60 +FUN_02206B60: ; 0x02206B60 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov r8, r2 + add r0, sp, #4 + mov r2, #4 + mov r5, #0 + mov sb, r1 + bl FUN_02206E28 + mov r7, r5 + mov r6, r0 + mov r4, r7 + str r7, [sp] + mov fp, #4 + b _02206C74 +_02206B9C: + ldrb r0, [sp, #4] + strb r4, [sp, #8] + strb r4, [sp, #9] + strb r4, [sp, #0xa] + bl FUN_02206DD0 + movs r7, r0 + bmi _02206C20 + ldrb r0, [sp, #5] + mov r1, r7, lsl #2 + strb r1, [sp, #8] + bl FUN_02206DD0 + movs r7, r0 + bmi _02206C20 + ldrsb r2, [sp, #8] + ldrb r0, [sp, #6] + mov r1, r7, lsl #4 + strb r1, [sp, #9] + orr r1, r2, r7, asr #4 + strb r1, [sp, #8] + bl FUN_02206DD0 + movs r7, r0 + bmi _02206C20 + ldrsb r2, [sp, #9] + ldrb r0, [sp, #7] + mov r1, r7, lsl #6 + strb r1, [sp, #0xa] + orr r1, r2, r7, asr #2 + strb r1, [sp, #9] + bl FUN_02206DD0 + movs r7, r0 + ldrplsb r0, [sp, #0xa] + orrpl r0, r0, r7 + strplb r0, [sp, #0xa] +_02206C20: + sub r1, r6, #1 + ldr r3, [sp] + cmp r1, #0 + ble _02206C48 + add r2, sp, #8 +_02206C34: + ldrsb r0, [r2], #1 + add r3, r3, #1 + cmp r3, r1 + strb r0, [sl], #1 + blt _02206C34 +_02206C48: + sub r0, r6, #1 + sub r8, r8, #4 + cmp r8, #0 + add sb, sb, r6 + add r5, r5, r0 + ble _02206C84 + add r0, sp, #4 + mov r1, sb + mov r2, fp + bl FUN_02206E28 + mov r6, r0 +_02206C74: + cmp r6, #0 + ble _02206C84 + cmp r7, #0 + bge _02206B9C +_02206C84: + mov r1, #0 + mov r0, r5 + strb r1, [sl] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02206C98 +FUN_02206C98: ; 0x02206C98 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r8, r2 + mov sb, r1 + mov sl, r0 + cmp r8, #3 + movgt r2, #3 + add r0, sp, #0 + mov r1, sb + mov r7, #0 + bl FUN_02206E28 + cmp r0, #0 + ble _02206D8C + ldr r5, _02206DA0 ; =0x0220BCE8 + mov r6, #0 + mov r4, #0x2a + mov fp, #3 +_02206CDC: + ldrb r3, [sp] + cmp r8, #3 + strltb r6, [sp, #2] + mov r1, r3, asr #2 + cmp r8, #2 + strltb r6, [sp, #1] + and r1, r1, #0xff + ldrb ip, [sp, #1] + mov r3, r3, lsl #4 + ldrb r2, [sp, #2] + ldrsb r1, [r5, r1] + orr r3, r3, ip, asr #4 + cmp r0, #1 + strb r1, [sl] + and r1, r3, #0x3f + and r1, r1, #0xff + mov r3, ip, lsl #2 + orr r3, r3, r2, asr #6 + ldrsb r1, [r5, r1] + and r2, r2, #0x3f + and r3, r3, #0x3f + strb r1, [sl, #1] + and r1, r3, #0xff + ldrgtsb r1, [r5, r1] + and r2, r2, #0xff + add sb, sb, r0 + movle r1, r4 + strb r1, [sl, #2] + cmp r0, #2 + ldrgtsb r2, [r5, r2] + add r7, r7, #4 + movle r2, r4 + strb r2, [sl, #3] + add sl, sl, #4 + subs r8, r8, r0 + beq _02206D8C + cmp r8, #3 + movgt r2, fp + movle r2, r8 + add r0, sp, #0 + mov r1, sb + bl FUN_02206E28 + cmp r0, #0 + bgt _02206CDC +_02206D8C: + mov r1, #0 + mov r0, r7 + strb r1, [sl] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02206DA0: .word 0x0220BCE8 + + arm_func_start FUN_02206DA4 +FUN_02206DA4: ; 0x02206DA4 + ldr r1, _02206DBC ; =0x55555556 + add r2, r0, #2 + smull r0, r3, r1, r2 + add r3, r3, r2, lsr #31 + mov r0, r3, lsl #2 + bx lr + .align 2, 0 +_02206DBC: .word 0x55555556 + + arm_func_start FUN_02206DC0 +FUN_02206DC0: ; 0x02206DC0 + mov r1, r0, asr #2 + mov r0, #3 + mul r0, r1, r0 + bx lr + + arm_func_start FUN_02206DD0 +FUN_02206DD0: ; 0x02206DD0 + cmp r0, #0x41 + blo _02206DE4 + cmp r0, #0x5a + subls r0, r0, #0x41 + bxls lr +_02206DE4: + cmp r0, #0x61 + blo _02206DF8 + cmp r0, #0x7a + subls r0, r0, #0x47 + bxls lr +_02206DF8: + cmp r0, #0x30 + blo _02206E0C + cmp r0, #0x39 + addls r0, r0, #4 + bxls lr +_02206E0C: + cmp r0, #0x2e + moveq r0, #0x3e + bxeq lr + cmp r0, #0x2d + moveq r0, #0x3f + mvnne r0, #0 + bx lr + + arm_func_start FUN_02206E28 +FUN_02206E28: ; 0x02206E28 + stmdb sp!, {r4, lr} + mov lr, #0 + mov r4, lr + cmp r2, #0 + ble _02206E64 + mov r3, lr +_02206E40: + ldrsb ip, [r1] + add r4, r4, #1 + cmp ip, #0 + strneb ip, [r0], #1 + addne lr, lr, #1 + addne r1, r1, #1 + streqb r3, [r0], #1 + cmp r4, r2 + blt _02206E40 +_02206E64: + mov r0, lr + ldmia sp!, {r4, pc} + + arm_func_start FUN_02206E6C +FUN_02206E6C: ; 0x02206E6C + ldr r1, _02206E8C ; =0x02211744 + ldr r2, _02206E90 ; =0x02211758 + str r0, [r1] + mov r1, #0 + ldr ip, _02206E94 ; =FUN_02208570 + ldr r0, _02206E98 ; =FUN_02206E9C + str r1, [r2] + bx ip + .align 2, 0 +_02206E8C: .word 0x02211744 +_02206E90: .word 0x02211758 +_02206E94: .word FUN_02208570 +_02206E98: .word FUN_02206E9C + + arm_func_start FUN_02206E9C +FUN_02206E9C: ; 0x02206E9C + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_02206B14 + bl FUN_02208378 + bl FUN_0220831C + ldr r0, _02206EEC ; =0x0221174C + ldr r1, _02206EF0 ; =0x02211764 + ldr r0, [r0] + ldr r1, [r1] + blx r1 + ldr r0, _02206EF4 ; =0x02211754 + ldr r1, _02206EF0 ; =0x02211764 + ldr r0, [r0] + ldr r1, [r1] + blx r1 + ldr r0, _02206EF8 ; =0x02211744 + ldr r0, [r0] + blx r0 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02206EEC: .word 0x0221174C +_02206EF0: .word 0x02211764 +_02206EF4: .word 0x02211754 +_02206EF8: .word 0x02211744 + + arm_func_start FUN_02206EFC +FUN_02206EFC: ; 0x02206EFC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r7, r0 + ldr sb, _022070D0 ; =0x02211750 + ldr ip, [sp, #0x30] + ldr r0, _022070D4 ; =0x0221175C + mov r6, r1 + str ip, [r0] + ldr r5, _022070D8 ; =0x02211764 + str r7, [sb] + str r6, [r5] + ldr r4, _022070DC ; =0x02211760 + mov r1, #0 + ldr r8, _022070E0 ; =0x02211778 + ldr lr, _022070E4 ; =0x02211748 + ldr sl, _022070E8 ; =0x0221174C + ldr fp, _022070EC ; =0x02211754 + str r1, [r4] + ldr ip, _022070F0 ; =0x02211768 + mvn sb, #0 + ldr r0, _022070F4 ; =0x02211784 + mov r5, r2 + mov r4, r3 + str r1, [r8] + str r1, [r8, #4] + str r1, [r8, #8] + str r1, [lr] + str sb, [ip] + str r1, [sl] + str r1, [fp] + bl FUN_02208228 + ldr r0, _022070F8 ; =0x022117CC + bl FUN_02207194 + mov r0, r5 + bl FUN_0220710C + mov r1, fp + cmp r0, #0 + str r0, [r1] + beq _02207080 + mov r0, r4 + bl FUN_0220710C + mov r1, sl + cmp r0, #0 + str r0, [r1] + beq _02207080 + ldr r1, [sp, #0x28] + ldr r0, _022070FC ; =0x0221176C + mov r2, #4 + bl FUN_02206C98 + ldr r1, _022070FC ; =0x0221176C + mov r2, #0 + strb r2, [r1, r0] + ldr r1, [sp, #0x2c] + ldr r0, _02207100 ; =0x022117B0 + mov r2, #0x10 + bl FUN_02206C98 + ldr r1, _02207100 ; =0x022117B0 + mov r2, #0 + strb r2, [r1, r0] + bl FUN_02208320 + cmp r0, #0 + beq _02207040 + bl FUN_0220837C + cmp r0, #0 + beq _02207040 + mov r0, r7 + mov r1, r6 + mov r2, #0xa + bl FUN_022085B8 + cmp r0, #0 + beq _0220703C + ldr r0, _02207104 ; =0x02211798 + bl FUN_0220724C + ldr r2, _022070E4 ; =0x02211748 + ldr r1, _02207108 ; =0x02211758 + str r0, [r2] + mov r0, #1 + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0220703C: + bl FUN_02208378 +_02207040: + ldr r0, _022070E8 ; =0x0221174C + ldr r1, _022070D8 ; =0x02211764 + ldr r0, [r0] + ldr r1, [r1] + blx r1 + ldr r0, _022070EC ; =0x02211754 + ldr r1, _022070D8 ; =0x02211764 + ldr r0, [r0] + ldr r1, [r1] + blx r1 + ldr r0, _022070DC ; =0x02211760 + mov r1, #8 + str r1, [r0] + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02207080: + ldr r0, _022070E8 ; =0x0221174C + ldr r0, [r0] + cmp r0, #0 + beq _0220709C + ldr r1, _022070D8 ; =0x02211764 + ldr r1, [r1] + blx r1 +_0220709C: + ldr r0, _022070EC ; =0x02211754 + ldr r0, [r0] + cmp r0, #0 + beq _022070B8 + ldr r1, _022070D8 ; =0x02211764 + ldr r1, [r1] + blx r1 +_022070B8: + ldr r0, _022070DC ; =0x02211760 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022070D0: .word 0x02211750 +_022070D4: .word 0x0221175C +_022070D8: .word 0x02211764 +_022070DC: .word 0x02211760 +_022070E0: .word 0x02211778 +_022070E4: .word 0x02211748 +_022070E8: .word 0x0221174C +_022070EC: .word 0x02211754 +_022070F0: .word 0x02211768 +_022070F4: .word 0x02211784 +_022070F8: .word 0x022117CC +_022070FC: .word 0x0221176C +_02207100: .word 0x022117B0 +_02207104: .word 0x02211798 +_02207108: .word 0x02211758 + + arm_func_start FUN_0220710C +FUN_0220710C: ; 0x0220710C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + bl FUN_022083D4 + ldr r1, _02207154 ; =0x02211750 + mov r4, r0 + ldr r2, [r1] + add r0, r4, #1 + mov r1, #4 + blx r2 + movs r5, r0 + beq _0220714C + mov r1, r6 + mov r2, r4 + bl FUN_0220839C + mov r0, #0 + strb r0, [r5, r4] +_0220714C: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02207154: .word 0x02211750 + + arm_func_start FUN_02207158 +FUN_02207158: ; 0x02207158 + stmdb sp!, {r4, lr} + bl FUN_022082D4 + cmp r0, #0 + bne _02207184 + bl FUN_02208364 + ldr r0, _02207190 ; =0x02211768 + ldr r4, [r0] + bl FUN_02208350 + mov r0, r4 + bl FUN_02209218 + ldmia sp!, {r4, pc} +_02207184: + bl FUN_022082A0 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02207190: .word 0x02211768 + + arm_func_start FUN_02207194 +FUN_02207194: ; 0x02207194 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022071BC ; =0x0220F9B0 + mov ip, #2 + mov r1, #0x21 + mov r3, #1 + str ip, [sp] + bl OS_SNPrintf + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_022071BC: .word 0x0220F9B0 + + arm_func_start FUN_022071C0 +FUN_022071C0: ; 0x022071C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x24 + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, #0x14 + bl FUN_022083B4 + add r0, sp, #0 + bl FUN_02095EC8 + ldr r1, [sp] + ldr r2, [sp, #4] + mov r0, #0 + cmp r2, r0 + cmpeq r1, r0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4, r5, pc} + add r0, sp, #0x14 + mov r3, #0xd + bl FUN_0220844C + cmp r0, #0 + addlt sp, sp, #0x24 + movlt r0, #0 + ldmltia sp!, {r4, r5, pc} + add r1, sp, #0x14 + mov r0, r4 + mov r2, #0xd + bl FUN_02206C98 + ldr r1, _02207248 ; =0x027FFE0C + mov r0, r5 + mov r2, #4 + bl FUN_02206C98 + mov r0, #1 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02207248: .word 0x027FFE0C + + arm_func_start FUN_0220724C +FUN_0220724C: ; 0x0220724C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr ip, _02207324 ; =0x0220BD2C + add r3, sp, #0 + mov r4, r0 + mov r2, #6 +_02207264: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02207264 + ldrb r1, [ip] + ldr r0, _02207328 ; =0x022117F0 + strb r1, [r3] + bl FUN_021DD9DC + cmp r0, #0 + beq _02207318 + ldr r0, _02207328 ; =0x022117F0 + ldr r1, [r0] + cmp r1, #0x63 + bgt _022072B8 + cmp r1, #0xa + blt _022072B8 + add r0, sp, #0 + bl FUN_02208558 + b _022072CC +_022072B8: + cmp r1, #0 + addgt r0, r1, #0x30 + movgt r1, #0x30 + strgtb r1, [sp] + strgtb r0, [sp, #1] +_022072CC: + ldr r0, _02207328 ; =0x022117F0 + ldr r1, [r0, #4] + cmp r1, #0 + blt _022072FC + cmp r1, #0xa + bge _022072FC + add r3, r1, #0x30 + ldr r1, _0220732C ; =0x022117F8 + add r0, sp, #4 + mov r2, #9 + strb r3, [sp, #3] + bl FUN_0220839C +_022072FC: + add r1, sp, #0 + mov r0, r4 + mov r2, #0xd + bl FUN_02206C98 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, pc} +_02207318: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02207324: .word 0x0220BD2C +_02207328: .word 0x022117F0 +_0220732C: .word 0x022117F8 + + arm_func_start FUN_02207330 +FUN_02207330: ; 0x02207330 + ldr ip, _02207338 ; =FUN_0220B55C + bx ip + .align 2, 0 +_02207338: .word FUN_0220B55C + + arm_func_start FUN_0220733C +FUN_0220733C: ; 0x0220733C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r3, [r8, #0xac] + mov r7, r1 + cmp r2, r3 + ldrlo r0, _022074D8 ; =0x02211760 + movlo r1, #7 + strlo r1, [r0] + addlo sp, sp, #0x10 + movlo r0, #0 + ldmloia sp!, {r4, r5, r6, r7, r8, pc} + bl FUN_022083D4 + mov r5, r0 + cmp r5, #0x20 + ldrgt r0, _022074D8 ; =0x02211760 + movgt r1, #7 + strgt r1, [r0] + addgt sp, sp, #0x10 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + cmp r5, #0 + movle r6, #0 + ble _022073A4 + bl FUN_02206DA4 + mov r6, r0 +_022073A4: + ldr r1, _022074DC ; =0x02211750 + add r0, r6, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r4, r0 + ldreq r0, _022074D8 ; =0x02211760 + moveq r1, #1 + streq r1, [r0] + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr ip, [r8, #0xac] + ldr r2, _022074E0 ; =0x0220BD54 + add r0, sp, #4 + add r1, sp, #8 + mov r3, r7 + str ip, [sp] + bl FUN_0220788C + cmp r0, #0 + bne _02207414 + ldr r1, _022074E4 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02207414: + cmp r6, #0 + ble _0220744C + mov r0, r4 + mov r1, r8 + mov r2, r5 + bl FUN_02206C98 + mov r1, #0 + strb r1, [r4, r0] + ldr r0, [sp, #8] + ldr r1, _022074E8 ; =0x0220F9CC + mov r2, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _022074A4 +_0220744C: + ldr r0, [sp, #4] + mov r1, #3 + str r1, [r0, #4] + ldr r0, [sp, #4] + str r4, [r0, #0x10] + ldr r1, [r8, #0xac] + ldr r0, [sp, #4] + str r1, [r0, #0x14] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl FUN_0220781C + cmp r0, #0 + addne sp, sp, #0x10 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, _022074E4 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022074A4: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl FUN_02207BB4 + ldr r1, _022074E4 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r0, _022074D8 ; =0x02211760 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022074D8: .word 0x02211760 +_022074DC: .word 0x02211750 +_022074E0: .word 0x0220BD54 +_022074E4: .word 0x02211764 +_022074E8: .word 0x0220F9CC + + arm_func_start FUN_022074EC +FUN_022074EC: ; 0x022074EC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x18 + mov r7, r2 + mov r4, r1 + ldr r1, _02207790 ; =0x02211750 + mov r6, r7, lsl #8 + cmp r6, #0x80 + ldr r2, [r1] + movlt r6, #0x80 + mov r8, r0 + mov r0, r6 + mov r1, #4 + blx r2 + movs r5, r0 + ldreq r0, _02207794 ; =0x02211760 + moveq r1, #1 + streq r1, [r0] + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r0, sp, #0xc + mov r1, r4 + bl FUN_02208558 + mov sb, r0 + bl FUN_02206DA4 + ldr r1, _02207790 ; =0x02211750 + add r0, r0, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r4, r0 + bne _02207594 + ldr r1, _02207798 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + ldr r0, _02207794 ; =0x02211760 + mov r1, #1 + str r1, [r0] + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02207594: + add r1, sp, #0xc + mov r2, sb + bl FUN_02206C98 + mov r1, #0 + strb r1, [r4, r0] + add r0, sp, #0xc + mov r1, r7 + bl FUN_02208558 + mov sb, r0 + bl FUN_02206DA4 + ldr r1, _02207790 ; =0x02211750 + add r0, r0, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs sl, r0 + bne _02207610 + ldr r1, _02207798 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + ldr r0, _02207794 ; =0x02211760 + mov r1, #1 + str r1, [r0] + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02207610: + add r1, sp, #0xc + mov r2, sb + bl FUN_02206C98 + mov r1, #0 + strb r1, [sl, r0] + ldr r2, _0220779C ; =0x0220BD3C + add r0, sp, #4 + add r1, sp, #8 + mov r3, r5 + str r6, [sp] + bl FUN_0220788C + cmp r0, #0 + bne _02207680 + ldr r1, _02207798 ; =0x02211764 + mov r0, sl + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02207680: + ldr r0, [sp, #8] + ldr r1, _022077A0 ; =0x0220F9D8 + mov r2, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _0220773C + ldr r0, [sp, #8] + ldr r1, _022077A4 ; =0x0220F9E0 + mov r2, sl + bl FUN_022086F0 + cmp r0, #0 + beq _0220773C + ldr r0, [sp, #4] + mov r1, #2 + str r1, [r0, #4] + ldr r0, [sp, #4] + str r8, [r0, #0x10] + ldr r0, [sp, #4] + str r4, [r0, #0x1c] + ldr r0, [sp, #4] + str sl, [r0, #0x20] + ldr r0, [sp, #4] + str r7, [r0, #0x14] + ldr r0, [sp, #4] + str r5, [r0, #0x18] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl FUN_0220781C + cmp r0, #0 + addne sp, sp, #0x18 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _02207798 ; =0x02211764 + mov r0, sl + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0220773C: + ldr r1, _02207798 ; =0x02211764 + mov r0, sl + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldr r1, _02207798 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl FUN_02207BB4 + ldr r0, _02207794 ; =0x02211760 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02207790: .word 0x02211750 +_02207794: .word 0x02211760 +_02207798: .word 0x02211764 +_0220779C: .word 0x0220BD3C +_022077A0: .word 0x0220F9D8 +_022077A4: .word 0x0220F9E0 + + arm_func_start FUN_022077A8 +FUN_022077A8: ; 0x022077A8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r2, _02207814 ; =0x0220BD48 + mov r4, r0 + mov ip, #0x80 + ldr r3, _02207818 ; =0x02211850 + add r0, sp, #4 + add r1, sp, #8 + str ip, [sp] + bl FUN_0220788C + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0, #4] + ldr r0, [sp, #4] + str r4, [r0, #0x10] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl FUN_0220781C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02207814: .word 0x0220BD48 +_02207818: .word 0x02211850 + + arm_func_start FUN_0220781C +FUN_0220781C: ; 0x0220781C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + bl FUN_02208364 + mov r0, r4 + bl FUN_022092A0 + str r0, [r5] + ldr r1, [r5] + ldr r0, _02207884 ; =0x02211768 + str r1, [r0] + bl FUN_02208350 + ldr r0, [r5] + cmp r0, #0 + addge sp, sp, #4 + movge r0, #1 + ldmgeia sp!, {r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl FUN_02207BB4 + ldr r0, _02207888 ; =0x02211760 + mov r1, #3 + str r1, [r0] + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02207884: .word 0x02211768 +_02207888: .word 0x02211760 + + arm_func_start FUN_0220788C +FUN_0220788C: ; 0x0220788C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r0 + mov r7, r1 + ldr r0, _02207B40 ; =0x0221182C + ldr r1, _02207B44 ; =0x02211838 + mov r6, r2 + mov r4, r3 + bl FUN_022071C0 + cmp r0, #0 + ldreq r0, _02207B48 ; =0x02211760 + moveq r1, #8 + streq r1, [r0] + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r1, _02207B4C ; =0x02211750 + mov r0, #0x24 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r5, r0 + ldreq r0, _02207B48 ; =0x02211760 + moveq r1, #1 + streq r1, [r0] + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _02207B50 ; =0x0221175C + mov r1, #0 + ldr r0, [r0] + str r0, [r5, #8] + str r1, [r5, #0xc] + bl FUN_022082D4 + cmp r0, #0 + bne _02207944 + ldr r1, _02207B54 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + ldr r0, _02207B48 ; =0x02211760 + mov r1, #2 + str r1, [r0] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02207944: + ldr r1, _02207B58 ; =FUN_02207BE0 + ldr r0, _02207B5C ; =0x02211754 + str r1, [sp] + str r5, [sp, #4] + ldr r0, [r0] + ldr r3, [sp, #0x20] + mov r2, r4 + mov r1, #1 + bl FUN_02209438 + movs r4, r0 + bne _0220799C + bl FUN_022082A0 + ldr r1, _02207B54 ; =0x02211764 + mov r0, r5 + ldr r1, [r1] + blx r1 + ldr r0, _02207B48 ; =0x02211760 + mov r1, #3 + str r1, [r0] + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0220799C: + ldr r1, _02207B60 ; =0x0220F9C8 + str r5, [r8] + mov r2, #1 + str r4, [r7] + bl FUN_022086D4 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B64 ; =0x0220F9E4 + ldr r2, _02207B68 ; =0x022117CC + mov r0, r4 + bl FUN_02208764 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B6C ; =0x0220F9F0 + ldr r2, _02207B70 ; =0x0221176C + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B74 ; =0x0220F9F8 + ldr r2, _02207B40 ; =0x0221182C + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B78 ; =0x0220FA04 + ldr r2, _02207B7C ; =0x022117B0 + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r0, _02207B80 ; =0x0221174C + ldr r1, _02207B84 ; =0x0220FA0C + ldr r2, [r0] + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B88 ; =0x0220FA14 + ldr r2, _02207B44 ; =0x02211838 + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B8C ; =0x0220FA1C + ldr r2, _02207B90 ; =0x02211784 + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r1, _02207B94 ; =0x0220FA24 + mov r0, r4 + mov r2, r6 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C + ldr r0, _02207B98 ; =0x02211778 + ldr r2, [r0] + cmp r2, #0 + beq _02207AA0 + ldr r1, _02207B9C ; =0x0220FA2C + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C +_02207AA0: + ldr r0, _02207B98 ; =0x02211778 + ldr r2, [r0, #4] + cmp r2, #0 + beq _02207AC4 + ldr r1, _02207BA0 ; =0x0220FA34 + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C +_02207AC4: + ldr r0, _02207B98 ; =0x02211778 + ldr r2, [r0, #8] + cmp r2, #0 + beq _02207AE8 + ldr r1, _02207BA4 ; =0x0220FA3C + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C +_02207AE8: + ldr r0, _02207BA8 ; =0x02211748 + ldr r0, [r0] + cmp r0, #0 + beq _02207B10 + ldr r1, _02207BAC ; =0x0220FA44 + ldr r2, _02207BB0 ; =0x02211798 + mov r0, r4 + bl FUN_022086F0 + cmp r0, #0 + beq _02207B1C +_02207B10: + add sp, sp, #8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02207B1C: + mov r0, r5 + mov r1, r4 + bl FUN_02207BB4 + ldr r0, _02207B48 ; =0x02211760 + mov r1, #1 + str r1, [r0] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02207B40: .word 0x0221182C +_02207B44: .word 0x02211838 +_02207B48: .word 0x02211760 +_02207B4C: .word 0x02211750 +_02207B50: .word 0x0221175C +_02207B54: .word 0x02211764 +_02207B58: .word FUN_02207BE0 +_02207B5C: .word 0x02211754 +_02207B60: .word 0x0220F9C8 +_02207B64: .word 0x0220F9E4 +_02207B68: .word 0x022117CC +_02207B6C: .word 0x0220F9F0 +_02207B70: .word 0x0221176C +_02207B74: .word 0x0220F9F8 +_02207B78: .word 0x0220FA04 +_02207B7C: .word 0x022117B0 +_02207B80: .word 0x0221174C +_02207B84: .word 0x0220FA0C +_02207B88: .word 0x0220FA14 +_02207B8C: .word 0x0220FA1C +_02207B90: .word 0x02211784 +_02207B94: .word 0x0220FA24 +_02207B98: .word 0x02211778 +_02207B9C: .word 0x0220FA2C +_02207BA0: .word 0x0220FA34 +_02207BA4: .word 0x0220FA3C +_02207BA8: .word 0x02211748 +_02207BAC: .word 0x0220FA44 +_02207BB0: .word 0x02211798 + + arm_func_start FUN_02207BB4 +FUN_02207BB4: ; 0x02207BB4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl FUN_02209410 + bl FUN_022082A0 + ldr r1, _02207BDC ; =0x02211764 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02207BDC: .word 0x02211764 + + arm_func_start FUN_02207BE0 +FUN_02207BE0: ; 0x02207BE0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov sl, r2 + str r1, [sp] + ldr r1, [sl, #8] + cmp r0, #0 + str r1, [sp, #4] + ldr r1, [sl, #0xc] + ldr fp, [sl, #4] + str r1, [sp, #8] + mvn r1, #0 + str r1, [sp, #0xc] + beq _02207C28 + cmp r0, #6 + beq _02207E10 + cmp r0, #8 + beq _02207E08 + b _02207E18 +_02207C28: + ldr r1, _02207F04 ; =0x0220FA4C + ldr r0, [sp] + add r2, sp, #0x10 + bl FUN_02209A98 + cmp r0, #3 + movne r4, #3 + bne _02207E1C + ldr r0, [sp, #0x10] + mov r1, #3 + bl FUN_02208564 + ldr r1, _02207F08 ; =0x0000012E + cmp r0, r1 + bne _02207D80 + ldr r0, [sp] + add r1, sp, #0x14 + mov sb, #0 + bl FUN_02209A68 + movs r8, r0 + movmi r4, #3 + bmi _02207E1C + cmp r8, #0 + mov r7, sb + ble _02207D6C + mov r4, r7 + mov r6, #8 + mov r5, #1 +_02207C90: + ldr r1, [sp, #0x14] + mov r3, r7 + add r2, r1, r7 + b _02207CA8 +_02207CA0: + add r2, r2, #1 + add r7, r7, #1 +_02207CA8: + ldrsb r0, [r2] + cmp r0, #0x3d + beq _02207CBC + cmp r7, r8 + blt _02207CA0 +_02207CBC: + sub r0, r7, r3 + cmp r0, #8 + add r7, r7, #1 + bne _02207CE8 + add r0, r1, r3 + ldr r1, _02207F0C ; =0x0220FA5C + mov r2, r6 + bl FUN_022083C8 + cmp r0, #0 + moveq sb, r5 + movne sb, r4 +_02207CE8: + ldr r3, [sp, #0x14] + mov r1, r7 + add r2, r3, r7 + b _02207D00 +_02207CF8: + add r2, r2, #1 + add r7, r7, #1 +_02207D00: + ldrsb r0, [r2] + cmp r0, #0x26 + beq _02207D24 + cmp r0, #0xd + beq _02207D24 + cmp r0, #0 + beq _02207D24 + cmp r7, r8 + blt _02207CF8 +_02207D24: + cmp sb, #0 + sub r2, r7, r1 + add r7, r7, #1 + beq _02207D64 + cmp r2, #4 + bne _02207D6C + add r0, sp, #0x18 + add r1, r3, r1 + bl FUN_02206B60 + mov r1, r0 + add r0, sp, #0x18 + mov r2, #0 + strb r2, [r0, r1] + bl FUN_02208564 + str r0, [sp, #0xc] + b _02207D6C +_02207D64: + cmp r7, r8 + blt _02207C90 +_02207D6C: + ldr r0, [sp, #0xc] + cmp r0, #0 + movlt r4, #3 + movge r4, #5 + b _02207E1C +_02207D80: + cmp r0, #0 + ble _02207D90 + cmp r0, #0xc8 + beq _02207D98 +_02207D90: + mov r4, #3 + b _02207E1C +_02207D98: + cmp fp, #1 + beq _02207DB4 + cmp fp, #2 + beq _02207DD0 + cmp fp, #3 + beq _02207DEC + b _02207E1C +_02207DB4: + ldr r0, [sp] + mov r1, sl + bl FUN_02207F1C + cmp r0, #0 + movne r4, #0 + moveq r4, #3 + b _02207E1C +_02207DD0: + ldr r0, [sp] + mov r1, sl + bl FUN_02207F9C + cmp r0, #0 + movne r4, #0 + moveq r4, #3 + b _02207E1C +_02207DEC: + ldr r0, [sp] + mov r1, sl + bl FUN_02207F70 + cmp r0, #0 + movne r4, #0 + moveq r4, #3 + b _02207E1C +_02207E08: + mov r4, #6 + b _02207E1C +_02207E10: + mov r4, #4 + b _02207E1C +_02207E18: + mov r4, #3 +_02207E1C: + cmp fp, #1 + beq _02207E8C + cmp fp, #2 + beq _02207E38 + cmp fp, #3 + beq _02207E7C + b _02207E8C +_02207E38: + ldr r0, [sl, #0x20] + cmp r0, #0 + beq _02207E50 + ldr r1, _02207F10 ; =0x02211764 + ldr r1, [r1] + blx r1 +_02207E50: + ldr r0, [sl, #0x1c] + cmp r0, #0 + beq _02207E68 + ldr r1, _02207F10 ; =0x02211764 + ldr r1, [r1] + blx r1 +_02207E68: + ldr r1, _02207F10 ; =0x02211764 + ldr r0, [sl, #0x18] + ldr r1, [r1] + blx r1 + b _02207E8C +_02207E7C: + ldr r1, _02207F10 ; =0x02211764 + ldr r0, [sl, #0x10] + ldr r1, [r1] + blx r1 +_02207E8C: + bl FUN_02208364 + ldr r0, _02207F14 ; =0x02211768 + mvn r1, #0 + str r1, [r0] + bl FUN_02208350 + ldr r0, [sp] + bl FUN_02209CC4 + ldr r1, _02207F10 ; =0x02211764 + mov r0, sl + ldr r1, [r1] + blx r1 + bl FUN_022082A0 + cmp r4, #0 + ldrne r0, _02207F18 ; =0x02211760 + strne r4, [r0] + ldr r0, [sp, #4] + cmp r0, #0 + beq _02207EE8 + ldr r2, [sp, #0xc] + ldr r3, [sp, #4] + mov r0, fp + mov r1, r4 + blx r3 +_02207EE8: + ldr r0, [sp, #8] + cmp r0, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl FUN_0220828C + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02207F04: .word 0x0220FA4C +_02207F08: .word 0x0000012E +_02207F0C: .word 0x0220FA5C +_02207F10: .word 0x02211764 +_02207F14: .word 0x02211768 +_02207F18: .word 0x02211760 + + arm_func_start FUN_02207F1C +FUN_02207F1C: ; 0x02207F1C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r1 + add r1, sp, #0 + bl FUN_02209A68 + movs r1, r0 + bmi _02207F64 + ldr r0, [sp] + bl FUN_02208564 + ldr r1, [r4, #0x10] + add sp, sp, #8 + str r0, [r1] + ldr r0, [r4, #0x10] + ldr r0, [r0] + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + ldmia sp!, {r4, pc} +_02207F64: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_02207F70 +FUN_02207F70: ; 0x02207F70 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r1 + add r1, sp, #0 + bl FUN_02209A68 + ldr r1, [r4, #0x14] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start FUN_02207F9C +FUN_02207F9C: ; 0x02207F9C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + ldr r2, [r1, #0x14] + str r1, [sp] + mov r1, #0xb0 + mul r1, r2, r1 + mov r4, r0 + ldr r0, [sp] + mov r2, #0 + ldr r0, [r0, #0x10] + str r2, [sp, #4] + bl FUN_022083B4 + ldr r1, _02208224 ; =0x0220FA68 + add r2, sp, #0x1c + mov r0, r4 + bl FUN_02209A98 + cmp r0, #0 + ble _02208008 + ldr r1, [sp, #0x1c] + ldrsb r0, [r1] + cmp r0, #0x30 + bne _02208008 + ldrsb r0, [r1, #1] + cmp r0, #0 + addeq sp, sp, #0x24 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02208008: + add r1, sp, #0x18 + mov r0, r4 + bl FUN_02209A68 + mov sb, r0 + cmp sb, #0 + ble _02208218 + ldr r0, [sp] + mov r8, #0 + ldr r0, [r0, #0x14] + str r8, [sp, #8] + cmp r0, #0 + ble _02208218 + str r8, [sp, #0xc] + mov fp, r8 + str r8, [sp, #0x14] + str r8, [sp, #0x10] + mov sl, #1 +_0220804C: + cmp r8, sb + movge r0, #1 + strge r0, [sp, #4] + bge _02208218 + ldr r0, [sp] + ldr r7, [sp, #0x10] + ldr r2, [r0, #0x10] + mov r0, r7 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r6, r8 + mov r1, r7 + add r5, r2, r0 + cmp r8, sb + bge _022081F0 +_02208088: + ldr r0, [sp, #0x18] + ldrsb r2, [r0, r8] + cmp r2, #0xd + moveq r1, sl + beq _022081E4 + cmp r1, #0 + beq _022080F0 + cmp r2, #0xa + bne _022081E0 + cmp r7, #5 + bne _022080D8 + sub r1, r8, #1 + sub r1, r1, r6 + cmp r1, #8 + bgt _02208218 + add r0, r0, r6 + bl FUN_02208564 + cmp r0, #0 + blt _02208218 + str r0, [r5, #0xac] +_022080D8: + cmp r7, #5 + ldrlt r0, [sp, #0x14] + strge sl, [sp, #4] + add r8, r8, #1 + strlt r0, [sp, #4] + b _022081F0 +_022080F0: + cmp r2, #9 + bne _022081E0 + cmp r7, #5 + addls pc, pc, r7, lsl #2 + b _022081D8 +_02208104: ; jump table + b _0220811C ; case 0 + b _02208138 ; case 1 + b _02208164 ; case 2 + b _02208180 ; case 3 + b _0220819C ; case 4 + b _022081B8 ; case 5 +_0220811C: + sub r2, r8, r6 + cmp r2, #0x20 + bhs _02208218 + add r1, r0, r6 + mov r0, r5 + bl FUN_0220839C + b _022081D8 +_02208138: + sub r4, r8, r6 + mov r0, r4 + bl FUN_02206DC0 + cmp r0, #0x64 + bhs _02208218 + mov r2, r4 + add r0, r5, #0x22 + ldr r1, [sp, #0x18] + add r1, r1, r6 + bl FUN_02206B60 + b _022081D8 +_02208164: + sub r2, r8, r6 + cmp r2, #0xa + bhs _02208218 + add r1, r0, r6 + add r0, r5, #0x88 + bl FUN_0220839C + b _022081D8 +_02208180: + sub r2, r8, r6 + cmp r2, #0xa + bhs _02208218 + add r1, r0, r6 + add r0, r5, #0x93 + bl FUN_0220839C + b _022081D8 +_0220819C: + sub r2, r8, r6 + cmp r2, #0xa + bhs _02208218 + add r1, r0, r6 + add r0, r5, #0x9e + bl FUN_0220839C + b _022081D8 +_022081B8: + sub r1, r8, r6 + cmp r1, #8 + bgt _02208218 + add r0, r0, r6 + bl FUN_02208564 + cmp r0, #0 + blt _02208218 + str r0, [r5, #0xac] +_022081D8: + add r7, r7, #1 + add r6, r8, #1 +_022081E0: + mov r1, fp +_022081E4: + add r8, r8, #1 + cmp r8, sb + blt _02208088 +_022081F0: + ldr r0, [sp] + ldr r1, [r0, #0x14] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r1 + ldr r0, [sp, #0xc] + add r0, r0, #0xb0 + str r0, [sp, #0xc] + blt _0220804C +_02208218: + ldr r0, [sp, #4] + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02208224: .word 0x0220FA68 + + arm_func_start FUN_02208228 +FUN_02208228: ; 0x02208228 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov sb, r0 + add r0, sp, #0 + bl OS_GetMacAddress + mov r8, #0 + add r7, sp, #0 + mov r6, r8 + add r5, sp, #6 + mov r4, #2 +_02208250: + ldrb r1, [r7] + mov r2, r4 + add r0, r5, r6 + bl FUN_022083E0 + add r8, r8, #1 + cmp r8, #6 + add r7, r7, #1 + add r6, r6, #2 + blt _02208250 + add r1, sp, #6 + mov r0, sb + mov r2, #0xc + bl FUN_02206C98 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + + arm_func_start FUN_0220828C +FUN_0220828C: ; 0x0220828C + ldr ip, _0220829C ; =0x020CBDC4 + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_0220829C: .word 0x020CBDC4 + + arm_func_start FUN_022082A0 +FUN_022082A0: ; 0x022082A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022082CC ; =0x022118D4 + bl OS_LockMutex + ldr r1, _022082D0 ; =0x022118D0 + mov r2, #0 + ldr r0, _022082CC ; =0x022118D4 + str r2, [r1] + bl OS_UnlockMutex + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_022082CC: .word 0x022118D4 +_022082D0: .word 0x022118D0 + + arm_func_start FUN_022082D4 +FUN_022082D4: ; 0x022082D4 + stmdb sp!, {r4, lr} + ldr r0, _02208314 ; =0x022118D4 + bl OS_LockMutex + ldr r0, _02208318 ; =0x022118D0 + ldr r0, [r0] + cmp r0, #0 + moveq r4, #1 + movne r4, #0 + cmp r4, #0 + ldrne r0, _02208318 ; =0x022118D0 + movne r1, #1 + strne r1, [r0] + ldr r0, _02208314 ; =0x022118D4 + bl OS_UnlockMutex + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02208314: .word 0x022118D4 +_02208318: .word 0x022118D0 + + arm_func_start FUN_0220831C +FUN_0220831C: ; 0x0220831C + bx lr + + arm_func_start FUN_02208320 +FUN_02208320: ; 0x02208320 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02208348 ; =0x022118D4 + bl OS_InitMutex + ldr r0, _0220834C ; =0x022118D0 + mov r1, #0 + str r1, [r0] + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02208348: .word 0x022118D4 +_0220834C: .word 0x022118D0 + + arm_func_start FUN_02208350 +FUN_02208350: ; 0x02208350 + ldr ip, _0220835C ; =0x020CBFA0 + ldr r0, _02208360 ; =0x022118EC + bx ip + .align 2, 0 +_0220835C: .word 0x020CBFA0 +_02208360: .word 0x022118EC + + arm_func_start FUN_02208364 +FUN_02208364: ; 0x02208364 + ldr ip, _02208370 ; =0x020CC010 + ldr r0, _02208374 ; =0x022118EC + bx ip + .align 2, 0 +_02208370: .word 0x020CC010 +_02208374: .word 0x022118EC + + arm_func_start FUN_02208378 +FUN_02208378: ; 0x02208378 + bx lr + + arm_func_start FUN_0220837C +FUN_0220837C: ; 0x0220837C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02208398 ; =0x022118EC + bl OS_InitMutex + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02208398: .word 0x022118EC + + arm_func_start FUN_0220839C +FUN_0220839C: ; 0x0220839C + ldr ip, _022083B0 ; =0x020CE3E0 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx ip + .align 2, 0 +_022083B0: .word 0x020CE3E0 + + arm_func_start FUN_022083B4 +FUN_022083B4: ; 0x022083B4 + ldr ip, _022083C4 ; =0x020CE34C + mov r2, r1 + mov r1, #0 + bx ip + .align 2, 0 +_022083C4: .word 0x020CE34C + + arm_func_start FUN_022083C8 +FUN_022083C8: ; 0x022083C8 + ldr ip, _022083D0 ; =0x020DE03C + bx ip + .align 2, 0 +_022083D0: .word 0x020DE03C + + arm_func_start FUN_022083D4 +FUN_022083D4: ; 0x022083D4 + ldr ip, _022083DC ; =0x020DE0BC + bx ip + .align 2, 0 +_022083DC: .word 0x020DE0BC + + arm_func_start FUN_022083E0 +FUN_022083E0: ; 0x022083E0 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r2, #8 + addgt sp, sp, #4 + mov ip, #0 + mvngt r0, #0 + ldmgtia sp!, {pc} + cmp r2, #1 + mov lr, #1 + blt _02208440 +_02208408: + sub r3, r2, lr + mov r3, r3, lsl #2 + mov r3, r1,lsr r3 + and r3, r3, #0xf + cmp r3, #0xa + addlo r3, r3, #0x30 + strlob r3, [r0, ip] + addlo ip, ip, #1 + addhs r3, r3, #0x57 + strhsb r3, [r0, ip] + add lr, lr, #1 + addhs ip, ip, #1 + cmp lr, r2 + ble _02208408 +_02208440: + mov r0, ip + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_0220844C +FUN_0220844C: ; 0x0220844C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r4, _02208554 ; =0x0220BD64 + mov r6, #0 + ldr r5, [r4] + mov r7, #0xa + umull r4, sl, r5, r7 + mla sl, r5, r6, sl + ldr r5, _02208554 ; =0x0220BD64 + mov sb, r1 + ldr r5, [r5, #4] + mov r8, r2 + mla sl, r5, r7, sl + cmp r8, sl + mov sl, r0 + cmpeq sb, r4 + str r3, [sp] + addhs sp, sp, #0xc + mvnhs r0, #0 + ldmhsia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r7, r6 + mov r0, r6 + mov fp, #0x30 + mov r1, #1 + str r1, [sp, #4] +_022084B0: + ldr r1, _02208554 ; =0x0220BD64 + add r1, r1, r7, lsl #3 + ldr r4, [r1, #4] + ldr r1, _02208554 ; =0x0220BD64 + cmp r8, r4 + ldr r5, [r1, r7, lsl #3] + cmpeq sb, r5 + blo _02208510 + mov r0, sb + mov r1, r8 + mov r2, r5 + mov r3, r4 + bl _ll_udiv + umull r2, r1, r0, r5 + mla r1, r0, r4, r1 + add r0, r0, #0x30 + strb r0, [sl, r6] + mov r0, #0 + mla r1, r0, r5, r1 + subs sb, sb, r2 + ldr r0, [sp, #4] + sbc r8, r8, r1 + add r6, r6, #1 + b _02208530 +_02208510: + cmp r0, #0 + bne _02208528 + ldr r1, [sp] + rsb r2, r7, #0x11 + cmp r2, r1 + bgt _02208530 +_02208528: + strb fp, [sl, r6] + add r6, r6, #1 +_02208530: + add r7, r7, #1 + cmp r7, #0x10 + blt _022084B0 + mov r0, #0x30 + adds r0, sb, r0 + strb r0, [sl, r6] + add r0, r6, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02208554: .word 0x0220BD64 + + arm_func_start FUN_02208558 +FUN_02208558: ; 0x02208558 + ldr ip, _02208560 ; =FUN_0220B788 + bx ip + .align 2, 0 +_02208560: .word FUN_0220B788 + + arm_func_start FUN_02208564 +FUN_02208564: ; 0x02208564 + ldr ip, _0220856C ; =FUN_0220B844 + bx ip + .align 2, 0 +_0220856C: .word FUN_0220B844 + + arm_func_start FUN_02208570 +FUN_02208570: ; 0x02208570 + stmdb sp!, {r4, lr} + mov r4, r0 + bl FUN_022091BC + bl FUN_02208C24 + ldr r0, _022085AC ; =0x0221191C + ldr r1, _022085B0 ; =0x02211904 + ldr r0, [r0] + ldr r1, [r1] + blx r1 + bl FUN_02208CF4 + ldr r0, _022085B4 ; =0x02211920 + mov r1, #0 + str r1, [r0] + blx r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022085AC: .word 0x0221191C +_022085B0: .word 0x02211904 +_022085B4: .word 0x02211920 + + arm_func_start FUN_022085B8 +FUN_022085B8: ; 0x022085B8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r3, _022086B0 ; =0x02211908 + mov r7, #0 + ldr r6, _022086B4 ; =0x02211924 + ldr r5, _022086B8 ; =0x02211904 + ldr lr, _022086BC ; =0x02211910 + ldr ip, _022086C0 ; =0x02211914 + str r7, [r3] + ldr r4, _022086C4 ; =0x0221190C + ldr r3, _022086C8 ; =0x02211918 + str r7, [r4] + mov r4, r2 + str r0, [r6] + str r1, [r5] + str r7, [lr] + str r7, [ip] + str r7, [r3] + bl FUN_02208CF8 + cmp r0, #0 + ldreq r0, _022086B0 ; =0x02211908 + moveq r1, #9 + streq r1, [r0] + addeq sp, sp, #4 + moveq r0, r7 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r1, r6 + ldr r2, [r1] + mov r0, #0x2000 + mov r1, #8 + blx r2 + movs r1, r0 + ldr r0, _022086CC ; =0x0221191C + str r1, [r0] + bne _02208660 + ldr r0, _022086B0 ; =0x02211908 + mov r1, #1 + str r1, [r0] + bl FUN_02208CF4 + add sp, sp, #4 + mov r0, r7 + ldmia sp!, {r4, r5, r6, r7, pc} +_02208660: + mov r0, r4 + bl FUN_02208C54 + cmp r0, #0 + ldrne r1, _022086D0 ; =0x02211920 + movne r0, #1 + strne r0, [r1] + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022086CC ; =0x0221191C + mov r1, r5 + ldr r2, [r1] + ldr r0, [r0] + ldr r1, _022086B0 ; =0x02211908 + mov r3, #9 + str r3, [r1] + blx r2 + bl FUN_02208CF4 + mov r0, r7 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022086B0: .word 0x02211908 +_022086B4: .word 0x02211924 +_022086B8: .word 0x02211904 +_022086BC: .word 0x02211910 +_022086C0: .word 0x02211914 +_022086C4: .word 0x0221190C +_022086C8: .word 0x02211918 +_022086CC: .word 0x0221191C +_022086D0: .word 0x02211920 + + arm_func_start FUN_022086D4 +FUN_022086D4: ; 0x022086D4 + ldr r3, [r0] + cmp r3, #0 + movne r0, #0 + streq r1, [r0, #0x1c] + streq r2, [r0, #0x18] + moveq r0, #1 + bx lr + + arm_func_start FUN_022086F0 +FUN_022086F0: ; 0x022086F0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + ldr r0, [r8] + mov r7, r1 + mov r6, r2 + mov r5, #0 + cmp r0, #0 + movne r0, r5 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + bl FUN_02209FBC + mov r4, r0 + mov r0, r8 + mov r1, r6 + mov r2, r4 + bl FUN_02208794 + cmp r0, #0 + beq _0220875C + mov r1, r7 + mov r2, r6 + add r0, r8, #0x38 + mov r3, #0x18 + bl FUN_022088CC + movs r5, r0 + ldrne r0, [r8, #0x38] + ldrne r0, [r0] + strne r4, [r0, #0x10] +_0220875C: + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_02208764 +FUN_02208764: ; 0x02208764 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, [r0] + cmp r3, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + add r0, r0, #0x34 + mov r3, #0x18 + bl FUN_022088CC + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_02208794 +FUN_02208794: ; 0x02208794 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + str r0, [sp] + mov sb, r2 + mov sl, r1 + ldr r2, [sp] + mov r0, sl + mov r1, sb + add r2, r2, #0x46 + mov r3, #0x12 + bl FUN_0220B604 + cmp r0, #0 + addlt sp, sp, #4 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r7, _02208850 ; =0x0220BDF7 + mov fp, #0x13 + ldr r0, [sp] + add r5, r0, #0x46 + mov r4, #0x12 +_022087E4: + ldr r0, [sp] + add r6, r0, fp + ldrsb r8, [r6, #0x44] +_022087F0: + and r0, r8, #0xff + bl FUN_02208854 + mov r8, r0 + strb r8, [r6, #0x44] + ldrsb r0, [r7] + cmp r8, r0 + beq _02208834 + mov r0, sl + mov r1, sb + mov r2, r5 + mov r3, r4 + bl FUN_0220B604 + cmp r0, #0 + bge _022087F0 + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02208834: + sub fp, fp, #1 + cmp fp, #2 + sub r7, r7, #1 + bge _022087E4 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02208850: .word 0x0220BDF7 + + arm_func_start FUN_02208854 +FUN_02208854: ; 0x02208854 + add r0, r0, #1 + and r0, r0, #0xff + cmp r0, #0x7b + moveq r0, #0x30 + beq _0220887C + cmp r0, #0x5b + moveq r0, #0x61 + beq _0220887C + cmp r0, #0x3a + moveq r0, #0x41 +_0220887C: + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bx lr + + arm_func_start FUN_02208888 +FUN_02208888: ; 0x02208888 + ldr r3, [r0] + cmp r3, #0 + beq _022088C4 + ldr r2, [r3] + cmp r3, r2 + moveq r1, #0 + streq r1, [r0] + beq _022088C4 + ldr r1, [r3, #4] + str r1, [r2, #4] + ldr r2, [r3] + ldr r1, [r3, #4] + str r2, [r1] + ldr r1, [r3, #4] + str r1, [r0] +_022088C4: + mov r0, r3 + bx lr + + arm_func_start FUN_022088CC +FUN_022088CC: ; 0x022088CC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r0 + ldr sl, [sb] + mov r8, r1 + mov r7, r2 + mov r6, r3 + cmp sl, #0 + mov r5, #0 + beq _02208948 + ldr r1, [sl, #8] + mov r0, r8 + mov r4, sl + bl FUN_0220B704 + cmp r0, #0 + beq _02208944 + ldr r4, [sl, #4] + ldr r0, [sb] + cmp r4, r0 + beq _02208948 +_02208918: + ldr r1, [r4, #8] + mov r0, r8 + bl FUN_0220B704 + cmp r0, #0 + moveq r5, #1 + beq _02208948 + ldr r4, [r4, #4] + ldr r0, [sb] + cmp r4, r0 + bne _02208918 + b _02208948 +_02208944: + mov r5, #1 +_02208948: + cmp r5, #0 + strne r7, [r4, #0xc] + bne _022089D0 + ldr r1, _022089D8 ; =0x02211924 + mov r0, r6 + ldr r2, [r1] + mov r1, #4 + blx r2 + cmp r0, #0 + ldreq r0, _022089DC ; =0x02211908 + moveq r1, #1 + streq r1, [r0] + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + str r8, [r0, #8] + str r7, [r0, #0xc] + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + ldr r1, [sb] + cmp r1, #0 + streq r0, [r0, #4] + streq r0, [r0] + streq r0, [sb] + beq _022089D0 + ldr r1, [r1] + str r1, [r0] + ldr r1, [sb] + str r1, [r0, #4] + ldr r1, [sb] + ldr r1, [r1] + str r0, [r1, #4] + ldr r1, [sb] + str r0, [r1] +_022089D0: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022089D8: .word 0x02211924 +_022089DC: .word 0x02211908 + + arm_func_start FUN_022089E0 +FUN_022089E0: ; 0x022089E0 + ldr ip, _022089EC ; =FUN_02208888 + ldr r0, _022089F0 ; =0x02211910 + bx ip + .align 2, 0 +_022089EC: .word FUN_02208888 +_022089F0: .word 0x02211910 + + arm_func_start FUN_022089F4 +FUN_022089F4: ; 0x022089F4 + stmdb sp!, {r4, lr} + ldr r4, _02208A20 ; =0x02211910 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} +_02208A08: + ldr r0, [r0, #8] + bl FUN_02208A24 + ldr r0, [r4] + cmp r0, #0 + bne _02208A08 + ldmia sp!, {r4, pc} + .align 2, 0 +_02208A20: .word 0x02211910 + + arm_func_start FUN_02208A24 +FUN_02208A24: ; 0x02208A24 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, #0 + bl FUN_02208AD0 + movs r4, r0 + beq _02208ABC + ldr r0, _02208AC8 ; =0x02211910 + ldr r2, [r0] + ldr r1, [r2] + cmp r2, r1 + beq _02208A7C + ldr r2, [r4, #4] + ldr r1, [r4] + str r2, [r1, #4] + ldr r2, [r4] + ldr r1, [r4, #4] + str r2, [r1] + ldr r1, [r0] + cmp r1, r4 + ldreq r1, [r4, #4] + streq r1, [r0] + b _02208A84 +_02208A7C: + mov r1, r5 + str r1, [r0] +_02208A84: + ldr r0, [r4, #0xc] + ldr r7, [r0, #0x3c] + ldr r6, [r0, #0x30] + ldr r5, [r0, #0x2c] + bl FUN_02209338 + ldr r1, _02208ACC ; =0x02211904 + mov r0, r4 + ldr r1, [r1] + blx r1 + mov r1, r6 + mov r2, r5 + mov r0, #8 + blx r7 + mov r5, #1 +_02208ABC: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02208AC8: .word 0x02211910 +_02208ACC: .word 0x02211904 + + arm_func_start FUN_02208AD0 +FUN_02208AD0: ; 0x02208AD0 + ldr r1, _02208B24 ; =0x02211910 + mov ip, #0 + ldr r3, [r1] + cmp r3, #0 + beq _02208B1C + ldr r1, [r3, #8] + cmp r1, r0 + moveq ip, r3 + beq _02208B1C + ldr r2, [r3, #4] + cmp r2, r3 + beq _02208B1C +_02208B00: + ldr r1, [r2, #8] + cmp r1, r0 + moveq ip, r2 + beq _02208B1C + ldr r2, [r2, #4] + cmp r2, r3 + bne _02208B00 +_02208B1C: + mov r0, ip + bx lr + .align 2, 0 +_02208B24: .word 0x02211910 + + arm_func_start FUN_02208B28 +FUN_02208B28: ; 0x02208B28 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02208BD8 ; =0x02211924 + mov r4, r0 + ldr r2, [r1] + mov r0, #0x14 + mov r1, #4 + mvn r5, #0 + blx r2 + cmp r0, #0 + beq _02208BCC + ldr r1, _02208BDC ; =0x02211910 + ldr r2, [r1] + cmp r2, #0 + streq r0, [r0] + streq r0, [r0, #4] + streq r0, [r1] + beq _02208B94 + ldr r2, [r2] + str r2, [r0] + ldr r2, [r1] + str r2, [r0, #4] + ldr r2, [r1] + ldr r2, [r2] + str r0, [r2, #4] + ldr r1, [r1] + str r0, [r1] +_02208B94: + ldr r1, _02208BE0 ; =0x0221190C + mvn r2, #0 + ldr ip, [r1] + ldr r3, [r1] + add r3, r3, #1 + str r3, [r1] + str ip, [r0, #8] + str r4, [r0, #0xc] + str r2, [r0, #0x10] + ldr r2, [r1] + ldr r5, [r0, #8] + cmp r2, #0 + movlt r0, #0 + strlt r0, [r1] +_02208BCC: + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02208BD8: .word 0x02211924 +_02208BDC: .word 0x02211910 +_02208BE0: .word 0x0221190C + + arm_func_start FUN_02208BE4 +FUN_02208BE4: ; 0x02208BE4 + ldr ip, _02208BF8 ; =0x020CBDC4 + mov r1, #0 + ldr r0, _02208BFC ; =0x02211944 + mov r2, r1 + bx ip + .align 2, 0 +_02208BF8: .word 0x020CBDC4 +_02208BFC: .word 0x02211944 + + arm_func_start FUN_02208C00 +FUN_02208C00: ; 0x02208C00 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02208C20 ; =0x02211944 + add r1, sp, #0 + mov r2, #1 + bl OS_ReceiveMessage + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02208C20: .word 0x02211944 + + arm_func_start FUN_02208C24 +FUN_02208C24: ; 0x02208C24 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02208C4C ; =0x02211918 + mov r1, #1 + str r1, [r0] + bl FUN_02208BE4 + ldr r0, _02208C50 ; =0x02211964 + bl OS_JoinThread + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02208C4C: .word 0x02211918 +_02208C50: .word 0x02211964 + + arm_func_start FUN_02208C54 +FUN_02208C54: ; 0x02208C54 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + bl OS_IsThreadAvailable + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _02208CBC ; =0x02211944 + ldr r1, _02208CC0 ; =0x02211928 + mov r2, #1 + bl OS_InitMessageQueue + mov r0, #0x2000 + str r0, [sp] + ldr r0, _02208CC4 ; =0x02211964 + ldr r1, _02208CC8 ; =FUN_0220A044 + add r3, r4, #0x2000 + mov r2, #0 + str r5, [sp, #4] + bl OS_CreateThread + ldr r0, _02208CC4 ; =0x02211964 + bl OS_WakeupThreadDirect + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02208CBC: .word 0x02211944 +_02208CC0: .word 0x02211928 +_02208CC4: .word 0x02211964 +_02208CC8: .word FUN_0220A044 + + arm_func_start FUN_02208CCC +FUN_02208CCC: ; 0x02208CCC + ldr ip, _02208CD8 ; =0x020CBFA0 + ldr r0, _02208CDC ; =0x0221192C + bx ip + .align 2, 0 +_02208CD8: .word 0x020CBFA0 +_02208CDC: .word 0x0221192C + + arm_func_start FUN_02208CE0 +FUN_02208CE0: ; 0x02208CE0 + ldr ip, _02208CEC ; =0x020CC010 + ldr r0, _02208CF0 ; =0x0221192C + bx ip + .align 2, 0 +_02208CEC: .word 0x020CC010 +_02208CF0: .word 0x0221192C + + arm_func_start FUN_02208CF4 +FUN_02208CF4: ; 0x02208CF4 + bx lr + + arm_func_start FUN_02208CF8 +FUN_02208CF8: ; 0x02208CF8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02208D14 ; =0x0221192C + bl OS_InitMutex + mov r0, #1 + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02208D14: .word 0x0221192C + + arm_func_start FUN_02208D18 +FUN_02208D18: ; 0x02208D18 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r0 + ldr r4, [r8, #0x30] + mov r6, r2 + mov r7, r1 + mov r0, r4 + mov r1, r6 + mov r5, r3 + bl FUN_02208DB8 + cmp r0, #0 + addne sp, sp, #8 + ldrne r0, _02208D84 ; =0xFFFFFC15 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x20] + sub r3, r0, r6 + str r1, [sp] + ldr r2, [r4, #0x18] + cmp r5, r3 + movle r3, r5 + mov r0, r8 + mov r1, r7 + add r2, r2, r6 + bl FUN_02209DB4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02208D84: .word 0xFFFFFC15 + + arm_func_start FUN_02208D88 +FUN_02208D88: ; 0x02208D88 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, [r0, #0x30] + mov lr, r2 + str r3, [sp] + ldr r2, [ip, #0x18] + ldr r3, [ip, #0xc] + add r2, r2, lr + sub r3, r3, lr + bl FUN_02209DB4 + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_02208DB8 +FUN_02208DB8: ; 0x02208DB8 + ldr r0, [r0, #0xc] + cmp r0, r1 + movls r0, #1 + movhi r0, #0 + bx lr + + arm_func_start FUN_02208DCC +FUN_02208DCC: ; 0x02208DCC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov r7, r2 + mov r6, r3 + ldr r0, [r4] + add r2, r7, r6 + mov r8, r1 + cmp r2, r0 + bgt _02208EB4 + cmp r6, #0 + beq _02208EA8 + cmp r7, #0x400 + bge _02208E30 + rsb r5, r7, #0x400 + cmp r6, r5 + movle r5, r6 + add r1, r4, #0x20 + mov r0, r8 + mov r2, r5 + add r1, r1, r7 + bl FUN_02209F90 + add r7, r7, r5 + sub r6, r6, r5 + add r8, r8, r5 +_02208E30: + cmp r6, #0 + beq _02208EA8 + sub r2, r7, #0x400 + ldr r0, _02208EC0 ; =0x000001FF + movs r1, r2, asr #9 + and r7, r2, r0 + sub r0, r1, #1 + ldr r5, [r4, #0x1c] + beq _02208E64 +_02208E54: + cmp r0, #0 + sub r0, r0, #1 + ldr r5, [r5] + bne _02208E54 +_02208E64: + cmp r6, #0 + beq _02208EA8 + ldr sb, _02208EC0 ; =0x000001FF +_02208E70: + rsb r4, r7, #0x200 + cmp r6, r4 + movle r4, r6 + add r1, r5, #4 + mov r0, r8 + mov r2, r4 + add r1, r1, r7 + bl FUN_02209F90 + add r0, r7, r4 + and r7, r0, sb + subs r6, r6, r4 + add r8, r8, r4 + ldr r5, [r5] + bne _02208E70 +_02208EA8: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02208EB4: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02208EC0: .word 0x000001FF + + arm_func_start FUN_02208EC4 +FUN_02208EC4: ; 0x02208EC4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + mov r4, r2 + mov sl, r0 + mov r8, r3 + cmp sb, r4 + ldr r7, [sp, #0x30] + bge _02208F98 + add r2, sp, #0 + add r3, sp, #4 + bl FUN_02209158 + add r1, sp, #0 + add r2, sp, #4 + mov r0, sl + bl FUN_022090E4 + sub r6, r4, #1 + mov r4, #1 + add fp, sp, #0 + mov r5, #0 + b _02208F5C +_02208F18: + cmp r1, #0 + beq _02208F38 + cmp r1, #0x20 + beq _02208F38 + cmp r1, r7 + beq _02208F38 + cmp sb, r6 + bne _02208F44 +_02208F38: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02208F44: + mov r0, sl + mov r1, fp + add r2, sp, #4 + bl FUN_022090E4 + add sb, sb, #1 + add r8, r8, #1 +_02208F5C: + ldrsb r1, [r8] + mov r2, r5 + cmp r1, #0x41 + blt _02208F74 + cmp r1, #0x5a + movle r2, r4 +_02208F74: + cmp r2, #0 + addne r2, r1, #0x20 + moveq r2, r1 + cmp r0, #0x41 + blt _02208F90 + cmp r0, #0x5a + addle r0, r0, #0x20 +_02208F90: + cmp r0, r2 + beq _02208F18 +_02208F98: + mvn r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_02208FA4 +FUN_02208FA4: ; 0x02208FA4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r1 + mov r6, r2 + mov r8, r0 + cmp r7, r6 + bge _02209008 + add r2, sp, #0 + add r3, sp, #4 + bl FUN_02209158 + cmp r7, r6 + bge _02209008 + add r5, sp, #0 + add r4, sp, #4 +_02208FDC: + mov r0, r8 + mov r1, r5 + mov r2, r4 + bl FUN_022090E4 + cmp r0, #0x20 + addne sp, sp, #8 + movne r0, r7 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r7, r7, #1 + cmp r7, r6 + blt _02208FDC +_02209008: + mvn r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_02209014 +FUN_02209014: ; 0x02209014 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + movs r7, r3 + mov sl, r0 + mvnne r0, #0 + mov sb, r1 + mov r8, r2 + strne r0, [r7] + mov r6, #0 + cmp sb, r8 + bge _022090D8 + add r2, sp, #0 + add r3, sp, #4 + mov r0, sl + mov r1, sb + bl FUN_02209158 + cmp sb, r8 + bge _022090D8 + add fp, sp, #0 + mov r4, #0 + mov r5, #1 +_02209068: + mov r0, sl + mov r1, fp + add r2, sp, #4 + bl FUN_022090E4 + cmp r0, #0x3a + bne _02209094 + cmp r7, #0 + beq _02209094 + ldr r1, [r7] + cmp r1, #0 + strlt sb, [r7] +_02209094: + cmp r6, #0 + bne _022090A8 + cmp r0, #0xd + moveq r6, r5 + b _022090CC +_022090A8: + cmp r0, #0xa + bne _022090C8 + sub r0, r8, #1 + cmp sb, r0 + moveq r0, #0 + add sp, sp, #0xc + addne r0, sb, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022090C8: + mov r6, r4 +_022090CC: + add sb, sb, #1 + cmp sb, r8 + blt _02209068 +_022090D8: + mvn r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start FUN_022090E4 +FUN_022090E4: ; 0x022090E4 + ldr r3, [r1] + cmp r3, #0 + bne _02209120 + ldr r3, [r2] + cmp r3, #0x400 + addlt r1, r3, #1 + strlt r1, [r2] + addlt r0, r0, r3 + ldrltsb r0, [r0, #0x20] + bxlt lr + mov r3, #0 + str r3, [r2] + ldr r0, [r0, #0x1c] + str r0, [r1] + b _0220913C +_02209120: + ldr r0, [r2] + cmp r0, #0x200 + moveq r0, #0 + streq r0, [r2] + ldreq r0, [r1] + ldreq r0, [r0] + streq r0, [r1] +_0220913C: + ldr r3, [r2] + add r0, r3, #1 + str r0, [r2] + ldr r0, [r1] + add r0, r0, r3 + ldrsb r0, [r0, #4] + bx lr + + arm_func_start FUN_02209158 +FUN_02209158: ; 0x02209158 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0x400 + movlt r0, #0 + strlt r0, [r2] + strlt r1, [r3] + addlt sp, sp, #4 + ldmltia sp!, {pc} + sub ip, r1, #0x400 + movs ip, ip, asr #9 + sub lr, ip, #1 + ldr ip, [r0, #0x1c] + beq _0220919C +_0220918C: + cmp lr, #0 + sub lr, lr, #1 + ldr ip, [ip] + bne _0220918C +_0220919C: + ldr r0, _022091B8 ; =0x000001FF + sub r1, r1, #0x400 + str ip, [r2] + and r0, r1, r0 + str r0, [r3] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_022091B8: .word 0x000001FF + + arm_func_start FUN_022091BC +FUN_022091BC: ; 0x022091BC + stmdb sp!, {lr} + sub sp, sp, #4 + bl FUN_02208CE0 + ldr r0, _02209214 ; =0x02211914 + ldr r2, [r0] + cmp r2, #0 + beq _02209204 + ldr r1, [r2, #0xc] + ldr r1, [r1, #4] + cmp r1, #0 + bne _02209204 + ldr r1, [r2, #0xc] + mov r2, #1 + str r2, [r1, #4] + ldr r1, [r0] + ldr r0, [r1, #0xc] + ldr r1, [r1, #0x10] + bl FUN_02209D40 +_02209204: + bl FUN_022089F4 + bl FUN_02208CCC + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02209214: .word 0x02211914 + + arm_func_start FUN_02209218 +FUN_02209218: ; 0x02209218 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + mov r5, #0 + bl FUN_02208CE0 + ldr r0, _0220929C ; =0x02211914 + ldr r2, [r0] + cmp r2, #0 + beq _02209278 + ldr r1, [r2, #8] + cmp r1, r4 + bne _02209278 + ldr r1, [r2, #0xc] + ldr r1, [r1, #4] + cmp r1, #0 + bne _02209278 + ldr r1, [r2, #0xc] + mov r2, #1 + str r2, [r1, #4] + ldr r1, [r0] + ldr r0, [r1, #0xc] + ldr r1, [r1, #0x10] + bl FUN_02209D40 + mov r5, #1 +_02209278: + cmp r5, #0 + bne _0220928C + mov r0, r4 + bl FUN_02208A24 + mov r5, r0 +_0220928C: + bl FUN_02208CCC + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0220929C: .word 0x02211914 + + arm_func_start FUN_022092A0 +FUN_022092A0: ; 0x022092A0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, [r5] + cmp r0, #0 + ldrne r0, _02209334 ; =0x02211908 + movne r1, #0xb + strne r1, [r0] + addne sp, sp, #4 + mvnne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r0, [r5, #0x40] + cmp r0, #1 + bne _022092F8 + ldr r0, [r5, #0x38] + cmp r0, #0 + ldreq r0, _02209334 ; =0x02211908 + moveq r1, #0xb + streq r1, [r0] + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, pc} +_022092F8: + bl FUN_02208CE0 + mov r0, r5 + bl FUN_02208B28 + movs r4, r0 + ldrmi r0, _02209334 ; =0x02211908 + movmi r1, #1 + strmi r1, [r0] + bmi _02209324 + mov r0, #1 + str r0, [r5] + bl FUN_02208BE4 +_02209324: + bl FUN_02208CCC + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02209334: .word 0x02211908 + + arm_func_start FUN_02209338 +FUN_02209338: ; 0x02209338 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x34] + bl FUN_022093B0 + ldr r0, [r4, #0x38] + bl FUN_022093B0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02209384 + ldr r0, [r0, #0x800] + cmp r0, #0 + beq _02209374 + ldr r1, _022093AC ; =0x02211904 + ldr r1, [r1] + blx r1 +_02209374: + ldr r1, _022093AC ; =0x02211904 + ldr r0, [r4, #0x20] + ldr r1, [r1] + blx r1 +_02209384: + ldr r1, _022093AC ; =0x02211904 + ldr r0, [r4, #0x24] + ldr r1, [r1] + blx r1 + ldr r1, _022093AC ; =0x02211904 + mov r0, r4 + ldr r1, [r1] + blx r1 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022093AC: .word 0x02211904 + + arm_func_start FUN_022093B0 +FUN_022093B0: ; 0x022093B0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + movs r7, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r4, _0220940C ; =0x02211904 + mov r5, #0 +_022093CC: + ldr r0, [r7] + cmp r7, r0 + beq _022093EC + ldr r6, [r0] + ldr r1, [r4] + blx r1 + str r6, [r7] + b _022093FC +_022093EC: + ldr r1, [r4] + mov r0, r7 + blx r1 + mov r7, r5 +_022093FC: + cmp r7, #0 + bne _022093CC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0220940C: .word 0x02211904 + + arm_func_start FUN_02209410 +FUN_02209410: ; 0x02209410 + stmdb sp!, {r4, lr} + ldr r1, _02209434 ; =0x02211904 + mov r4, r0 + ldr r0, [r4, #0x30] + ldr r1, [r1] + blx r1 + mov r0, r4 + bl FUN_02209338 + ldmia sp!, {r4, pc} + .align 2, 0 +_02209434: .word 0x02211904 + + arm_func_start FUN_02209438 +FUN_02209438: ; 0x02209438 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov fp, r0 + str r1, [sp] + mov r5, r2 + mov r4, r3 + movs r0, r1 + mov r7, #0 + beq _02209478 + cmp r0, #1 + beq _02209478 + cmp r0, #2 + ldrne r0, _022099A0 ; =0x02211908 + movne r1, #0xb + strne r1, [r0] + bne _02209918 +_02209478: + cmp r4, #0 + ldreq r0, _022099A0 ; =0x02211908 + moveq r1, #0xb + streq r1, [r0] + beq _02209918 + ldr r1, _022099A4 ; =0x02211924 + mov r0, #0x58 + ldr r2, [r1] + mov r1, #4 + blx r2 + movs r7, r0 + ldreq r0, _022099A0 ; =0x02211908 + moveq r1, #1 + streq r1, [r0] + beq _02209918 + mov r1, #0x58 + bl FUN_02209FA8 + ldr r1, _022099A4 ; =0x02211924 + mov r0, #0x420 + ldr r2, [r1] + mov r1, #4 + blx r2 + str r0, [r7, #0x30] + ldr r0, [r7, #0x30] + cmp r0, #0 + ldreq r0, _022099A0 ; =0x02211908 + moveq r1, #1 + streq r1, [r0] + beq _02209918 + mov r1, #0x420 + bl FUN_02209FA8 + ldr r1, [r7, #0x30] + mov r0, fp + str r5, [r1, #0x18] + ldr r1, [r7, #0x30] + str r4, [r1, #0xc] + bl FUN_02209FBC + mov r4, r0 + cmp r4, #7 + ldrle r0, _022099A0 ; =0x02211908 + movle r1, #4 + strle r1, [r0] + ble _02209918 + mov sl, #7 + mov r3, #0x50 + ldr r1, _022099A8 ; =0x0220FA78 + mov r0, fp + mov r2, sl + str r3, [r7, #0x28] + bl FUN_02209FC8 + cmp r0, #0 + beq _02209580 + ldr r1, _022099AC ; =0x0220FA80 + mov r0, fp + mov r2, #8 + bl FUN_02209FC8 + cmp r0, #0 + ldrne r0, _022099A0 ; =0x02211908 + movne r1, #4 + strne r1, [r0] + bne _02209918 + mov r1, #1 + ldr r0, _022099B0 ; =0x000001BB + str r1, [r7, #8] + str r0, [r7, #0x28] + mov sl, #8 +_02209580: + sub r0, r4, sl + cmp r0, #0 + str r0, [sp, #4] + ldrle r0, _022099A0 ; =0x02211908 + movle r1, #4 + add r8, fp, sl + strle r1, [r0] + ble _02209918 + mov sb, #0 + mov r6, sb + mov r5, sb + mov r4, #2 + b _02209614 +_022095B4: + cmp r5, #2 + subeq r5, r5, #1 + beq _02209610 + cmp r5, #1 + bne _02209604 + sub r0, sb, #1 + mov r1, r4 + add r0, r8, r0 + bl FUN_0220B8E4 + mov r0, r0, lsl #0x18 + movs r0, r0, asr #0x18 + ldrmi r0, _022099A0 ; =0x02211908 + movmi r1, #4 + sub r5, r5, #1 + strmi r1, [r0] + bmi _02209918 + cmp r0, #0x2f + bne _02209610 + sub r6, r6, #1 + b _0220962C +_02209604: + cmp r0, #0x25 + moveq r5, r4 + addeq r6, r6, #1 +_02209610: + add sb, sb, #1 +_02209614: + ldr r0, [sp, #4] + cmp sb, r0 + bge _0220962C + ldrsb r0, [r8, sb] + cmp r0, #0x2f + bne _022095B4 +_0220962C: + cmp r5, #0 + ldrne r0, _022099A0 ; =0x02211908 + movne r1, #4 + strne r1, [r0] + bne _02209918 + ldr r0, [sp, #4] + ldr r1, _022099A4 ; =0x02211924 + add r0, sl, r0 + sub r0, r0, r6, lsl #1 + ldr r2, [r1] + add r0, r0, #1 + mov r1, #4 + blx r2 + str r0, [r7, #0x24] + ldr r0, [r7, #0x24] + cmp r0, #0 + ldreq r0, _022099A0 ; =0x02211908 + moveq r1, #1 + streq r1, [r0] + beq _02209918 + mov r1, fp + mov r2, sl + bl FUN_02209F90 + mov r6, #0 + ldr r0, [sp, #4] + mov sb, r6 + mov r5, r6 + str r6, [sp, #8] + cmp r0, #0 + ble _0220973C + mov r4, #1 + mov fp, #2 +_022096AC: + cmp r5, #2 + subeq r5, r5, #1 + beq _0220972C + cmp r5, #1 + bne _022096F8 + sub r0, r6, #1 + mov r1, fp + add r0, r8, r0 + bl FUN_0220B8E4 + mov r0, r0, lsl #0x18 + mov r3, r0, asr #0x18 + add r1, sl, sb + cmp r3, #0x2f + ldr r2, [r7, #0x24] + sub r0, r1, #1 + strb r3, [r2, r0] + sub r5, r5, #1 + streq r4, [sp, #8] + b _0220972C +_022096F8: + ldrsb r2, [r8, r6] + cmp r2, #0x2f + streq r4, [sp, #8] + ldr r0, [sp, #8] + cmp r0, #0 + bne _0220971C + cmp r2, #0x25 + moveq r5, fp + beq _02209728 +_0220971C: + ldr r1, [r7, #0x24] + add r0, sl, sb + strb r2, [r1, r0] +_02209728: + add sb, sb, #1 +_0220972C: + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + blt _022096AC +_0220973C: + ldr r1, [r7, #0x24] + add r0, sl, sb + mov r2, #0 + strb r2, [r1, r0] + ldr r0, [r7, #0x24] + cmp sb, #0 + add r1, r0, sl + ble _02209788 +_0220975C: + ldrsb r0, [r1, r2] + cmp r0, #0x2f + beq _02209770 + cmp r0, #0x3a + bne _0220977C +_02209770: + add r0, r2, sl + str r0, [r7, #0xc] + b _02209788 +_0220977C: + add r2, r2, #1 + cmp r2, sb + blt _0220975C +_02209788: + cmp r2, sb + addeq r0, r2, sl + streq r0, [r7, #0xc] + ldreq r0, [r7, #0xc] + streq r0, [r7, #0x10] + beq _02209840 + ldrsb r0, [r1, r2] + cmp r0, #0x2f + ldreq r0, [r7, #0xc] + streq r0, [r7, #0x10] + beq _02209840 + cmp r0, #0x3a + bne _02209840 + cmp r2, sb + bge _022097E4 +_022097C4: + ldrsb r0, [r1, r2] + cmp r0, #0x2f + addeq r0, r2, sl + streq r0, [r7, #0x10] + beq _022097E4 + add r2, r2, #1 + cmp r2, sb + blt _022097C4 +_022097E4: + cmp r2, sb + addeq r0, r2, sl + streq r0, [r7, #0x10] + beq _02209840 + ldr r1, [r7, #0xc] + ldr r0, [r7, #0x24] + add r2, r1, #1 + ldr r1, [r7, #0x10] + add r0, r0, r2 + sub r1, r1, r2 + bl FUN_0220B688 + cmp r0, #0 + ldrlt r0, [r7, #0x28] + blt _02209834 + ldr r1, _022099B4 ; =0x0000FFFF + cmp r0, r1 + ldrgt r0, _022099A0 ; =0x02211908 + movgt r1, #4 + strgt r1, [r0] + bgt _02209918 +_02209834: + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r7, #0x28] +_02209840: + ldr r0, [r7, #8] + cmp r0, #0 + beq _022098E4 + ldr r0, _022099A4 ; =0x02211924 + ldr r3, [r7, #0xc] + ldr r2, [r0] + mov r0, #0x830 + mov r1, #4 + sub r4, r3, sl + blx r2 + str r0, [r7, #0x20] + ldr r0, [r7, #0x20] + cmp r0, #0 + ldreq r0, _022099A0 ; =0x02211908 + moveq r1, #1 + streq r1, [r0] + beq _02209918 + mov r1, #0x830 + bl FUN_02209FA8 + ldr r1, _022099A4 ; =0x02211924 + add r0, r4, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + ldr r1, [r7, #0x20] + str r0, [r1, #0x800] + ldr r0, [r7, #0x20] + ldr r0, [r0, #0x800] + cmp r0, #0 + ldreq r0, _022099A0 ; =0x02211908 + moveq r1, #1 + streq r1, [r0] + beq _02209918 + ldr r1, [r7, #0x24] + mov r2, r4 + add r1, r1, sl + bl FUN_02209F90 + ldr r0, [r7, #0x20] + mov r1, #0 + ldr r0, [r0, #0x800] + strb r1, [r0, r4] +_022098E4: + ldr r1, _022099B8 ; =0x0220BDE4 + add r0, r7, #0x44 + mov r2, #0x14 + bl FUN_02209F90 + ldr r0, [sp, #0x34] + ldr r1, [sp, #0x30] + str r0, [r7, #0x2c] + ldr r0, [sp] + add sp, sp, #0xc + str r0, [r7, #0x40] + mov r0, r7 + str r1, [r7, #0x3c] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02209918: + cmp r7, #0 + beq _02209994 + ldr r0, [r7, #0x20] + cmp r0, #0 + beq _02209954 + ldr r0, [r0, #0x800] + cmp r0, #0 + beq _02209944 + ldr r1, _022099BC ; =0x02211904 + ldr r1, [r1] + blx r1 +_02209944: + ldr r1, _022099BC ; =0x02211904 + ldr r0, [r7, #0x20] + ldr r1, [r1] + blx r1 +_02209954: + ldr r0, [r7, #0x24] + cmp r0, #0 + beq _0220996C + ldr r1, _022099BC ; =0x02211904 + ldr r1, [r1] + blx r1 +_0220996C: + ldr r0, [r7, #0x30] + cmp r0, #0 + beq _02209984 + ldr r1, _022099BC ; =0x02211904 + ldr r1, [r1] + blx r1 +_02209984: + ldr r1, _022099BC ; =0x02211904 + mov r0, r7 + ldr r1, [r1] + blx r1 +_02209994: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022099A0: .word 0x02211908 +_022099A4: .word 0x02211924 +_022099A8: .word 0x0220FA78 +_022099AC: .word 0x0220FA80 +_022099B0: .word 0x000001BB +_022099B4: .word 0x0000FFFF +_022099B8: .word 0x0220BDE4 +_022099BC: .word 0x02211904 + + arm_func_start FUN_022099C0 +FUN_022099C0: ; 0x022099C0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + ldr r2, [r5, #0x24] + ldr r1, [r5, #0xc] + mov r0, #0 + ldrsb r4, [r2, r1] + strb r0, [r2, r1] + ldr r0, [r5, #8] + add r1, sp, #0 + cmp r0, #0 + movne r2, #8 + ldr r0, [r5, #0x24] + moveq r2, #7 + add r6, r0, r2 + mov r0, r6 + bl FUN_0209A224 + cmp r0, #0 + ldrne r0, [sp] + bne _02209A54 + mov r0, r6 + bl FUN_02099D88 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #8 + mov r3, r0, lsl #8 + mov ip, r0, lsl #0x18 + and r2, r2, #0xff + and r0, r1, #0xff00 + and r1, r3, #0xff0000 + orr r0, r2, r0 + and r2, ip, #0xff000000 + orr r0, r1, r0 + orr r0, r2, r0 +_02209A54: + ldr r2, [r5, #0x24] + ldr r1, [r5, #0xc] + strb r4, [r2, r1] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_02209A68 +FUN_02209A68: ; 0x02209A68 + ldr r2, [r0, #8] + cmp r2, #0 + beq _02209A80 + ldr r2, [r0, #4] + cmp r2, #0 + bne _02209A88 +_02209A80: + mvn r0, #0 + bx lr +_02209A88: + ldr r2, [r0, #0x18] + str r2, [r1] + ldr r0, [r0, #4] + bx lr + + arm_func_start FUN_02209A98 +FUN_02209A98: ; 0x02209A98 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + ldr r0, [r7, #8] + mov r6, r1 + cmp r0, #0 + mov r5, r2 + addeq sp, sp, #4 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _02209AE0 + ldr r1, _02209BAC ; =0x02211904 + ldr r1, [r1] + blx r1 + mov r0, #0 + str r0, [r7, #0x14] +_02209AE0: + add r2, sp, #0 + mov r0, r7 + mov r1, r6 + bl FUN_02209BB8 + movs r4, r0 + bmi _02209B44 + ldr r1, _02209BB0 ; =0x02211924 + add r0, r4, #1 + ldr r2, [r1] + mov r1, #4 + blx r2 + str r0, [r7, #0x14] + ldr r0, [r7, #0x14] + mov r1, #0 + strb r1, [r0, r4] + ldr r1, [r7, #0x14] + ldr r2, [sp] + mov r0, r7 + mov r3, r4 + bl FUN_02208DCC + ldr r1, [r7, #0x14] + add sp, sp, #4 + mov r0, r4 + str r1, [r5] + ldmia sp!, {r4, r5, r6, r7, pc} +_02209B44: + ldr r0, _02209BB4 ; =0x0220FA8C + mov r1, r6 + bl FUN_0220A038 + cmp r0, #0 + addne sp, sp, #4 + mvnne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _02209BB0 ; =0x02211924 + mov r0, #4 + ldr r2, [r1] + mov r1, r0 + blx r2 + str r0, [r7, #0x14] + ldr r0, [r7, #0x14] + mov r1, #0 + strb r1, [r0, #3] + ldr r1, [r7, #0x14] + mov r0, r7 + mov r2, #9 + mov r3, #3 + bl FUN_02208DCC + ldr r1, [r7, #0x14] + mov r0, #3 + str r1, [r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02209BAC: .word 0x02211904 +_02209BB0: .word 0x02211924 +_02209BB4: .word 0x0220FA8C + + arm_func_start FUN_02209BB8 +FUN_02209BB8: ; 0x02209BB8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r2 + mov sl, r1 + ldr r2, [r5] + add r3, sp, #4 + mov r1, #0xc + bl FUN_02209014 + mov sb, r0 + cmp sb, #0 + ble _02209CB8 + add r7, sp, #4 + mov r6, #0 +_02209BF0: + ldr r2, [r5] + mov r0, r5 + mov r1, sb + mov r3, r7 + bl FUN_02209014 + ldr r2, [sp, #4] + mov r8, r0 + cmp r2, #0 + ble _02209CAC + mov r0, r5 + mov r1, sb + mov r3, sl + str r6, [sp] + bl FUN_02208EC4 + cmp r0, #0 + bne _02209CAC + ldr r1, [sp, #4] + ldr r0, [r5] + add r1, r1, #1 + cmp r1, r0 + bge _02209CA0 + ldr r2, [r5] + mov r0, r5 + mov r3, #0 + bl FUN_02209014 + cmp r0, #0 + ldrle r6, [r5] + ble _02209C74 + cmp r0, #2 + addlt sp, sp, #8 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + sub r6, r0, #2 +_02209C74: + ldr r1, [sp, #4] + mov r0, r5 + mov r2, r6 + add r1, r1, #1 + bl FUN_02208FA4 + cmp r0, #0 + movlt r0, r6 + str r0, [r4] + add sp, sp, #8 + sub r0, r6, r0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02209CA0: + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02209CAC: + mov sb, r8 + cmp r8, #0 + bgt _02209BF0 +_02209CB8: + mvn r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + + arm_func_start FUN_02209CC4 +FUN_02209CC4: ; 0x02209CC4 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02209CF8 + ldr r5, _02209D3C ; =0x02211904 +_02209CDC: + ldr r6, [r0] + ldr r1, [r5] + blx r1 + str r6, [r4, #0x1c] + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _02209CDC +_02209CF8: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02209D10 + ldr r1, _02209D3C ; =0x02211904 + ldr r1, [r1] + blx r1 +_02209D10: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02209D28 + ldr r1, _02209D3C ; =0x02211904 + ldr r1, [r1] + blx r1 +_02209D28: + ldr r1, _02209D3C ; =0x02211904 + mov r0, r4 + ldr r1, [r1] + blx r1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02209D3C: .word 0x02211904 + + arm_func_start FUN_02209D40 +FUN_02209D40: ; 0x02209D40 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + mov r0, r1 + mov r1, #2 + bl thunk_FUN_020995dc + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_02209D68 +FUN_02209D68: ; 0x02209D68 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + mov r2, r3 + ldr r3, [sp, #8] + bl FUN_0209A858 + cmp r0, #0 + ldmgeia sp!, {r4, pc} + ldr r1, [r4, #4] + cmp r1, #0 + ldrne r0, _02209DB0 ; =0xFFFFFC16 + ldmneia sp!, {r4, pc} + mvn r1, #0x37 + cmp r0, r1 + moveq r0, #0 + mvnne r0, #0x3e8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02209DB0: .word 0xFFFFFC16 + + arm_func_start FUN_02209DB4 +FUN_02209DB4: ; 0x02209DB4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + mov r2, r3 + ldr r3, [sp, #8] + bl FUN_0209A91C + cmp r0, #0 + ldmgeia sp!, {r4, pc} + ldr r1, [r4, #4] + cmp r1, #0 + ldrne r0, _02209DFC ; =0xFFFFFC16 + ldmneia sp!, {r4, pc} + mvn r1, #0x37 + cmp r0, r1 + moveq r0, #0 + mvnne r0, #0x3e8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02209DFC: .word 0xFFFFFC16 + + arm_func_start FUN_02209E00 +FUN_02209E00: ; 0x02209E00 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r3, r3, lsl #0x10 + mov r3, r3, lsr #0x10 + mov ip, r3, asr #8 + mov r4, r0 + mov r5, #8 + mov lr, #2 + mov r3, r3, lsl #8 + mov r0, r1 + and ip, ip, #0xff + and r1, r3, #0xff00 + orr r3, ip, r1 + add r1, sp, #0 + strb r5, [sp] + strb lr, [sp, #1] + strh r3, [sp, #2] + str r2, [sp, #4] + bl FUN_0209A944 + cmp r0, #0 + bge _02209E6C + ldr r0, [r4, #4] + add sp, sp, #0xc + cmp r0, #0 + ldrne r0, _02209E78 ; =0xFFFFFC16 + mvneq r0, #0x3e8 + ldmia sp!, {r4, r5, pc} +_02209E6C: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02209E78: .word 0xFFFFFC16 + + arm_func_start FUN_02209E7C +FUN_02209E7C: ; 0x02209E7C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + mov r0, r8 + bl thunk_FUN_0209996c + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r7, #0 + mov r6, #0x1f4 + ldr r4, _02209ED0 ; =0x00002710 + mvn r5, #0x19 + b _02209EB4 +_02209EA8: + mov r0, r6 + bl OS_Sleep + add r7, r7, #0x1f4 +_02209EB4: + mov r0, r8 + bl thunk_FUN_0209996c + cmp r0, r5 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + cmp r7, r4 + ble _02209EA8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02209ED0: .word 0x00002710 + + arm_func_start FUN_02209ED4 +FUN_02209ED4: ; 0x02209ED4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl FUN_0209A9D0 + movs r4, r0 + bmi _02209F4C + ldr r0, [r5, #8] + cmp r0, #0 + beq _02209F4C + bl FUN_02209F5C + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + ldr r2, _02209F58 ; =FUN_02209F84 + str r1, [r0, #0x814] + ldr r3, [r5, #0x18] + ldr r1, [r5, #0x20] + mov r0, r4 + str r3, [r1, #0x818] + ldr r1, [r5, #0x20] + str r2, [r1, #0x810] + ldr r1, [r5, #0x20] + bl FUN_0209AAD0 + cmp r0, #0 + bge _02209F4C + mov r0, r4 + bl thunk_FUN_0209996c + mvn r4, #0 +_02209F4C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02209F58: .word FUN_02209F84 + + arm_func_start FUN_02209F5C +FUN_02209F5C: ; 0x02209F5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02209F80 ; =0x02211A24 + bl OS_GetLowEntropyData + ldr r0, _02209F80 ; =0x02211A24 + mov r1, #0x20 + bl FUN_020A136C + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_02209F80: .word 0x02211A24 + + arm_func_start FUN_02209F84 +FUN_02209F84: ; 0x02209F84 + ands r1, r0, #0x8000 + bicne r0, r0, #0x8000 + bx lr + + arm_func_start FUN_02209F90 +FUN_02209F90: ; 0x02209F90 + ldr ip, _02209FA4 ; =0x020CE3E0 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx ip + .align 2, 0 +_02209FA4: .word 0x020CE3E0 + + arm_func_start FUN_02209FA8 +FUN_02209FA8: ; 0x02209FA8 + ldr ip, _02209FB8 ; =0x020CE34C + mov r2, r1 + mov r1, #0 + bx ip + .align 2, 0 +_02209FB8: .word 0x020CE34C + + arm_func_start FUN_02209FBC +FUN_02209FBC: ; 0x02209FBC + ldr ip, _02209FC4 ; =0x020DE0BC + bx ip + .align 2, 0 +_02209FC4: .word 0x020DE0BC + + arm_func_start FUN_02209FC8 +FUN_02209FC8: ; 0x02209FC8 + cmp r2, #0 + ble _0220A030 +_02209FD0: + ldrsb ip, [r0], #1 + ldrsb r3, [r1], #1 + cmp ip, #0 + beq _02209FE8 + cmp r3, #0 + bne _02209FFC +_02209FE8: + cmp ip, #0 + bne _0220A030 + cmp r3, #0 + moveq r2, #0 + b _0220A030 +_02209FFC: + cmp r3, #0x41 + blt _0220A00C + cmp r3, #0x5a + addle r3, r3, #0x20 +_0220A00C: + cmp ip, #0x41 + blt _0220A01C + cmp ip, #0x5a + addle ip, ip, #0x20 +_0220A01C: + cmp ip, r3 + bne _0220A030 + sub r2, r2, #1 + cmp r2, #0 + bgt _02209FD0 +_0220A030: + mov r0, r2 + bx lr + + arm_func_start FUN_0220A038 +FUN_0220A038: ; 0x0220A038 + ldr ip, _0220A040 ; =0x020DE090 + bx ip + .align 2, 0 +_0220A040: .word 0x020DE090 + + arm_func_start FUN_0220A044 +FUN_0220A044: ; 0x0220A044 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x124 + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _0220AFFC ; =0x02211918 + mvn r5, #0 + ldr r1, [r0] + ldr r0, [sp, #0x14] + str r5, [sp, #0x10] + str r0, [sp, #8] + str r0, [sp, #0x18] + cmp r1, #0 + addne sp, sp, #0x124 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0x26 + str r0, [sp, #0x74] + mov r0, #3 + str r0, [sp, #0x3c] + mov r0, #0x4b + str r0, [sp, #0x78] + mov r0, #0x14 + str r0, [sp, #0x70] + mov r0, #1 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x14] + add r8, sp, #0x108 + str r0, [sp, #0x80] + str r0, [sp, #0x7c] + str r0, [sp, #0x84] + mov r0, #4 + str r0, [sp, #0x24] + mov r0, #0x10 + str r0, [sp, #0x6c] + mov r0, #0x31 + str r0, [sp, #0x68] + mov r0, #0x12 + str r0, [sp, #0x64] + ldr r0, [sp, #0x14] + mov r7, #2 + str r0, [sp, #0x5c] + mov r0, #0x2c + str r0, [sp, #0x60] + mov r0, #7 + str r0, [sp, #0x54] + mov r0, #8 + str r0, [sp, #0x50] + mov r0, #6 + str r0, [sp, #0x58] + mov r0, #0xb + str r0, [sp, #0x4c] + mov r0, #5 + str r0, [sp, #0x44] + mov r0, #0xa + str r0, [sp, #0x34] + ldr r0, [sp, #0x14] + add r6, sp, #0x114 + str r0, [sp, #0x40] + str r0, [sp, #0x48] + str r0, [sp, #0x30] + mov r0, #0x204 + str r0, [sp, #0x90] + ldr r0, [sp, #0x14] + str r5, [sp, #0x38] + str r0, [sp, #0x94] + str r0, [sp, #0x98] + str r0, [sp, #0x8c] + str r0, [sp, #0xe0] + str r0, [sp, #0xe8] + str r0, [sp, #0xe4] + str r0, [sp, #0xdc] + str r0, [sp, #0xf8] + str r0, [sp, #0xf0] + str r0, [sp, #0x28] + str r0, [sp, #0x88] + str r0, [sp, #0xb8] + str r0, [sp, #0xbc] + str r0, [sp, #0xc0] + str r0, [sp, #0xb4] + str r0, [sp, #0xb0] + mov r0, #0x3b + str r0, [sp, #0xc8] + ldr r0, [sp, #0x14] + str r5, [sp, #0x20] + str r0, [sp, #0xcc] + str r0, [sp, #0xd0] + str r0, [sp, #0xc4] + str r0, [sp, #0xd4] + str r0, [sp, #0xf4] + str r0, [sp, #0xec] + str r0, [sp, #0xd8] + str r0, [sp, #0xa8] + mov r0, #0xc + str r0, [sp, #0xa4] + ldr r0, [sp, #0x14] + str r5, [sp, #0xac] + str r0, [sp, #0x9c] + mov r0, #0xe + str r0, [sp, #0xa0] + ldr r0, [sp, #0x14] + str r5, [sp, #0x100] + str r0, [sp, #0xfc] + str r0, [sp, #0x104] +_0220A1DC: + bl FUN_02208CE0 + bl FUN_022089E0 + cmp r0, #0 + ldrne sb, [r0, #8] + ldrne r4, [r0, #0xc] + ldrne r1, _0220B000 ; =0x02211914 + ldreq sb, [sp, #0x20] + strne r0, [r1] + bl FUN_02208CCC + cmp sb, #0 + bge _0220A210 + bl FUN_02208C00 + b _0220B3E8 +_0220A210: + ldr fp, [r4, #0x30] + ldr r0, [r4, #4] + cmp r0, #0 + bne _0220B348 + mov r0, r4 + bl FUN_022099C0 + str r0, [sp, #0xc] + cmp r0, #0 + ldreq r0, [sp, #0x24] + streq r0, [sp, #4] + beq _0220B348 + mov r1, r0 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + cmp r1, r0 + bne _0220A268 + ldr r1, [r4, #8] + ldr r0, [sp, #0x18] + cmp r1, r0 + bne _0220A268 + cmp r1, #0 + ldreq r2, [sp, #0x2c] +_0220A268: + ldr r0, [sp, #8] + and r0, r0, r2 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4, #8] + str r0, [sp, #0x18] +_0220A284: + ldr r0, [sp, #8] + cmp r0, #0 + ldr r0, [sp, #0x30] + str r0, [sp, #4] + bne _0220A32C + cmp r5, #0 + blt _0220A2C8 + mov r1, r5 + mov r0, r4 + bl FUN_02209E7C + cmp r0, #0 + ldrlt r0, [sp, #0x34] + ldr r5, [sp, #0x38] + strlt r0, [sp, #4] + ldr r0, [sp, #4] + cmp r0, #0 + bne _0220B348 +_0220A2C8: + mov r0, r4 + bl FUN_02209ED4 + movs r5, r0 + ldrmi r0, [sp, #0x3c] + strmi r0, [sp, #4] + bmi _0220B348 + bl FUN_02208CE0 + ldr r0, _0220B000 ; =0x02211914 + ldr r0, [r0] + str r5, [r0, #0x10] + bl FUN_02208CCC + ldr r0, [r4, #4] + cmp r0, #0 + bne _0220B348 + ldr r2, [sp, #0xc] + ldr r3, [r4, #0x28] + mov r0, r4 + mov r1, r5 + bl FUN_02209E00 + cmp r0, #0 + ldrge r0, [sp, #0x2c] + strge r0, [sp, #8] + ldrlt r0, [sp, #0x40] + strlt r0, [sp, #8] + b _0220A344 +_0220A32C: + bl FUN_02209F5C + bl FUN_02208CE0 + ldr r0, _0220B000 ; =0x02211914 + ldr r0, [r0] + str r5, [r0, #0x10] + bl FUN_02208CCC +_0220A344: + ldr r0, [r4, #4] + cmp r0, #0 + bne _0220B348 + ldr r0, [sp, #8] + cmp r0, #0 + ldreq r0, [sp, #0x44] + streq r0, [sp, #4] + beq _0220B348 + ldr r0, [sp, #0x48] + str r0, [sp, #0x108] + str r0, [sp, #8] + ldr r0, [r4, #0x24] + bl FUN_02209FBC + mov sb, r0 + ldr r0, [sp, #0x34] + str r0, [sp, #4] + ldr r0, [r4, #0x40] + cmp r0, #0 + beq _0220A3A4 + cmp r0, #1 + beq _0220A3D4 + cmp r0, #2 + beq _0220A404 + b _0220A430 +_0220A3A4: + ldr r0, [sp, #0x24] + ldr r3, _0220B004 ; =0x0220FA9C + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + bne _0220A430 + b _0220A284 +_0220A3D4: + ldr r0, [sp, #0x44] + ldr r3, _0220B008 ; =0x0220FAA4 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + bne _0220A430 + b _0220A284 +_0220A404: + ldr r0, [sp, #0x44] + ldr r3, _0220B00C ; =0x0220FAAC + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A430: + ldr sl, [r4, #0x10] + cmp sb, sl + ble _0220A474 + subs r0, sb, sl + beq _0220A4A0 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + ldr r3, [r4, #0x24] + add r3, r3, sl + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + bne _0220A4A0 + b _0220A284 +_0220A474: + ldr r0, [sp, #0x2c] + ldr r3, _0220B010 ; =0x0220FAB4 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A4A0: + ldr r0, [sp, #0x4c] + ldr r3, _0220B014 ; =0x0220FAB8 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [r4, #8] + ldr r3, _0220B018 ; =0x0220FAC4 + cmp r0, #0 + ldrne r0, [sp, #0x50] + mov r1, r5 + ldreq r0, [sp, #0x54] + mov r2, r8 + str r0, [sp, #0x10c] + ldr r0, [sp, #0x58] + str r0, [sp] + mov r0, r4 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr sb, [sp, #0x10c] + ldr r0, [r4, #0xc] + subs r0, r0, sb + beq _0220A548 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + ldr r3, [r4, #0x24] + add r3, r3, sb + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A548: + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + add r0, r4, #0x34 + bl FUN_02208888 + movs sb, r0 + beq _0220A660 +_0220A580: + ldr r0, [sb, #8] + bl FUN_02209FBC + cmp r0, #0 + beq _0220A5B8 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + ldr r3, [sb, #8] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A5B8: + ldr r3, _0220B020 ; =0x0220FAD0 + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sb, #0xc] + bl FUN_02209FBC + cmp r0, #0 + beq _0220A618 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + ldr r3, [sb, #0xc] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A618: + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r1, _0220B024 ; =0x02211904 + mov r0, sb + ldr r1, [r1] + blx r1 + add r0, r4, #0x34 + bl FUN_02208888 + movs sb, r0 + bne _0220A580 +_0220A660: + ldr r0, [r4, #0x40] + cmp r0, #1 + bne _0220A8A0 + ldr sl, [sp, #0x5c] + ldr sb, [r4, #0x38] + mov r0, sl + str r0, [sp, #0x14] + cmp sb, #0 + mov r1, sb + beq _0220A6B4 +_0220A688: + ldr r0, [r1, #0x14] + cmp r0, #0 + ldrne r0, [sp, #0x2c] + strne r0, [sp, #0x14] + bne _0220A6B4 + ldr r0, [sb] + cmp r1, r0 + beq _0220A6B4 + ldr r1, [r1, #4] + cmp r1, #0 + bne _0220A688 +_0220A6B4: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0220A79C + cmp sb, #0 + beq _0220A714 +_0220A6C8: + ldr r0, [sb, #8] + add sl, sl, #0x16 + bl FUN_02209FBC + add r0, r0, #0x29 + add sl, sl, r0 + ldr r0, [sb, #0x14] + ldr r1, [sb, #0x10] + cmp r0, #0 + ldr r0, [r4, #0x38] + addne sl, sl, #0x4b + add r2, sl, #2 + ldr r0, [r0] + add r1, r2, r1 + add sl, r1, #2 + cmp sb, r0 + beq _0220A714 + ldr sb, [sb, #4] + cmp sb, #0 + bne _0220A6C8 +_0220A714: + ldr r0, [sp, #0x60] + ldr r3, _0220B028 ; =0x0220FAD4 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + add sl, sl, #0x18 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sp, #0x64] + mov r1, r5 + str r0, [sp] + mov r0, r4 + mov r2, r8 + add r3, r4, #0x46 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + bne _0220A80C + b _0220A284 +_0220A79C: + cmp sb, #0 + beq _0220A7E0 +_0220A7A4: + ldr r0, [sb, #8] + bl FUN_0220BA58 + add r0, sl, r0 + add sl, r0, #1 + ldr r0, [sb, #0xc] + bl FUN_0220BA58 + add sl, sl, r0 + ldr r0, [r4, #0x38] + ldr r0, [r0] + cmp sb, r0 + beq _0220A7E0 + add sl, sl, #1 + ldr sb, [sb, #4] + cmp sb, #0 + bne _0220A7A4 +_0220A7E0: + ldr r0, [sp, #0x68] + ldr r3, _0220B02C ; =0x0220FB04 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A80C: + ldr r0, [sp, #0x6c] + ldr r3, _0220B030 ; =0x0220FB38 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + mov r1, sl + mov r0, r6 + bl FUN_0220B788 + str r0, [sp, #0x10c] + cmp r0, #0 + beq _0220A878 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + mov r3, r6 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A878: + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A8A0: + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [r4, #0x40] + cmp r0, #1 + bne _0220AC54 + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0220AB04 + ldr sb, [r4, #0x38] + cmp sb, #0 + beq _0220AAA8 +_0220A8EC: + ldr r0, [sp, #0x70] + mov r1, r5 + str r0, [sp] + mov r0, r4 + mov r2, r8 + add r3, r4, #0x44 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sp, #0x74] + ldr r3, _0220B034 ; =0x0220BDFC + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sb, #8] + bl FUN_02209FBC + cmp r0, #0 + beq _0220A9A4 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + ldr r3, [sb, #8] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220A9A4: + ldr r0, [sp, #0x3c] + ldr r3, _0220B038 ; =0x0220FB4C + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sb, #0x14] + cmp r0, #0 + beq _0220AA08 + ldr r0, [sp, #0x78] + ldr r3, _0220B03C ; =0x0220BE24 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220AA08: + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sb, #0x10] + cmp r0, #0 + beq _0220AA64 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + ldr r3, [sb, #0xc] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220AA64: + ldr r3, _0220B01C ; =0x0220FACC + mov r0, r4 + mov r1, r5 + mov r2, r8 + str r7, [sp] + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [r4, #0x38] + ldr r0, [r0] + cmp sb, r0 + beq _0220AAA8 + ldr sb, [sb, #4] + cmp sb, #0 + bne _0220A8EC +_0220AAA8: + ldr r0, [sp, #0x70] + mov r1, r5 + str r0, [sp] + mov r0, r4 + mov r2, r8 + add r3, r4, #0x44 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r0, [sp, #0x24] + ldr r3, _0220B040 ; =0x0220FB50 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + bne _0220AC54 + b _0220A284 +_0220AB04: + ldr sl, [r4, #0x38] + cmp sl, #0 + beq _0220AC54 +_0220AB10: + ldr r1, [sl, #8] + ldr sb, [sp, #0x7c] + ldrsb r0, [r1] + cmp r0, #0 + beq _0220AB78 +_0220AB24: + ldrsb r1, [r1, sb] + mov r0, r6 + bl FUN_0220B9CC + str r0, [sp, #0x10c] + cmp r0, #0 + beq _0220AB64 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + mov r3, r6 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220AB64: + add sb, sb, #1 + ldr r1, [sl, #8] + ldrsb r0, [r1, sb] + cmp r0, #0 + bne _0220AB24 +_0220AB78: + ldr r0, [sp, #0x2c] + ldr r3, _0220B044 ; =0x0220FB58 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr r1, [sl, #0xc] + ldr sb, [sp, #0x80] + ldrsb r0, [r1] + cmp r0, #0 + beq _0220AC0C +_0220ABB8: + ldrsb r1, [r1, sb] + mov r0, r6 + bl FUN_0220B9CC + str r0, [sp, #0x10c] + cmp r0, #0 + beq _0220ABF8 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + mov r3, r6 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220ABF8: + add sb, sb, #1 + ldr r1, [sl, #0xc] + ldrsb r0, [r1, sb] + cmp r0, #0 + bne _0220ABB8 +_0220AC0C: + ldr r0, [r4, #0x38] + ldr r0, [r0] + cmp sl, r0 + beq _0220AC54 + ldr r0, [sp, #0x2c] + ldr r3, _0220B048 ; =0x0220FB5C + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r2, r8 + bl FUN_0220B490 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 + ldr sl, [sl, #4] + cmp sl, #0 + bne _0220AB10 +_0220AC54: + ldr r3, [sp, #0x108] + cmp r3, #0 + ble _0220AC88 + ldr r0, [sp, #0x84] + ldr r2, _0220B04C ; =0x02211A44 + str r0, [sp] + mov r0, r4 + mov r1, r5 + bl FUN_02209D68 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220A284 +_0220AC88: + ldr r0, [sp, #0x88] + str r0, [fp] + strb r0, [sp, #0x114] + strb r0, [sp, #0x115] + strb r0, [sp, #0x116] + strb r0, [sp, #0x117] + ldr r0, [sp, #0x54] + ldr sb, [fp, #0x1c] + str r0, [sp, #4] + ldr r0, [sp, #0x88] + str r0, [sp, #0x108] +_0220ACB4: + ldr r0, [r4, #4] + cmp r0, #0 + bne _0220B348 + ldr r3, [sp, #0x108] + cmp r3, #0x400 + bge _0220AD04 + ldr r0, [sp, #0x8c] + add r2, fp, #0x20 + add r2, r2, r3 + str r0, [sp] + ldr r3, [sp, #0x2c] + mov r0, r4 + mov r1, r5 + bl FUN_02209DB4 + ldr r3, [sp, #0x108] + add r1, fp, r3 + ldrsb r2, [r1, #0x20] + and r1, r3, #3 + strb r2, [r6, r1] + b _0220ADA0 +_0220AD04: + ldr r0, _0220B050 ; =0x000001FF + ands sl, r3, r0 + bne _0220AD6C + cmp sb, #0 + beq _0220AD38 + ldr r2, _0220B054 ; =0x02211924 + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x24] + ldr r2, [r2] + blx r2 + str r0, [sb] + ldr sb, [sb] + b _0220AD54 +_0220AD38: + ldr r2, _0220B054 ; =0x02211924 + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x24] + ldr r2, [r2] + blx r2 + mov sb, r0 + str sb, [fp, #0x1c] +_0220AD54: + cmp sb, #0 + ldreq r0, [sp, #0x2c] + streq r0, [sp, #4] + beq _0220B348 + ldr r0, [sp, #0x94] + str r0, [sb] +_0220AD6C: + ldr r0, [sp, #0x98] + add r2, sb, #4 + str r0, [sp] + ldr r3, [sp, #0x2c] + mov r0, r4 + mov r1, r5 + add r2, r2, sl + bl FUN_02209DB4 + add r1, sb, sl + ldrsb r2, [r1, #4] + ldr r1, [sp, #0x108] + and r1, r1, #3 + strb r2, [r6, r1] +_0220ADA0: + cmp r0, #0 + ldrle r0, [sp, #0x34] + strle r0, [sp, #4] + ble _0220B348 + ldr r1, [sp, #0x108] + add r0, r1, r0 + str r0, [sp, #0x108] + sub r1, r0, #4 + and r1, r1, #3 + ldrsb r1, [r6, r1] + cmp r1, #0xd + bne _0220ACB4 + sub r1, r0, #3 + and r1, r1, #3 + ldrsb r1, [r6, r1] + cmp r1, #0xa + bne _0220ACB4 + sub r1, r0, #2 + and r1, r1, #3 + ldrsb r1, [r6, r1] + cmp r1, #0xd + bne _0220ACB4 + sub r1, r0, #1 + and r1, r1, #3 + ldrsb r1, [r6, r1] + cmp r1, #0xa + bne _0220ACB4 + str r0, [fp] + ldr r0, [fp] + cmp r0, #0 + beq _0220B348 + ldr r1, _0220B04C ; =0x02211A44 + ldr r2, [sp, #0x9c] + ldr r3, [sp, #0xa0] + mov r0, fp + bl FUN_02208DCC + cmp r0, #0 + beq _0220B348 + ldr r0, _0220B04C ; =0x02211A44 + ldr r1, _0220B058 ; =0x0220FB60 + ldr r2, [sp, #0x44] + bl FUN_02209FC8 + cmp r0, #0 + bne _0220B348 + ldr r0, _0220B04C ; =0x02211A44 + ldrsb r0, [r0, #8] + cmp r0, #0x20 + bne _0220B348 + ldr r0, _0220B05C ; =0x02211A4D + ldr r1, [sp, #0x3c] + bl FUN_0220B844 + cmp r0, #0 + blt _0220B348 + ldr r1, [sp, #0xa4] + ldr r2, [fp] + mov r0, fp + add r3, sp, #0x110 + bl FUN_02209014 + cmp r0, #0 + blt _0220B348 + ldr r1, _0220B060 ; =0x0220FB68 + mov r0, fp + add r2, sp, #0x10c + bl FUN_02209BB8 + movs sb, r0 + ldreq r0, [sp, #0xa8] + streq r0, [sp, #4] + beq _0220B348 + cmp sb, #0x400 + bgt _0220B348 + cmp sb, #0 + ble _0220AEF8 + ldr r1, _0220B04C ; =0x02211A44 + ldr r2, [sp, #0x10c] + mov r0, fp + mov r3, sb + bl FUN_02208DCC + cmp r0, #0 + beq _0220B348 + ldr r0, _0220B04C ; =0x02211A44 + mov r1, sb + bl FUN_0220B844 + movs sb, r0 + bmi _0220B348 + str sb, [r4, #0x14] + b _0220AF00 +_0220AEF8: + ldr r0, [sp, #0xac] + str r0, [r4, #0x14] +_0220AF00: + ldr r0, [r4, #8] + cmp r0, #0 + ldrne r0, [sp, #0xb0] + strne r0, [sp, #8] + bne _0220AF88 + ldr r1, _0220B064 ; =0x0220FB78 + mov r0, fp + add r2, sp, #0x10c + bl FUN_02209BB8 + str r0, [sp, #8] + cmp r0, #0 + beq _0220B348 + cmp r0, #0x400 + ldrgt r0, [sp, #0xb4] + strgt r0, [sp, #8] + bgt _0220AF88 + cmp r0, #0 + ble _0220AF80 + ldr r1, [sp, #0x10c] + ldr r3, [sp, #0xb8] + ldr r2, [sp, #8] + str r3, [sp] + ldr r3, _0220B068 ; =0x0220FB84 + mov r0, fp + add r2, r1, r2 + bl FUN_02208EC4 + cmp r0, #0 + ldreq r0, [sp, #0x2c] + streq r0, [sp, #8] + ldrne r0, [sp, #0xbc] + strne r0, [sp, #8] + b _0220AF88 +_0220AF80: + ldr r0, [sp, #0xc0] + str r0, [sp, #8] +_0220AF88: + ldr r1, _0220B06C ; =0x0220FB90 + mov r0, fp + add r2, sp, #0x10c + bl FUN_02209BB8 + movs r2, r0 + beq _0220B348 + cmp r2, #0x400 + ldrgt r1, [sp, #0xc4] + bgt _0220AFE4 + cmp r2, #0 + ble _0220AFE0 + ldr r1, [sp, #0x10c] + ldr r3, [sp, #0xc8] + mov r0, fp + str r3, [sp] + ldr r3, _0220B070 ; =0x0220FBA4 + add r2, r1, r2 + bl FUN_02208EC4 + cmp r0, #0 + ldreq r1, [sp, #0x2c] + ldrne r1, [sp, #0xcc] + b _0220AFE4 +_0220AFE0: + ldr r1, [sp, #0xd0] +_0220AFE4: + ldr r0, [r4, #0x40] + cmp r0, #2 + beq _0220B348 + cmp sb, #0 + blt _0220B104 + b _0220B0B0 + .align 2, 0 +_0220AFFC: .word 0x02211918 +_0220B000: .word 0x02211914 +_0220B004: .word 0x0220FA9C +_0220B008: .word 0x0220FAA4 +_0220B00C: .word 0x0220FAAC +_0220B010: .word 0x0220FAB4 +_0220B014: .word 0x0220FAB8 +_0220B018: .word 0x0220FAC4 +_0220B01C: .word 0x0220FACC +_0220B020: .word 0x0220FAD0 +_0220B024: .word 0x02211904 +_0220B028: .word 0x0220FAD4 +_0220B02C: .word 0x0220FB04 +_0220B030: .word 0x0220FB38 +_0220B034: .word 0x0220BDFC +_0220B038: .word 0x0220FB4C +_0220B03C: .word 0x0220BE24 +_0220B040: .word 0x0220FB50 +_0220B044: .word 0x0220FB58 +_0220B048: .word 0x0220FB5C +_0220B04C: .word 0x02211A44 +_0220B050: .word 0x000001FF +_0220B054: .word 0x02211924 +_0220B058: .word 0x0220FB60 +_0220B05C: .word 0x02211A4D +_0220B060: .word 0x0220FB68 +_0220B064: .word 0x0220FB78 +_0220B068: .word 0x0220FB84 +_0220B06C: .word 0x0220FB90 +_0220B070: .word 0x0220FBA4 +_0220B074: + ldr r0, [sp, #0xd4] + mov r1, r5 + str r0, [sp] + ldr r2, [fp, #4] + mov r0, r4 + mov r3, sb + bl FUN_02208D18 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + beq _0220B0CC + ldr r1, [fp, #4] + sub sb, sb, r0 + add r0, r1, r0 + str r0, [fp, #4] +_0220B0B0: + cmp sb, #0 + ble _0220B0CC + mov r0, fp + ldr r1, [fp, #4] + bl FUN_02208DB8 + cmp r0, #0 + beq _0220B074 +_0220B0CC: + cmp sb, #0 + beq _0220B0F8 + ldr r1, [fp, #4] + mov r0, fp + bl FUN_02208DB8 + cmp r0, #0 + ldrne r0, [sp, #0x58] + strne r0, [sp, #4] + ldreq r0, [sp, #0x34] + streq r0, [sp, #4] + b _0220B348 +_0220B0F8: + ldr r0, [sp, #0xd8] + str r0, [sp, #4] + b _0220B348 +_0220B104: + ldr r0, [sp, #0x34] + cmp r1, #0 + str r0, [sp, #4] + beq _0220B2A0 +_0220B114: + ldr r0, [sp, #0xdc] + strb r0, [sp, #0x114] + strb r0, [sp, #0x115] + str r0, [sp, #0x108] +_0220B124: + ldr r0, [sp, #0xe0] + ldr r2, _0220B04C ; =0x02211A44 + str r0, [sp] + ldr sb, [sp, #0x108] + ldr r3, [sp, #0x2c] + mov r0, r4 + mov r1, r5 + add r2, r2, sb + bl FUN_02209DB4 + cmp r0, #0 + blt _0220B348 + ldr r2, [sp, #0x108] + ldr r0, _0220B04C ; =0x02211A44 + and r1, r2, #1 + ldrsb r0, [r0, r2] + strb r0, [r6, r1] + ldrsb r1, [r6, r1] + cmp r1, #0x3b + beq _0220B18C + cmp r1, #0xa + bne _0220B1D8 + sub r0, r2, #1 + and r0, r0, #1 + ldrsb r0, [r6, r0] + cmp r0, #0xd + bne _0220B1D8 +_0220B18C: + cmp r1, #0xa + subeq r0, r2, #1 + streq r0, [sp, #0x10c] + beq _0220B1B4 + str r2, [sp, #0x10c] + mov r0, r4 + mov r1, r5 + bl FUN_0220B404 + cmp r0, #0 + ble _0220B348 +_0220B1B4: + ldr r1, [sp, #0x10c] + cmp r1, #0 + beq _0220B348 + ldr r0, _0220B04C ; =0x02211A44 + bl FUN_0220B8E4 + str r0, [sp, #0x1c] + cmp r0, #0 + bge _0220B1EC + b _0220B348 +_0220B1D8: + ldr r0, [sp, #0x108] + add r0, r0, #1 + str r0, [sp, #0x108] + cmp r0, #0x400 + blt _0220B124 +_0220B1EC: + ldr r0, [sp, #0x108] + cmp r0, #0x400 + ldreq r0, [sp, #0x54] + streq r0, [sp, #4] + beq _0220B348 + ldr r0, [sp, #0x1c] + cmp r0, #0 + ble _0220B288 + cmp r0, #0 + ble _0220B114 +_0220B214: + ldr r0, [sp, #0xe4] + ldr r3, [sp, #0x1c] + str r0, [sp] + ldr r2, [fp, #4] + mov r0, r4 + mov r1, r5 + bl FUN_02208D18 + cmp r0, #0 + ble _0220B348 + ldr r1, [sp, #0x1c] + ldr r2, [fp, #4] + subs r1, r1, r0 + add r0, r2, r0 + str r1, [sp, #0x1c] + str r0, [fp, #4] + bne _0220B278 + ldr r0, [sp, #0xe8] + ldr r2, _0220B04C ; =0x02211A44 + str r0, [sp] + mov r0, r4 + mov r1, r5 + mov r3, r7 + bl FUN_02209DB4 + cmp r0, #0 + ble _0220B348 +_0220B278: + ldr r0, [sp, #0x1c] + cmp r0, #0 + bgt _0220B214 + b _0220B114 +_0220B288: + mov r0, r4 + mov r1, r5 + bl FUN_0220B404 + ldr r0, [sp, #0xec] + str r0, [sp, #4] + b _0220B348 +_0220B2A0: + mov r0, fp + ldr r1, [fp, #4] + bl FUN_02208DB8 + cmp r0, #0 + bne _0220B348 +_0220B2B4: + ldr r2, [fp, #4] + ldr r3, [sp, #0xf0] + mov r0, r4 + mov r1, r5 + bl FUN_02208D88 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + ldreq r0, [sp, #0xf4] + streq r0, [sp, #4] + beq _0220B348 + ldr r1, [fp, #4] + add r0, r1, r0 + str r0, [fp, #4] + mov r0, fp + ldr r1, [fp, #4] + bl FUN_02208DB8 + cmp r0, #0 + beq _0220B334 + ldr r0, [sp, #0xf8] + ldr r2, _0220B04C ; =0x02211A44 + str r0, [sp] + ldr r3, [sp, #0x2c] + mov r0, r4 + mov r1, r5 + bl FUN_02209DB4 + cmp r0, #0 + blt _0220B348 + cmp r0, #0 + ldrne r0, [sp, #0x58] + strne r0, [sp, #4] + bne _0220B348 +_0220B334: + mov r0, fp + ldr r1, [fp, #4] + bl FUN_02208DB8 + cmp r0, #0 + beq _0220B2B4 +_0220B348: + bl FUN_02208CE0 + ldr r0, _0220B000 ; =0x02211914 + ldr r1, _0220B024 ; =0x02211904 + ldr r0, [r0] + ldr r1, [r1] + blx r1 + ldr r1, [sp, #0xfc] + ldr r0, _0220B000 ; =0x02211914 + str r1, [r0] + bl FUN_02208CCC + ldr r0, [r4, #4] + cmp r0, #0 + ldrne r0, [sp, #0x50] + strne r0, [sp, #4] + cmp r5, #0 + blt _0220B3A4 + mov r1, r5 + mov r0, r4 + bl FUN_02209E7C + cmp r0, #0 + ldrlt r0, [sp, #0x34] + ldr r5, [sp, #0x100] + strlt r0, [sp, #4] +_0220B3A4: + ldr r0, [sp, #4] + cmp r0, #0 + ldreq r0, [sp, #0x2c] + ldrne r1, [sp, #4] + streq r0, [fp, #8] + ldrne r0, [sp, #0x104] + strne r0, [fp, #8] + ldrne r0, _0220B400 ; =0x02211908 + strne r1, [r0] + ldr sl, [r4, #0x2c] + mov r0, r4 + ldr sb, [r4, #0x3c] + bl FUN_02209338 + ldr r0, [sp, #4] + mov r1, fp + mov r2, sl + blx sb +_0220B3E8: + ldr r0, _0220AFFC ; =0x02211918 + ldr r0, [r0] + cmp r0, #0 + beq _0220A1DC + add sp, sp, #0x124 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0220B400: .word 0x02211908 + + arm_func_start FUN_0220B404 +FUN_0220B404: ; 0x0220B404 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r7, #0 + mov sl, r0 + mov sb, r1 + mov r8, r7 + mov r6, r7 + strb r7, [sp, #4] + strb r7, [sp, #5] + mov r5, #1 + add r4, sp, #4 + b _0220B45C +_0220B434: + mov r0, sl + mov r1, sb + mov r3, r5 + str r6, [sp] + bl FUN_02209DB4 + cmp r0, #0 + addle sp, sp, #8 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r7, r7, r0 + add r8, r8, #1 +_0220B45C: + and r1, r8, #1 + ldrsb r0, [r4, r1] + add r2, r4, r1 + cmp r0, #0xd + bne _0220B434 + sub r0, r8, #1 + and r0, r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #0xa + bne _0220B434 + mov r0, r7 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + + arm_func_start FUN_0220B490 +FUN_0220B490: ; 0x0220B490 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r7, [sp, #0x28] + mov sl, r0 + mov fp, r1 + mov sb, r2 + mov r8, r3 + cmp r7, #0 + ble _0220B54C + mov r5, #0 + mov r4, #0x400 +_0220B4BC: + ldr r0, [sl, #4] + cmp r0, #0 + addne sp, sp, #4 + mvnne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r3, [sb] + ldr r0, _0220B558 ; =0x02211A44 + rsb r6, r3, #0x400 + cmp r7, r6 + movle r6, r7 + mov r1, r8 + mov r2, r6 + add r0, r0, r3 + bl FUN_02209F90 + ldr r0, [sb] + add r8, r8, r6 + add r0, r0, r6 + str r0, [sb] + ldr r0, [sb] + sub r7, r7, r6 + cmp r0, #0x400 + bne _0220B544 + ldr r2, _0220B558 ; =0x02211A44 + mov r0, sl + mov r1, fp + mov r3, r4 + str r5, [sp] + bl FUN_02209D68 + cmp r0, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sb] + sub r0, r1, r0 + str r0, [sb] +_0220B544: + cmp r7, #0 + bgt _0220B4BC +_0220B54C: + ldr r0, [sp, #0x28] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0220B558: .word 0x02211A44 + + arm_func_start FUN_0220B55C +FUN_0220B55C: ; 0x0220B55C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #0 + mov r4, r1 + str r0, [r5] + str r0, [r4] + bl FUN_02208CE0 + ldr r1, _0220B5FC ; =0x02211914 + ldr r2, [r1] + cmp r2, #0 + beq _0220B5D8 + ldr r0, [r2, #0xc] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _0220B5D0 + ldr r2, [r2, #0xc] + mvn r0, #0 + ldr r2, [r2, #0x30] + ldr r2, [r2, #4] + str r2, [r5] + ldr r2, [r1] + ldr r1, [r2, #0xc] + ldr r1, [r1, #0x14] + cmp r1, r0 + moveq r0, #0 + ldrne r0, [r2, #0xc] + ldrne r0, [r0, #0x14] + str r0, [r4] +_0220B5D0: + mov r4, #1 + b _0220B5EC +_0220B5D8: + ldr r0, _0220B600 ; =0x02211910 + ldr r0, [r0] + cmp r0, #0 + movne r4, #1 + moveq r4, #0 +_0220B5EC: + bl FUN_02208CCC + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0220B5FC: .word 0x02211914 +_0220B600: .word 0x02211910 + + arm_func_start FUN_0220B604 +FUN_0220B604: ; 0x0220B604 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + cmp r1, r3 + mvnlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + sub r1, r1, r3 + add r4, r1, #1 + cmp r4, #0 + mov r8, #0 + ble _0220B680 + ldrsb r5, [r2] + mov lr, #1 +_0220B630: + ldrsb r1, [r0, r8] + cmp r5, r1 + bne _0220B674 + mov r7, lr + cmp r3, #1 + add r6, r0, r8 + ble _0220B668 +_0220B64C: + ldrsb ip, [r6, r7] + ldrsb r1, [r2, r7] + cmp ip, r1 + bne _0220B668 + add r7, r7, #1 + cmp r7, r3 + blt _0220B64C +_0220B668: + cmp r7, r3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_0220B674: + add r8, r8, #1 + cmp r8, r4 + blt _0220B630 +_0220B680: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start FUN_0220B688 +FUN_0220B688: ; 0x0220B688 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0 + cmp r1, #0 + mov lr, ip + sub r1, r1, #1 + beq _0220B6F0 + mov r2, #0xa +_0220B6A8: + ldrsb r3, [r0] + cmp r3, #0x20 + beq _0220B6E0 + cmp r3, #0x30 + blt _0220B6E0 + cmp r3, #0x39 + bgt _0220B6E0 + mla r3, lr, r2, r3 + add ip, ip, #1 + cmp ip, #9 + addgt sp, sp, #4 + sub lr, r3, #0x30 + mvngt r0, #0 + ldmgtia sp!, {pc} +_0220B6E0: + cmp r1, #0 + add r0, r0, #1 + sub r1, r1, #1 + bne _0220B6A8 +_0220B6F0: + cmp ip, #0 + mvneq lr, #0 + mov r0, lr + add sp, sp, #4 + ldmfd sp!, {pc} + + arm_func_start FUN_0220B704 +FUN_0220B704: ; 0x0220B704 + stmdb sp!, {r4, lr} + mov r2, #1 + mov r3, #0 + b _0220B734 +_0220B714: + cmp ip, #0 + beq _0220B724 + cmp ip, #0x20 + bne _0220B72C +_0220B724: + mov r0, #0 + ldmia sp!, {r4, pc} +_0220B72C: + add r0, r0, #1 + add r1, r1, #1 +_0220B734: + ldrsb r4, [r1] + mov ip, r3 + cmp r4, #0x41 + blt _0220B74C + cmp r4, #0x5a + movle ip, r2 +_0220B74C: + cmp ip, #0 + ldrsb ip, [r0] + addne r4, r4, #0x20 + mov lr, r3 + cmp ip, #0x41 + blt _0220B76C + cmp ip, #0x5a + movle lr, r2 +_0220B76C: + cmp lr, #0 + addne lr, ip, #0x20 + moveq lr, ip + cmp lr, r4 + beq _0220B714 + mvn r0, #0 + ldmia sp!, {r4, pc} + + arm_func_start FUN_0220B788 +FUN_0220B788: ; 0x0220B788 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + ldr r6, _0220B840 ; =0x0220BE70 + add r4, sp, #0 + mov sl, r0 + mov sb, r1 + ldmia r6!, {r0, r1, r2, r3} + mov r5, r4 + stmia r4!, {r0, r1, r2, r3} + ldmia r6!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + mov r7, #0 + ldr r0, [r6] + mov r8, r7 + str r0, [r4] + mov r1, r7 + mov fp, #1 + mov r4, #0x30 +_0220B7D0: + ldr r6, [r5, r8, lsl #2] + cmp sb, r6 + blo _0220B808 + mov r0, sb + mov r1, r6 + bl _u32_div_f + mul r2, r0, r6 + cmp sl, #0 + addne r0, r0, #0x30 + strneb r0, [sl, r7] + mov r1, fp + sub sb, sb, r2 + add r7, r7, #1 + b _0220B81C +_0220B808: + cmp r1, #0 + beq _0220B81C + cmp sl, #0 + strneb r4, [sl, r7] + add r7, r7, #1 +_0220B81C: + add r8, r8, #1 + cmp r8, #9 + blt _0220B7D0 + cmp sl, #0 + addne r0, sb, #0x30 + strneb r0, [sl, r7] + add r0, r7, #1 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0220B840: .word 0x0220BE70 + + arm_func_start FUN_0220B844 +FUN_0220B844: ; 0x0220B844 + stmdb sp!, {r4, r5, r6, lr} + cmp r1, #0xa + mvngt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} + mov r6, #0 + mov r5, r6 + mov r4, r6 + cmp r1, #0 + ble _0220B8DC + mov ip, #1 + mov r2, #0xa +_0220B870: + cmp r4, #0 + ldrsb r3, [r0, r6] + beq _0220B88C + cmp r3, #0x20 + beq _0220B8DC + cmp r3, #0 + beq _0220B8DC +_0220B88C: + cmp r4, #0 + bne _0220B89C + cmp r3, #0x20 + beq _0220B8D0 +_0220B89C: + cmp r3, #0x30 + blt _0220B8AC + cmp r3, #0x39 + ble _0220B8B4 +_0220B8AC: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_0220B8B4: + mla r3, r5, r2, r3 + mov lr, r5 + sub r5, r3, #0x30 + cmp lr, r5 + mov r4, ip + mvngt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} +_0220B8D0: + add r6, r6, #1 + cmp r6, r1 + blt _0220B870 +_0220B8DC: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_0220B8E4 +FUN_0220B8E4: ; 0x0220B8E4 + stmdb sp!, {r4, r5, r6, lr} + cmp r1, #8 + mvngt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} + cmp r1, #8 + bne _0220B90C + ldrsb r2, [r0] + cmp r2, #0x37 + mvngt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} +_0220B90C: + mov r5, #0 + mov r4, r5 + mov lr, r5 + cmp r1, #0 + ble _0220B9C4 + mov ip, r5 + mov r3, #1 +_0220B928: + ldrsb r6, [r0, r5] + mov r2, ip + cmp r6, #0x41 + blt _0220B940 + cmp r6, #0x5a + movle r2, r3 +_0220B940: + cmp r2, #0 + addne r6, r6, #0x20 + mov r2, r6, lsl #0x18 + mov r2, r2, asr #0x18 + cmp r2, #0x30 + blt _0220B96C + cmp r2, #0x39 + addle r2, r2, r4, lsl #4 + movle lr, r3 + suble r4, r2, #0x30 + ble _0220B9B8 +_0220B96C: + cmp r2, #0x61 + blt _0220B988 + cmp r2, #0x66 + addle r2, r2, r4, lsl #4 + movle lr, r3 + suble r4, r2, #0x57 + ble _0220B9B8 +_0220B988: + cmp lr, #0 + beq _0220B9A0 + cmp r2, #0x20 + beq _0220B9C4 + cmp r2, #0 + beq _0220B9C4 +_0220B9A0: + cmp lr, #0 + bne _0220B9B0 + cmp r2, #0x20 + beq _0220B9B8 +_0220B9B0: + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_0220B9B8: + add r5, r5, #1 + cmp r5, r1 + blt _0220B928 +_0220B9C4: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start FUN_0220B9CC +FUN_0220B9CC: ; 0x0220B9CC + cmp r1, #0x20 + moveq r1, #0x2b + streqb r1, [r0] + moveq r0, #1 + bxeq lr + cmp r1, #0x30 + blt _0220B9F0 + cmp r1, #0x39 + ble _0220BA10 +_0220B9F0: + cmp r1, #0x41 + blt _0220BA00 + cmp r1, #0x5a + ble _0220BA10 +_0220BA00: + cmp r1, #0x61 + blt _0220BA1C + cmp r1, #0x7a + bgt _0220BA1C +_0220BA10: + strb r1, [r0] + mov r0, #1 + bx lr +_0220BA1C: + mov r2, r1, asr #4 + and r3, r2, #0xf + mov r2, #0x25 + strb r2, [r0] + cmp r3, #0xa + addlt r2, r3, #0x30 + addge r2, r3, #0x37 + and r1, r1, #0xf + cmp r1, #0xa + addlt r1, r1, #0x30 + strb r2, [r0, #1] + addge r1, r1, #0x37 + strb r1, [r0, #2] + mov r0, #3 + bx lr + + arm_func_start FUN_0220BA58 +FUN_0220BA58: ; 0x0220BA58 + ldrsb r1, [r0], #1 + mov r2, #0 + cmp r1, #0 + beq _0220BAB8 +_0220BA68: + cmp r1, #0x30 + blt _0220BA78 + cmp r1, #0x39 + ble _0220BAA0 +_0220BA78: + cmp r1, #0x41 + blt _0220BA88 + cmp r1, #0x5a + ble _0220BAA0 +_0220BA88: + cmp r1, #0x61 + blt _0220BA98 + cmp r1, #0x7a + ble _0220BAA0 +_0220BA98: + cmp r1, #0x20 + bne _0220BAA8 +_0220BAA0: + add r2, r2, #1 + b _0220BAAC +_0220BAA8: + add r2, r2, #3 +_0220BAAC: + ldrsb r1, [r0], #1 + cmp r1, #0 + bne _0220BA68 +_0220BAB8: + mov r0, r2 + bx lr + + .section .data + ; 0x0220BAC0 + .incbin "baserom.nds", 0x1411e0, 0x4100 + + .section .bss + ; 0x0220FBC0 + .space 0x22a0 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s new file mode 100644 index 00000000..51ee9793 --- /dev/null +++ b/arm9/modules/04/asm/thumb_04.s @@ -0,0 +1,3128 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD04_021D74E0 +MOD04_021D74E0: ; 0x021D74E0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021D7644 ; =0x0220FBC0 + add r4, r1, #0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D74F2 + bl ErrorHandling +_021D74F2: + ldr r1, _021D7648 ; =0x00001FAC + add r0, r4, #0 + bl FUN_02016998 + ldr r2, _021D7644 ; =0x0220FBC0 + mov r1, #0x1f + str r0, [r2, #4] + add r0, #0x1f + bic r0, r1 + mov r1, #0x1f + lsl r1, r1, #8 + str r0, [r2] + str r5, [r0, r1] + add r3, r1, #0 + ldr r6, [r2] + mov r0, #0 + add r3, #0xc + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x10 + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x14 + str r0, [r6, r3] + add r3, r1, #0 + ldr r6, [r2] + add r3, #0x44 + str r0, [r6, r3] + ldr r0, [r2] + add r1, #0x54 + str r4, [r0, r1] + ldr r1, _021D764C ; =0x0002B020 + add r0, r4, #0 + bl FUN_02016998 + ldr r2, _021D7644 ; =0x0220FBC0 + ldr r1, _021D7650 ; =0x00001F04 + ldr r3, [r2] + str r0, [r3, r1] + ldr r0, [r2] + mov r2, #0 + ldr r0, [r0, r1] + mov r1, #0x1f + add r0, #0x1f + bic r0, r1 + mov r1, #0x2b + lsl r1, r1, #0xc + bl tempName_NNS_FndCreateExpHeapEx + ldr r1, _021D7644 ; =0x0220FBC0 + ldr r3, _021D7654 ; =0x00001F08 + ldr r2, [r1] + str r0, [r2, r3] + add r0, r3, #0 + ldr r4, [r1] + mov r2, #0 + add r0, #0x64 + str r2, [r4, r0] + add r4, r3, #0 + ldr r6, [r1] + sub r0, r2, #1 + add r4, #0x54 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x38 + str r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x48 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x58 + str r0, [r6, r4] + add r0, r3, #0 + ldr r4, [r1] + add r0, #0x5c + str r2, [r4, r0] + add r4, r3, #0 + ldr r6, [r1] + mov r0, #1 + add r4, #0x60 + str r0, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x7a + strb r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x78 + strb r2, [r6, r4] + add r4, r3, #0 + ldr r6, [r1] + add r4, #0x79 + strb r2, [r6, r4] + add r2, r3, #0 + ldr r4, [r1] + add r2, #0x70 + str r0, [r4, r2] + add r2, r3, #0 + add r2, #0x74 + ldr r4, [r1] + cmp r5, #0 + str r0, [r4, r2] + beq _021D75FA + ldr r0, [r1] + sub r3, #8 + ldr r0, [r0, r3] + bl FUN_020286EC + bl FUN_02028228 + ldr r2, _021D7644 ; =0x0220FBC0 + ldr r1, _021D7658 ; =0x00001EF0 + ldr r3, [r2] + str r0, [r3, r1] + ldr r0, [r2] + add r1, #0x10 + ldr r0, [r0, r1] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + ldr r1, _021D7644 ; =0x0220FBC0 + ldr r2, [r1] + mov r1, #0x11 + lsl r1, r1, #8 + str r0, [r2, r1] +_021D75FA: + ldr r2, _021D7644 ; =0x0220FBC0 + mov r0, #0 + ldr r3, [r2] + ldr r1, _021D765C ; =0x00001F38 + add r4, r0, #0 + str r0, [r3, r1] + sub r1, #0x20 +_021D7608: + ldr r3, [r2] + add r3, r3, r0 + add r0, r0, #1 + strb r4, [r3, r1] + cmp r0, #0x20 + blt _021D7608 + bl FUN_021D85B4 + ldr r0, _021D7644 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7658 ; =0x00001EF0 + ldr r0, [r1, r0] + bl FUN_02096F80 + cmp r0, #0 + bne _021D762C + mov r0, #1 + pop {r4, r5, r6, pc} +_021D762C: + ldr r0, _021D7644 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7658 ; =0x00001EF0 + ldr r0, [r1, r0] + bl FUN_02096F18 + cmp r0, #0 + beq _021D7640 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D7640: + mov r0, #2 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D7644: .word 0x0220FBC0 +_021D7648: .word 0x00001FAC +_021D764C: .word 0x0002B020 +_021D7650: .word 0x00001F04 +_021D7654: .word 0x00001F08 +_021D7658: .word 0x00001EF0 +_021D765C: .word 0x00001F38 + + thumb_func_start FUN_021D7660 +FUN_021D7660: ; 0x021D7660 + push {r3, lr} + ldr r0, _021D76A0 ; =0x0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D7698 + ldr r0, _021D76A4 ; =0x00001F08 + ldr r0, [r1, r0] + bl thunk_FUN_020adc8c + ldr r0, _021D76A0 ; =0x0220FBC0 + ldr r1, _021D76A8 ; =0x00001F54 + ldr r2, [r0] + ldr r0, [r2, r1] + sub r1, #0x50 + ldr r1, [r2, r1] + bl FUN_02016A8C + ldr r1, _021D76A0 ; =0x0220FBC0 + ldr r0, _021D76A8 ; =0x00001F54 + ldr r2, [r1] + ldr r1, [r1, #4] + ldr r0, [r2, r0] + bl FUN_02016A8C + ldr r0, _021D76A0 ; =0x0220FBC0 + mov r1, #0 + str r1, [r0, #4] + str r1, [r0] +_021D7698: + bl FUN_021DD6F0 + pop {r3, pc} + nop +_021D76A0: .word 0x0220FBC0 +_021D76A4: .word 0x00001F08 +_021D76A8: .word 0x00001F54 + + thumb_func_start FUN_021D76AC +FUN_021D76AC: ; 0x021D76AC + push {lr} + sub sp, #0x64 + ldr r0, _021D779C ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #4 + bhi _021D7794 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D76C8: ; jump table + .short _021D76D2 - _021D76C8 - 2 ; case 0 + .short _021D7708 - _021D76C8 - 2 ; case 1 + .short _021D7736 - _021D76C8 - 2 ; case 2 + .short _021D7784 - _021D76C8 - 2 ; case 3 + .short _021D778A - _021D76C8 - 2 ; case 4 +_021D76D2: + ldr r0, _021D77A4 ; =FUN_021D7DA8 + ldr r1, _021D77A8 ; =FUN_021D7DEC + bl FUN_021DD968 + ldr r0, _021D779C ; =0x0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D77AC ; =0x00001EF4 + mov r3, #0x14 + add r0, r1, r0 + mov r1, #2 + bl FUN_021DDEE0 + mov r0, #2 + bl FUN_021DDE7C + bl FUN_021DDDCC + ldr r1, _021D779C ; =0x0220FBC0 + ldr r0, _021D77A0 ; =0x00001F44 + ldr r2, [r1] + mov r3, #1 + str r3, [r2, r0] + ldr r1, [r1] + mov r2, #0 + add r0, #0x14 + str r2, [r1, r0] +_021D7708: + bl FUN_021DDD7C + cmp r0, #0 + beq _021D7730 + bl FUN_021DDC1C + cmp r0, #4 + bne _021D7724 + ldr r0, _021D779C ; =0x0220FBC0 + mov r2, #2 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] + b _021D7736 +_021D7724: + ldr r0, _021D779C ; =0x0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] + b _021D7736 +_021D7730: + bl FUN_021DDCE8 + b _021D7794 +_021D7736: + bl FUN_021D7E18 + cmp r0, #0 + blt _021D7798 + ldr r0, _021D779C ; =0x0220FBC0 + ldr r3, _021D77B0 ; =0x0220BEA0 + ldr r1, [r0] + ldr r0, _021D77B4 ; =0x0220BEAC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + lsl r0, r0, #8 + ldr r2, [r1, r0] + add r0, r0, #4 + str r2, [sp, #0xc] + mov r2, #0x20 + str r2, [sp, #0x10] + ldr r2, _021D77B8 ; =0x00001EF0 + add r0, r1, r0 + ldr r1, [r1, r2] + ldr r2, _021D77BC ; =0x000029E7 + bl FUN_021E0374 + add r0, sp, #0x14 + bl OS_GetOwnerInfo + mov r1, #0 + ldr r2, _021D77C0 ; =FUN_021D7A7C + add r0, sp, #0x18 + add r3, r1, #0 + bl FUN_021DFE64 + ldr r0, _021D779C ; =0x0220FBC0 + mov r2, #3 + ldr r1, [r0] + ldr r0, _021D77A0 ; =0x00001F44 + str r2, [r1, r0] +_021D7784: + bl FUN_021DFF74 + b _021D7794 +_021D778A: + bl FUN_021DFF74 + add sp, #0x64 + mov r0, #1 + pop {pc} +_021D7794: + bl FUN_021D7E18 +_021D7798: + add sp, #0x64 + pop {pc} + .align 2, 0 +_021D779C: .word 0x0220FBC0 +_021D77A0: .word 0x00001F44 +_021D77A4: .word FUN_021D7DA8 +_021D77A8: .word FUN_021D7DEC +_021D77AC: .word 0x00001EF4 +_021D77B0: .word 0x0220BEA0 +_021D77B4: .word 0x0220BEAC +_021D77B8: .word 0x00001EF0 +_021D77BC: .word 0x000029E7 +_021D77C0: .word FUN_021D7A7C + + thumb_func_start FUN_021D77C4 +FUN_021D77C4: ; 0x021D77C4 + push {r3, r4} + ldr r3, _021D77D8 ; =0x0220FBC0 + ldr r2, _021D77DC ; =0x00001F0C + ldr r4, [r3] + str r0, [r4, r2] + ldr r3, [r3] + add r0, r2, #4 + str r1, [r3, r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D77D8: .word 0x0220FBC0 +_021D77DC: .word 0x00001F0C + + thumb_func_start FUN_021D77E0 +FUN_021D77E0: ; 0x021D77E0 + ldr r0, _021D77F8 ; =0x0220FBC0 + ldr r2, [r0] + ldr r0, _021D77FC ; =0x00001F44 + ldr r1, [r2, r0] + cmp r1, #9 + bne _021D77F2 + mov r1, #0xa + str r1, [r2, r0] + bx lr +_021D77F2: + mov r1, #8 + str r1, [r2, r0] + bx lr + .align 2, 0 +_021D77F8: .word 0x0220FBC0 +_021D77FC: .word 0x00001F44 + + thumb_func_start FUN_021D7800 +FUN_021D7800: ; 0x021D7800 + push {r3, r4, r5, lr} + ldr r2, _021D78EC ; =0x0220FBC0 + ldr r1, _021D78F0 ; =0x00001F44 + ldr r4, [r2] + ldr r3, [r4, r1] + cmp r3, #0xb + bhi _021D78E4 + add r5, r3, r3 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021D781A: ; jump table + .short _021D78E4 - _021D781A - 2 ; case 0 + .short _021D78E4 - _021D781A - 2 ; case 1 + .short _021D78E4 - _021D781A - 2 ; case 2 + .short _021D78E4 - _021D781A - 2 ; case 3 + .short _021D78E4 - _021D781A - 2 ; case 4 + .short _021D7832 - _021D781A - 2 ; case 5 + .short _021D7864 - _021D781A - 2 ; case 6 + .short _021D7886 - _021D781A - 2 ; case 7 + .short _021D78AA - _021D781A - 2 ; case 8 + .short _021D7864 - _021D781A - 2 ; case 9 + .short _021D78C4 - _021D781A - 2 ; case 10 + .short _021D78DE - _021D781A - 2 ; case 11 +_021D7832: + cmp r0, #0 + beq _021D783A + mov r0, #6 + str r0, [r4, r1] +_021D783A: + ldr r0, _021D78EC ; =0x0220FBC0 + ldr r2, _021D78F4 ; =0x00001F48 + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #2 + bne _021D78E4 + add r1, r2, #0 + add r1, #0x14 + ldr r1, [r0, r1] + cmp r1, #0 + blt _021D78E4 + add r3, r0, r1 + add r1, r2, #0 + sub r1, #0x30 + ldrb r1, [r3, r1] + cmp r1, #6 + beq _021D78E4 + mov r3, #9 + sub r1, r2, #4 + str r3, [r0, r1] + b _021D78E4 +_021D7864: + cmp r3, #0 + bne _021D786E + bl FUN_021EA530 + b _021D78E4 +_021D786E: + bl FUN_021DFA40 + cmp r0, #1 + bne _021D787C + bl FUN_021D77E0 + b _021D78E4 +_021D787C: + cmp r0, #0 + beq _021D78E4 + bl FUN_021D77E0 + b _021D78E4 +_021D7886: + mov r0, #1 + add r1, #0x40 + strh r0, [r4, r1] + bl FUN_021D8058 + ldr r0, _021D78EC ; =0x0220FBC0 + ldr r2, [r0] + ldr r0, _021D78F8 ; =0x00001F68 + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D78A0 + mov r1, #1 + b _021D78A2 +_021D78A0: + mov r1, #0 +_021D78A2: + add r0, #0x10 + str r1, [r2, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D78AA: + mov r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r3, [r2] + mov r4, #0 + add r0, #8 + str r4, [r3, r0] + ldr r0, [r2] + sub r3, r4, #1 + add r1, #0x1c + str r3, [r0, r1] + mov r0, #2 + pop {r3, r4, r5, pc} +_021D78C4: + mov r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r3, [r2] + mov r4, #0 + add r0, #8 + str r4, [r3, r0] + ldr r0, [r2] + sub r3, r4, #1 + add r1, #0x1c + str r3, [r0, r1] + mov r0, #3 + pop {r3, r4, r5, pc} +_021D78DE: + bl FUN_021D7E18 + pop {r3, r4, r5, pc} +_021D78E4: + bl FUN_021D7F8C + pop {r3, r4, r5, pc} + nop +_021D78EC: .word 0x0220FBC0 +_021D78F0: .word 0x00001F44 +_021D78F4: .word 0x00001F48 +_021D78F8: .word 0x00001F68 + + thumb_func_start FUN_021D78FC +FUN_021D78FC: ; 0x021D78FC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #8 + cmp r4, r0 + blt _021D790E + mov r0, #0 + pop {r4, r5, r6, pc} +_021D790E: + bl FUN_021DF95C + cmp r0, #0 + bne _021D7930 + ldr r0, _021D79A0 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D79A4 ; =0x00001F0C + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D792C + lsl r2, r4, #0x10 + mov r0, #0 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D792C: + mov r0, #1 + pop {r4, r5, r6, pc} +_021D7930: + ldr r0, _021D79A0 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D79A8 ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D7946 + mov r0, #0 + bl FUN_021EB0FC + cmp r0, #0 + bne _021D794A +_021D7946: + mov r0, #0 + pop {r4, r5, r6, pc} +_021D794A: + ldr r1, _021D79A0 ; =0x0220FBC0 + ldr r0, _021D79AC ; =0x00001F78 + ldr r3, [r1] + mov r6, #1 + ldr r2, [r3, r0] + lsl r2, r2, #8 + orr r2, r6 + lsl r6, r6, #0xc + str r2, [r3, r6] + add r3, r0, #0 + ldr r2, [r1] + add r3, #8 + ldrb r3, [r2, r3] + add r6, r3, #1 + add r3, r0, #0 + add r3, #8 + strb r6, [r2, r3] + ldr r3, [r1] + add r0, #8 + ldrb r0, [r3, r0] + ldr r2, _021D79B0 ; =0x00001002 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #2 + add r0, r5, #0 + add r1, r3, r1 + add r2, r4, #0 + bl MI_CpuCopy8 + ldr r1, _021D79A0 ; =0x0220FBC0 + ldr r0, _021D79A8 ; =0x00001F4C + ldr r2, [r1] + mov r3, #1 + str r3, [r2, r0] + ldr r2, [r1] + lsl r1, r3, #0xc + add r1, r2, r1 + mov r0, #0 + add r2, r4, #4 + bl FUN_021EB044 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D79A0: .word 0x0220FBC0 +_021D79A4: .word 0x00001F0C +_021D79A8: .word 0x00001F4C +_021D79AC: .word 0x00001F78 +_021D79B0: .word 0x00001002 + + thumb_func_start FUN_021D79B4 +FUN_021D79B4: ; 0x021D79B4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #8 + cmp r4, r0 + blt _021D79C6 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79C6: + bl FUN_021DF95C + cmp r0, #0 + beq _021D79D2 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79D2: + ldr r0, _021D7A68 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7A6C ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D79E8 + mov r0, #1 + bl FUN_021EB0FC + cmp r0, #0 + bne _021D79EC +_021D79E8: + mov r0, #0 + pop {r4, r5, r6, pc} +_021D79EC: + ldr r1, _021D7A68 ; =0x0220FBC0 + ldr r0, _021D7A70 ; =0x00001F78 + ldr r3, [r1] + mov r6, #1 + ldr r2, [r3, r0] + lsl r2, r2, #8 + orr r2, r6 + lsl r6, r6, #0xc + str r2, [r3, r6] + add r3, r0, #0 + ldr r2, [r1] + add r3, #8 + ldrb r3, [r2, r3] + add r6, r3, #1 + add r3, r0, #0 + add r3, #8 + strb r6, [r2, r3] + ldr r3, [r1] + add r0, #8 + ldrb r0, [r3, r0] + ldr r2, _021D7A74 ; =0x00001002 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #2 + add r0, r5, #0 + add r1, r3, r1 + add r2, r4, #0 + bl MI_CpuCopy8 + ldr r2, _021D7A68 ; =0x0220FBC0 + ldr r1, _021D7A6C ; =0x00001F4C + ldr r3, [r2] + mov r0, #1 + str r0, [r3, r1] + ldr r2, [r2] + lsl r1, r0, #0xc + add r1, r2, r1 + add r2, r4, #4 + bl FUN_021EB044 + cmp r0, #0 + bne _021D7A4C + ldr r1, _021D7A68 ; =0x0220FBC0 + mov r0, #0 + ldr r2, [r1] + ldr r1, _021D7A6C ; =0x00001F4C + str r0, [r2, r1] + pop {r4, r5, r6, pc} +_021D7A4C: + ldr r0, _021D7A68 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7A78 ; =0x00001F10 + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7A62 + lsl r2, r4, #0x10 + mov r0, #0 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D7A62: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D7A68: .word 0x0220FBC0 +_021D7A6C: .word 0x00001F4C +_021D7A70: .word 0x00001F78 +_021D7A74: .word 0x00001002 +_021D7A78: .word 0x00001F10 + + thumb_func_start FUN_021D7A7C +FUN_021D7A7C: ; 0x021D7A7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _021D7AF8 ; =0x0220FBC0 + add r4, r2, #0 + ldr r1, [r0] + ldr r0, _021D7AFC ; =0x00001EF0 + ldr r0, [r1, r0] + bl FUN_02096EB4 + cmp r0, #0 + beq _021D7AB0 + ldr r0, _021D7AF8 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7AFC ; =0x00001EF0 + ldr r0, [r1, r0] + bl thunk_FUN_02096e4c + ldr r0, _021D7AF8 ; =0x0220FBC0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020227A0 +_021D7AB0: + cmp r5, #0 + bne _021D7AE8 + ldr r0, _021D7B00 ; =FUN_021D7B70 + str r4, [sp] + str r0, [sp, #4] + ldr r2, _021D7AF8 ; =0x0220FBC0 + str r4, [sp, #8] + ldr r3, [r2] + ldr r2, _021D7AFC ; =0x00001EF0 + ldr r1, _021D7B04 ; =FUN_021D7B48 + ldr r2, [r3, r2] + ldr r3, _021D7B08 ; =FUN_021D7B6C + mov r0, #0 + bl FUN_021DFDBC + cmp r0, #0 + bne _021D7ADC + mov r0, #1 + bl FUN_020336A0 + add sp, #0xc + pop {r4, r5, pc} +_021D7ADC: + ldr r0, _021D7B0C ; =FUN_021D7BBC + mov r1, #0 + bl FUN_021E242C + add sp, #0xc + pop {r4, r5, pc} +_021D7AE8: + ldr r0, _021D7AF8 ; =0x0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D7B10 ; =0x00001F44 + str r2, [r1, r0] + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7AF8: .word 0x0220FBC0 +_021D7AFC: .word 0x00001EF0 +_021D7B00: .word FUN_021D7B70 +_021D7B04: .word FUN_021D7B48 +_021D7B08: .word FUN_021D7B6C +_021D7B0C: .word FUN_021D7BBC +_021D7B10: .word 0x00001F44 + + thumb_func_start FUN_021D7B14 +FUN_021D7B14: ; 0x021D7B14 + push {r3, lr} + ldr r0, _021D7B3C ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7B40 ; =0x00001F70 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D7B3A + bl FUN_021DFA40 + ldr r1, _021D7B3C ; =0x0220FBC0 + mov r3, #0 + ldr r2, [r1] + ldr r0, _021D7B44 ; =0x00001F60 + mvn r3, r3 + str r3, [r2, r0] + ldr r1, [r1] + mov r2, #0x11 + sub r0, #0x1c + str r2, [r1, r0] +_021D7B3A: + pop {r3, pc} + .align 2, 0 +_021D7B3C: .word 0x0220FBC0 +_021D7B40: .word 0x00001F70 +_021D7B44: .word 0x00001F60 + + thumb_func_start FUN_021D7B48 +FUN_021D7B48: ; 0x021D7B48 + cmp r0, #0 + bne _021D7B58 + ldr r0, _021D7B64 ; =0x0220FBC0 + mov r2, #4 + ldr r1, [r0] + ldr r0, _021D7B68 ; =0x00001F44 + str r2, [r1, r0] + bx lr +_021D7B58: + ldr r0, _021D7B64 ; =0x0220FBC0 + mov r2, #0xb + ldr r1, [r0] + ldr r0, _021D7B68 ; =0x00001F44 + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D7B64: .word 0x0220FBC0 +_021D7B68: .word 0x00001F44 + + thumb_func_start FUN_021D7B6C +FUN_021D7B6C: ; 0x021D7B6C + bx lr + .align 2, 0 + + thumb_func_start FUN_021D7B70 +FUN_021D7B70: ; 0x021D7B70 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D7BB8 ; =0x0220FBC0 + add r4, r1, #0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + add r1, r0, #0 + ldr r0, _021D7BB8 ; =0x0220FBC0 + ldr r2, [r0] + mov r0, #0x11 + lsl r0, r0, #8 + ldr r0, [r2, r0] + mov r2, #6 + lsl r2, r2, #6 + bl MI_CpuCopy8 + ldr r0, _021D7BB8 ; =0x0220FBC0 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #8 + ldr r0, [r1, r0] + bl FUN_020286EC + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02028664 + pop {r3, r4, r5, pc} + nop +_021D7BB8: .word 0x0220FBC0 + + thumb_func_start FUN_021D7BBC +FUN_021D7BBC: ; 0x021D7BBC + bx lr + .align 2, 0 + + thumb_func_start FUN_021D7BC0 +FUN_021D7BC0: ; 0x021D7BC0 + push {r3, lr} + ldr r0, _021D7C1C ; =0x0220FBC0 + mov r2, #7 + ldr r1, [r0] + ldr r0, _021D7C20 ; =0x00001F44 + str r2, [r1, r0] + bl FUN_021DF95C + cmp r0, #0 + bne _021D7BDA + mov r2, #1 + ldr r0, _021D7C1C ; =0x0220FBC0 + b _021D7BDE +_021D7BDA: + ldr r0, _021D7C1C ; =0x0220FBC0 + mov r2, #0 +_021D7BDE: + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + str r2, [r1, r0] + ldr r0, _021D7C1C ; =0x0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + lsl r2, r2, #0xc + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_021EAE38 + ldr r0, _021D7C1C ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7C24 ; =0x00001F50 + ldr r0, [r1, r0] + ldr r1, _021D7C28 ; =0x00002710 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_021EACF8 + ldr r1, _021D7C1C ; =0x0220FBC0 + ldr r0, _021D7C2C ; =0x00001F70 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #4 + str r3, [r1, r0] + pop {r3, pc} + .align 2, 0 +_021D7C1C: .word 0x0220FBC0 +_021D7C20: .word 0x00001F44 +_021D7C24: .word 0x00001F50 +_021D7C28: .word 0x00002710 +_021D7C2C: .word 0x00001F70 + + thumb_func_start FUN_021D7C30 +FUN_021D7C30: ; 0x021D7C30 + ldr r1, _021D7C44 ; =0x0220FBC0 + ldr r0, _021D7C48 ; =0x00001F4C + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x28 + str r3, [r1, r0] + bx lr + nop +_021D7C44: .word 0x0220FBC0 +_021D7C48: .word 0x00001F4C + + thumb_func_start FUN_021D7C4C +FUN_021D7C4C: ; 0x021D7C4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r4, r1, #0 + ldrb r5, [r4, #1] + ldrb r3, [r4] + str r2, [sp, #4] + lsl r5, r5, #8 + mov ip, r5 + ldrb r5, [r4, #3] + add r7, r3, #0 + ldr r3, _021D7D54 ; =0x0220FBC0 + lsl r6, r5, #0x18 + ldrb r5, [r4, #2] + lsl r5, r5, #0x10 + orr r5, r6 + mov r6, ip + orr r5, r6 + orr r7, r5 + ldr r6, [r3] + ldr r5, _021D7D58 ; =0x00001F70 + mov r3, #1 + str r3, [r6, r5] + lsl r3, r7, #0x18 + lsr r3, r3, #0x18 + cmp r3, #1 + bne _021D7CB4 + mov r0, #1 + add r0, #0xff + tst r0, r7 + beq _021D7C96 + ldr r0, _021D7D54 ; =0x0220FBC0 + add r5, #0xc + ldr r1, [r0] + mov r0, #1 + str r0, [r1, r5] + b _021D7CA0 +_021D7C96: + ldr r0, _021D7D54 ; =0x0220FBC0 + mov r1, #0 + ldr r0, [r0] + add r5, #0xc + str r1, [r0, r5] +_021D7CA0: + ldr r3, _021D7D54 ; =0x0220FBC0 + ldr r1, _021D7D5C ; =0x00001F84 + ldr r2, [r3] + mov r0, #0 + strh r0, [r2, r1] + ldrb r6, [r4, #2] + ldr r5, [r3] + sub r2, r1, #3 + strb r6, [r5, r2] + b _021D7CE4 +_021D7CB4: + bl FUN_021D8A54 + cmp r0, #0 + bne _021D7D4E + mov r0, #1 + lsl r0, r0, #8 + tst r0, r7 + beq _021D7CD4 + ldr r0, _021D7D54 ; =0x0220FBC0 + mov r2, #1 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021D7CD4: + ldr r0, _021D7D54 ; =0x0220FBC0 + mov r2, #0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021D7CE4: + ldr r5, [r4] + ldr r2, [r3] + add r1, r1, #4 + str r5, [r2, r1] + ldr r1, [sp, #4] + mov r2, #4 + sub r6, r1, #4 + add r1, r6, #0 + bl FUN_021D7DA8 + add r5, r0, #0 + beq _021D7D4E + add r0, r4, #4 + add r1, r5, #0 + add r2, r6, #0 + bl MI_CpuCopy8 + bl FUN_021DF95C + cmp r0, #0 + bne _021D7D2A + ldr r0, _021D7D54 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7D60 ; =0x00001F0C + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7D44 + ldr r2, [sp, #4] + ldr r0, [sp] + sub r2, r2, #4 + lsl r2, r2, #0x10 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 + b _021D7D44 +_021D7D2A: + ldr r0, _021D7D54 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7D64 ; =0x00001F10 + ldr r3, [r1, r0] + cmp r3, #0 + beq _021D7D44 + ldr r2, [sp, #4] + ldr r0, [sp] + sub r2, r2, #4 + lsl r2, r2, #0x10 + add r1, r5, #0 + lsr r2, r2, #0x10 + blx r3 +_021D7D44: + mov r0, #0 + add r1, r5, #0 + add r2, r6, #0 + bl FUN_021D7DEC +_021D7D4E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7D54: .word 0x0220FBC0 +_021D7D58: .word 0x00001F70 +_021D7D5C: .word 0x00001F84 +_021D7D60: .word 0x00001F0C +_021D7D64: .word 0x00001F10 + + thumb_func_start FUN_021D7D68 +FUN_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r0, #0 + bne _021D7D9A + bl FUN_021DF978 + cmp r0, #1 + bne _021D7D9A + ldr r0, _021D7D9C ; =0x0220FBC0 + ldr r2, [r0] + ldr r0, _021D7DA0 ; =0x00001F44 + ldr r1, [r2, r0] + cmp r1, #6 + bne _021D7D86 + mov r1, #8 + b _021D7D88 +_021D7D86: + mov r1, #0x10 +_021D7D88: + str r1, [r2, r0] + ldr r0, _021D7D9C ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7DA4 ; =0x00001F58 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D7D9A + bl FUN_021D8C6C +_021D7D9A: + pop {r3, pc} + .align 2, 0 +_021D7D9C: .word 0x0220FBC0 +_021D7DA0: .word 0x00001F44 +_021D7DA4: .word 0x00001F58 + + thumb_func_start FUN_021D7DA8 +FUN_021D7DA8: ; 0x021D7DA8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _021D7DE4 ; =0x0220FBC0 + add r2, r6, #0 + ldr r1, [r0] + ldr r0, _021D7DE8 ; =0x00001F08 + ldr r0, [r1, r0] + add r1, r5, #0 + bl tempName_NNS_FndAllocFromExpHeapEx + add r5, r0, #0 + bne _021D7DD8 + mov r0, #1 + bl FUN_020336A0 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4, r5, r6, pc} +_021D7DD8: + add r0, r4, #0 + bl OS_RestoreInterrupts + add r0, r5, #0 + pop {r4, r5, r6, pc} + nop +_021D7DE4: .word 0x0220FBC0 +_021D7DE8: .word 0x00001F08 + + thumb_func_start FUN_021D7DEC +FUN_021D7DEC: ; 0x021D7DEC + push {r3, r4, r5, lr} + add r5, r1, #0 + beq _021D7E0C + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _021D7E10 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7E14 ; =0x00001F08 + ldr r0, [r1, r0] + add r1, r5, #0 + bl FUN_020ADDF0 + add r0, r4, #0 + bl OS_RestoreInterrupts +_021D7E0C: + pop {r3, r4, r5, pc} + nop +_021D7E10: .word 0x0220FBC0 +_021D7E14: .word 0x00001F08 + + thumb_func_start FUN_021D7E18 +FUN_021D7E18: ; 0x021D7E18 + push {r4, lr} + sub sp, #8 + add r0, sp, #4 + add r1, sp, #0 + bl FUN_021DD718 + add r4, r0, #0 + beq _021D7EFA + ldr r0, [sp] + cmp r0, #7 + bhi _021D7EFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7E3A: ; jump table + .short _021D7EFA - _021D7E3A - 2 ; case 0 + .short _021D7E4A - _021D7E3A - 2 ; case 1 + .short _021D7EFA - _021D7E3A - 2 ; case 2 + .short _021D7E66 - _021D7E3A - 2 ; case 3 + .short _021D7EFA - _021D7E3A - 2 ; case 4 + .short _021D7EFA - _021D7E3A - 2 ; case 5 + .short _021D7E66 - _021D7E3A - 2 ; case 6 + .short _021D7ECE - _021D7E3A - 2 ; case 7 +_021D7E4A: + bl FUN_021DD6F0 + cmp r4, #0xa + blt _021D7E58 + add sp, #8 + add r0, r4, #0 + pop {r4, pc} +_021D7E58: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7EFA + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7E66: + ldr r0, _021D7F14 ; =0x0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D7EB2 + ldr r0, _021D7F18 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #0x11 + bhi _021D7EAE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7E82: ; jump table + .short _021D7EAA - _021D7E82 - 2 ; case 0 + .short _021D7EAA - _021D7E82 - 2 ; case 1 + .short _021D7EAA - _021D7E82 - 2 ; case 2 + .short _021D7EA6 - _021D7E82 - 2 ; case 3 + .short _021D7EA6 - _021D7E82 - 2 ; case 4 + .short _021D7EA6 - _021D7E82 - 2 ; case 5 + .short _021D7EA6 - _021D7E82 - 2 ; case 6 + .short _021D7EA6 - _021D7E82 - 2 ; case 7 + .short _021D7EA6 - _021D7E82 - 2 ; case 8 + .short _021D7EAE - _021D7E82 - 2 ; case 9 + .short _021D7EAE - _021D7E82 - 2 ; case 10 + .short _021D7EA6 - _021D7E82 - 2 ; case 11 + .short _021D7EAE - _021D7E82 - 2 ; case 12 + .short _021D7EAE - _021D7E82 - 2 ; case 13 + .short _021D7EAE - _021D7E82 - 2 ; case 14 + .short _021D7EA6 - _021D7E82 - 2 ; case 15 + .short _021D7EA6 - _021D7E82 - 2 ; case 16 + .short _021D7EA6 - _021D7E82 - 2 ; case 17 +_021D7EA6: + bl FUN_021E0200 +_021D7EAA: + bl FUN_021DDBBC +_021D7EAE: + bl FUN_021DD6F0 +_021D7EB2: + ldr r0, _021D7F14 ; =0x0220FBC0 + ldr r2, [r0] + cmp r2, #0 + beq _021D7EC0 + ldr r0, _021D7F18 ; =0x00001F44 + mov r1, #0xd + str r1, [r2, r0] +_021D7EC0: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7F10 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7ECE: + ldr r1, _021D7F14 ; =0x0220FBC0 + ldr r3, [r1] + cmp r3, #0 + beq _021D7EEC + ldr r0, _021D7F18 ; =0x00001F44 + mov r2, #0xe + str r2, [r3, r0] + ldr r1, [r1] + sub r0, #0x30 + ldr r1, [r1, r0] + cmp r1, #0 + beq _021D7EEC + ldr r0, [sp, #4] + neg r0, r0 + blx r1 +_021D7EEC: + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D7F10 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7EFA: + ldr r0, _021D7F14 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7F1C ; =0x00001F82 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021D7F0E + mov r0, #1 + add sp, #8 + mvn r0, r0 + pop {r4, pc} +_021D7F0E: + mov r0, #0 +_021D7F10: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D7F14: .word 0x0220FBC0 +_021D7F18: .word 0x00001F44 +_021D7F1C: .word 0x00001F82 + + thumb_func_start FUN_021D7F20 +FUN_021D7F20: ; 0x021D7F20 + push {r3, r4, r5, lr} + ldr r0, _021D7F80 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D7F84 ; =0x00001F4C + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D7F7E + bl FUN_021DF95C + mov r1, #1 + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_021EB0FC + cmp r0, #0 + beq _021D7F7E + ldr r4, _021D7F80 ; =0x0220FBC0 + ldr r2, _021D7F84 ; =0x00001F4C + ldr r0, [r4] + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + ldr r0, [r4] + add r1, #0x2c + ldr r1, [r0, r1] + mov r3, #2 + lsl r1, r1, #8 + add r5, r1, #0 + orr r5, r3 + lsl r1, r3, #0xb + str r5, [r0, r1] + add r0, r2, #4 + ldr r1, [r4] + lsl r2, r3, #0xb + ldr r0, [r1, r0] + add r1, r1, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r2, #4 + bl FUN_021EB044 + add r0, r4, #0 + ldr r1, [r0] + ldr r0, _021D7F88 ; =0x00001F74 + mov r2, #0 + str r2, [r1, r0] +_021D7F7E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7F80: .word 0x0220FBC0 +_021D7F84: .word 0x00001F4C +_021D7F88: .word 0x00001F74 + + thumb_func_start FUN_021D7F8C +FUN_021D7F8C: ; 0x021D7F8C + push {r3, r4, r5, lr} + bl FUN_021DFF74 + bl FUN_021D83F0 + ldr r0, _021D800C ; =0x0220FBC0 + ldr r1, _021D8010 ; =0x00001F58 + ldr r2, [r0] + ldr r0, [r2, r1] + cmp r0, #0 + beq _021D7FC2 + add r0, r1, #0 + add r0, #0x20 + ldr r0, [r2, r0] + cmp r0, #1 + bne _021D7FBA + add r1, #0x24 + ldr r0, [r2, r1] + cmp r0, #1 + bne _021D7FBA + bl FUN_021D8D04 + b _021D7FBE +_021D7FBA: + bl FUN_021D8CF0 +_021D7FBE: + bl FUN_021D8944 +_021D7FC2: + ldr r4, _021D800C ; =0x0220FBC0 + ldr r3, _021D8014 ; =0x00001F44 + ldr r1, [r4] + ldr r0, [r1, r3] + cmp r0, #0x11 + bne _021D7FD2 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7FD2: + cmp r0, #0x10 + bne _021D7FDA + mov r0, #2 + pop {r3, r4, r5, pc} +_021D7FDA: + cmp r0, #7 + bne _021D8004 + add r2, r3, #0 + add r2, #0x30 + add r0, r3, #0 + ldr r2, [r1, r2] + add r0, #0x30 + add r5, r2, #1 + add r2, r3, #0 + ldr r0, [r1, r0] + add r2, #0x30 + str r5, [r1, r2] + cmp r0, #0x78 + blt _021D8004 + ldr r0, [r4] + add r3, #8 + ldr r0, [r0, r3] + cmp r0, #0 + bne _021D8004 + bl FUN_021D7F20 +_021D8004: + bl FUN_021D7E18 + pop {r3, r4, r5, pc} + nop +_021D800C: .word 0x0220FBC0 +_021D8010: .word 0x00001F58 +_021D8014: .word 0x00001F44 + + thumb_func_start FUN_021D8018 +FUN_021D8018: ; 0x021D8018 + push {r3, lr} + ldr r0, _021D803C ; =0x0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D8034 + ldr r0, _021D8040 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #7 + beq _021D802E + cmp r0, #0xf + bne _021D8034 +_021D802E: + bl FUN_021DF95C + pop {r3, pc} +_021D8034: + mov r0, #0 + mvn r0, r0 + pop {r3, pc} + nop +_021D803C: .word 0x0220FBC0 +_021D8040: .word 0x00001F44 + + thumb_func_start FUN_021D8044 +FUN_021D8044: ; 0x021D8044 + ldr r0, _021D8050 ; =0x0220FBC0 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D8054 ; =0x00001F58 + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8050: .word 0x0220FBC0 +_021D8054: .word 0x00001F58 + + thumb_func_start FUN_021D8058 +FUN_021D8058: ; 0x021D8058 + push {r3, lr} + ldr r0, _021D80CC ; =0x0220FBC0 + ldr r2, _021D80D0 ; =0x00001F6C + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #5 + bhi _021D80AE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8072: ; jump table + .short _021D80AE - _021D8072 - 2 ; case 0 + .short _021D80AE - _021D8072 - 2 ; case 1 + .short _021D807E - _021D8072 - 2 ; case 2 + .short _021D808A - _021D8072 - 2 ; case 3 + .short _021D8096 - _021D8072 - 2 ; case 4 + .short _021D80A2 - _021D8072 - 2 ; case 5 +_021D807E: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #1 + bl FUN_021D8A7C + b _021D80B8 +_021D808A: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #2 + bl FUN_021D8A7C + b _021D80B8 +_021D8096: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #3 + bl FUN_021D8A7C + b _021D80B8 +_021D80A2: + sub r2, #0x18 + ldr r0, [r0, r2] + mov r1, #4 + bl FUN_021D8A7C + b _021D80B8 +_021D80AE: + ldr r1, _021D80D4 ; =0x00001F54 + ldr r0, [r0, r1] + mov r1, #4 + bl FUN_021D8A7C +_021D80B8: + ldr r0, _021D80D8 ; =FUN_021D8044 + bl FUN_021D8C58 + ldr r0, _021D80CC ; =0x0220FBC0 + mov r2, #1 + ldr r1, [r0] + ldr r0, _021D80DC ; =0x00001F58 + str r2, [r1, r0] + pop {r3, pc} + nop +_021D80CC: .word 0x0220FBC0 +_021D80D0: .word 0x00001F6C +_021D80D4: .word 0x00001F54 +_021D80D8: .word FUN_021D8044 +_021D80DC: .word 0x00001F58 + + thumb_func_start FUN_021D80E0 +FUN_021D80E0: ; 0x021D80E0 + push {r3, r4, r5, lr} + mov r1, #0x64 + add r5, r0, #0 + bl _s32_div_f + mov r1, #0xfa + add r4, r0, #0 + add r0, r5, #0 + lsl r1, r1, #2 + bl _s32_div_f + ldr r2, _021D8270 ; =0x00004E84 + cmp r5, r2 + bne _021D8100 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8100: + add r1, r2, #2 + cmp r5, r1 + blt _021D8110 + add r1, r2, #7 + cmp r5, r1 + bgt _021D8110 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8110: + ldr r1, _021D8274 ; =0x00004E8D + cmp r5, r1 + bne _021D811A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D811A: + add r1, r1, #2 + cmp r5, r1 + blt _021D812A + ldr r1, _021D8278 ; =0x00005207 + cmp r5, r1 + bgt _021D812A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D812A: + ldr r1, _021D827C ; =0x0000CB24 + cmp r5, r1 + blt _021D813A + add r1, #0x5f + cmp r5, r1 + bgt _021D813A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D813A: + ldr r1, _021D8280 ; =0x0000CB88 + cmp r5, r1 + blt _021D814A + add r1, #0x5f + cmp r5, r1 + bgt _021D814A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D814A: + ldr r1, _021D8284 ; =0x0000CBEC + cmp r5, r1 + blt _021D815A + add r1, #0x5f + cmp r5, r1 + bgt _021D815A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D815A: + ldr r1, _021D8288 ; =0x0000020B + cmp r4, r1 + bne _021D8164 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8164: + add r2, r1, #7 + cmp r4, r2 + bne _021D816E + mov r0, #0 + pop {r3, r4, r5, pc} +_021D816E: + add r2, r1, #0 + add r2, #8 + cmp r4, r2 + bne _021D817A + mov r0, #0 + pop {r3, r4, r5, pc} +_021D817A: + add r2, r1, #0 + add r2, #9 + cmp r4, r2 + bne _021D8186 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8186: + ldr r3, _021D828C ; =0x00004E85 + cmp r5, r3 + bne _021D8190 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8190: + cmp r0, #0x17 + bne _021D8198 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8198: + add r2, r3, #7 + cmp r5, r2 + bne _021D81A2 + mov r0, #2 + pop {r3, r4, r5, pc} +_021D81A2: + add r3, #9 + cmp r5, r3 + bne _021D81AC + mov r0, #3 + pop {r3, r4, r5, pc} +_021D81AC: + add r2, r1, #0 + sub r2, #0xb + cmp r4, r2 + bne _021D81B8 + mov r0, #4 + pop {r3, r4, r5, pc} +_021D81B8: + sub r1, #0x17 + cmp r4, r1 + bne _021D81C2 + mov r0, #5 + pop {r3, r4, r5, pc} +_021D81C2: + ldr r1, _021D8290 ; =0x0000C738 + cmp r5, r1 + blt _021D81D2 + add r1, #0x66 + cmp r5, r1 + bgt _021D81D2 + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81D2: + ldr r1, _021D8294 ; =0x0000C7A0 + cmp r5, r1 + blt _021D81E2 + add r1, #0x5f + cmp r5, r1 + bgt _021D81E2 + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81E2: + ldr r1, _021D8298 ; =0x00000201 + cmp r4, r1 + bne _021D81EC + mov r0, #6 + pop {r3, r4, r5, pc} +_021D81EC: + ldr r1, _021D829C ; =0x0000C79F + cmp r5, r1 + bne _021D81F6 + mov r0, #7 + pop {r3, r4, r5, pc} +_021D81F6: + ldr r1, _021D82A0 ; =0x0000CB20 + cmp r5, r1 + blt _021D8206 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8206 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8206: + ldr r1, _021D82A4 ; =0x0000CB84 + cmp r5, r1 + blt _021D8216 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8216 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8216: + ldr r1, _021D82A8 ; =0x0000CBE8 + cmp r5, r1 + blt _021D8226 + add r1, r1, #3 + cmp r5, r1 + bgt _021D8226 + mov r0, #8 + pop {r3, r4, r5, pc} +_021D8226: + ldr r1, _021D82AC ; =0x00013A2E + cmp r5, r1 + bne _021D8230 + mov r0, #9 + pop {r3, r4, r5, pc} +_021D8230: + cmp r0, #0x18 + bne _021D8238 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8238: + cmp r0, #0x19 + bne _021D8240 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8240: + cmp r0, #0x1f + bne _021D8248 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8248: + cmp r0, #0x36 + bne _021D8250 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8250: + ldr r0, _021D82B0 ; =0x0000EA60 + cmp r5, r0 + blt _021D8260 + ldr r0, _021D82B4 ; =0x0001869F + cmp r5, r0 + bgt _021D8260 + mov r0, #0xa + pop {r3, r4, r5, pc} +_021D8260: + ldr r0, _021D82B8 ; =0x00002710 + cmp r5, r0 + bge _021D826A + mov r0, #0xb + pop {r3, r4, r5, pc} +_021D826A: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8270: .word 0x00004E84 +_021D8274: .word 0x00004E8D +_021D8278: .word 0x00005207 +_021D827C: .word 0x0000CB24 +_021D8280: .word 0x0000CB88 +_021D8284: .word 0x0000CBEC +_021D8288: .word 0x0000020B +_021D828C: .word 0x00004E85 +_021D8290: .word 0x0000C738 +_021D8294: .word 0x0000C7A0 +_021D8298: .word 0x00000201 +_021D829C: .word 0x0000C79F +_021D82A0: .word 0x0000CB20 +_021D82A4: .word 0x0000CB84 +_021D82A8: .word 0x0000CBE8 +_021D82AC: .word 0x00013A2E +_021D82B0: .word 0x0000EA60 +_021D82B4: .word 0x0001869F +_021D82B8: .word 0x00002710 + + thumb_func_start FUN_021D82BC +FUN_021D82BC: ; 0x021D82BC + push {r3, lr} + cmp r0, #0 + bne _021D8346 + ldr r0, _021D8364 ; =0x0220FBC0 + ldr r2, _021D8368 ; =0x00001F44 + ldr r0, [r0] + ldr r1, [r0, r2] + cmp r1, #0x11 + bhi _021D835E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D82DA: ; jump table + .short _021D835E - _021D82DA - 2 ; case 0 + .short _021D835E - _021D82DA - 2 ; case 1 + .short _021D835E - _021D82DA - 2 ; case 2 + .short _021D835E - _021D82DA - 2 ; case 3 + .short _021D8342 - _021D82DA - 2 ; case 4 + .short _021D82FE - _021D82DA - 2 ; case 5 + .short _021D835E - _021D82DA - 2 ; case 6 + .short _021D82FE - _021D82DA - 2 ; case 7 + .short _021D835E - _021D82DA - 2 ; case 8 + .short _021D835E - _021D82DA - 2 ; case 9 + .short _021D835E - _021D82DA - 2 ; case 10 + .short _021D835E - _021D82DA - 2 ; case 11 + .short _021D835E - _021D82DA - 2 ; case 12 + .short _021D8342 - _021D82DA - 2 ; case 13 + .short _021D835E - _021D82DA - 2 ; case 14 + .short _021D8328 - _021D82DA - 2 ; case 15 + .short _021D8342 - _021D82DA - 2 ; case 16 + .short _021D8342 - _021D82DA - 2 ; case 17 +_021D82FE: + add r2, #0x14 + ldr r0, [r0, r2] + cmp r0, #0 + beq _021D8316 + bl FUN_021D8C08 + ldr r0, _021D8364 ; =0x0220FBC0 + mov r2, #0xf + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + b _021D835E +_021D8316: + bl FUN_021DFA40 + ldr r0, _021D8364 ; =0x0220FBC0 + mov r2, #0x10 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + mov r0, #1 + pop {r3, pc} +_021D8328: + add r2, #0x14 + ldr r0, [r0, r2] + cmp r0, #0 + bne _021D835E + bl FUN_021DFA40 + ldr r0, _021D8364 ; =0x0220FBC0 + mov r2, #0x10 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + str r2, [r1, r0] + mov r0, #1 + pop {r3, pc} +_021D8342: + mov r0, #1 + pop {r3, pc} +_021D8346: + ldr r0, _021D8364 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D8368 ; =0x00001F44 + ldr r0, [r1, r0] + cmp r0, #4 + beq _021D835A + cmp r0, #0x10 + beq _021D835A + cmp r0, #0x11 + bne _021D835E +_021D835A: + mov r0, #1 + pop {r3, pc} +_021D835E: + mov r0, #0 + pop {r3, pc} + nop +_021D8364: .word 0x0220FBC0 +_021D8368: .word 0x00001F44 + + thumb_func_start FUN_021D836C +FUN_021D836C: ; 0x021D836C + push {r3, r4} + ldr r2, _021D83A0 ; =0x0220FBC0 + ldr r1, _021D83A4 ; =0x00001F44 + ldr r3, [r2] + ldr r0, [r3, r1] + sub r0, #0x10 + cmp r0, #1 + bhi _021D8398 + mov r4, #0 + add r0, r1, #0 + mvn r4, r4 + add r0, #0xc + str r4, [r3, r0] + ldr r0, [r2] + mov r3, #4 + str r3, [r0, r1] + ldr r0, [r2] + add r1, #0x1c + str r4, [r0, r1] + mov r0, #1 + pop {r3, r4} + bx lr +_021D8398: + mov r0, #0 + pop {r3, r4} + bx lr + nop +_021D83A0: .word 0x0220FBC0 +_021D83A4: .word 0x00001F44 + + thumb_func_start FUN_021D83A8 +FUN_021D83A8: ; 0x021D83A8 + ldr r1, _021D83B8 ; =0x0220FBC0 + ldr r2, [r1] + cmp r2, #0 + beq _021D83B4 + ldr r1, _021D83BC ; =0x00001F14 + str r0, [r2, r1] +_021D83B4: + bx lr + nop +_021D83B8: .word 0x0220FBC0 +_021D83BC: .word 0x00001F14 + + thumb_func_start FUN_021D83C0 +FUN_021D83C0: ; 0x021D83C0 + push {r3, lr} + bl FUN_021E0200 + bl FUN_021DDBBC + bl FUN_021D8C6C + bl FUN_021D7660 + pop {r3, pc} + + thumb_func_start FUN_021D83D4 +FUN_021D83D4: ; 0x021D83D4 + push {r3, r4} + ldr r3, _021D83E8 ; =0x0220FBC0 + ldr r2, _021D83EC ; =0x00001F38 + ldr r4, [r3] + str r0, [r4, r2] + ldr r3, [r3] + add r0, r2, #4 + str r1, [r3, r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D83E8: .word 0x0220FBC0 +_021D83EC: .word 0x00001F38 + + thumb_func_start FUN_021D83F0 +FUN_021D83F0: ; 0x021D83F0 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _021D8468 ; =0x0220FBC0 + ldr r0, _021D846C ; =0x00001F38 + ldr r1, [r6] + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8464 + mov r7, #0 +_021D8400: + mov r1, #0x7d + ldr r0, [r6] + lsl r1, r1, #6 + ldr r2, [r0, r1] + mov r1, #0x1f + add r5, r2, #0 + and r5, r1 + mov r1, #0xc + add r4, r5, #0 + mul r4, r1 + mov r1, #0x11 + lsl r1, r1, #8 + ldr r0, [r0, r1] + add r0, r0, r4 + bl FUN_02097490 + cmp r0, #0 + beq _021D844A + mov r0, #0x11 + ldr r2, [r6] + ldr r1, _021D846C ; =0x00001F38 + lsl r0, r0, #8 + ldr r0, [r2, r0] + ldr r3, _021D8470 ; =0x00001F3C + ldr r1, [r2, r1] + ldr r2, [r2, r3] + add r0, r0, r4 + add r3, r2, #0 + mul r3, r5 + add r1, r1, r3 + add r2, sp, #0 + bl FUN_021E2578 + ldr r1, [r6] + add r2, r1, r5 + ldr r1, _021D8474 ; =0x00001F18 + strb r0, [r2, r1] +_021D844A: + mov r1, #0x7d + ldr r0, [r6] + lsl r1, r1, #6 + ldr r1, [r0, r1] + add r7, r7, #1 + add r2, r1, #1 + mov r1, #0x1f + and r2, r1 + mov r1, #0x7d + lsl r1, r1, #6 + str r2, [r0, r1] + cmp r7, #4 + blt _021D8400 +_021D8464: + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8468: .word 0x0220FBC0 +_021D846C: .word 0x00001F38 +_021D8470: .word 0x00001F3C +_021D8474: .word 0x00001F18 + + thumb_func_start FUN_021D8478 +FUN_021D8478: ; 0x021D8478 + ldr r3, _021D847C ; =FUN_021E2454 + bx r3 + .align 2, 0 +_021D847C: .word FUN_021E2454 + + thumb_func_start FUN_021D8480 +FUN_021D8480: ; 0x021D8480 + ldr r1, _021D848C ; =0x0220FBC0 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _021D8490 ; =0x00001F18 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_021D848C: .word 0x0220FBC0 +_021D8490: .word 0x00001F18 + + thumb_func_start FUN_021D8494 +FUN_021D8494: ; 0x021D8494 + push {r3, lr} + ldr r1, _021D8510 ; =0x0220FBC0 + ldr r3, [r1] + ldr r1, _021D8514 ; =0x00001F44 + ldr r2, [r3, r1] + cmp r2, #4 + beq _021D84A6 + mov r0, #0 + pop {r3, pc} +_021D84A6: + add r1, #0x18 + str r0, [r3, r1] + cmp r0, #0 + bge _021D84C2 + ldr r1, _021D8518 ; =FUN_021D8558 + mov r2, #0 + ldr r3, _021D851C ; =FUN_021D85A0 + mov r0, #2 + str r2, [sp] + bl FUN_021DFD18 + mov r2, #1 + ldr r0, _021D8510 ; =0x0220FBC0 + b _021D84D2 +_021D84C2: + ldr r1, _021D8520 ; =FUN_021D8590 + mov r2, #0 + ldr r3, _021D851C ; =FUN_021D85A0 + str r2, [sp] + bl FUN_021DFB20 + ldr r0, _021D8510 ; =0x0220FBC0 + mov r2, #2 +_021D84D2: + ldr r1, [r0] + ldr r0, _021D8524 ; =0x00001F48 + str r2, [r1, r0] + ldr r0, _021D8510 ; =0x0220FBC0 + mov r2, #5 + ldr r1, [r0] + ldr r0, _021D8514 ; =0x00001F44 + str r2, [r1, r0] + ldr r0, _021D8528 ; =FUN_021D7C30 + bl FUN_021EAE18 + ldr r0, _021D852C ; =FUN_021D7C4C + bl FUN_021EADF8 + ldr r0, _021D8530 ; =FUN_021D7D68 + mov r1, #0 + bl FUN_021DFAF8 + ldr r0, _021D8534 ; =FUN_021D7B14 + bl FUN_021EADD8 + ldr r1, _021D8510 ; =0x0220FBC0 + ldr r0, _021D8538 ; =0x00001F4C + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x3c + str r3, [r1, r0] + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_021D8510: .word 0x0220FBC0 +_021D8514: .word 0x00001F44 +_021D8518: .word FUN_021D8558 +_021D851C: .word FUN_021D85A0 +_021D8520: .word FUN_021D8590 +_021D8524: .word 0x00001F48 +_021D8528: .word FUN_021D7C30 +_021D852C: .word FUN_021D7C4C +_021D8530: .word FUN_021D7D68 +_021D8534: .word FUN_021D7B14 +_021D8538: .word 0x00001F4C + + thumb_func_start FUN_021D853C +FUN_021D853C: ; 0x021D853C + ldr r0, _021D8550 ; =0x0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D854A + ldr r0, _021D8554 ; =0x00001F5C + ldr r0, [r1, r0] + bx lr +_021D854A: + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 +_021D8550: .word 0x0220FBC0 +_021D8554: .word 0x00001F5C + + thumb_func_start FUN_021D8558 +FUN_021D8558: ; 0x021D8558 + push {r3, lr} + cmp r0, #0 + bne _021D8582 + cmp r1, #0 + bne _021D8572 + ldr r0, _021D8584 ; =0x0220FBC0 + ldr r2, [sp, #8] + ldr r1, [r0] + ldr r0, _021D8588 ; =0x00001F5C + str r2, [r1, r0] + bl FUN_021D7BC0 + pop {r3, pc} +_021D8572: + cmp r2, #0 + bne _021D8582 + ldr r0, _021D8584 ; =0x0220FBC0 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021D858C ; =0x00001F60 + mvn r2, r2 + str r2, [r1, r0] +_021D8582: + pop {r3, pc} + .align 2, 0 +_021D8584: .word 0x0220FBC0 +_021D8588: .word 0x00001F5C +_021D858C: .word 0x00001F60 + + thumb_func_start FUN_021D8590 +FUN_021D8590: ; 0x021D8590 + push {r3, lr} + cmp r0, #0 + bne _021D859E + cmp r1, #0 + bne _021D859E + bl FUN_021D7BC0 +_021D859E: + pop {r3, pc} + + thumb_func_start FUN_021D85A0 +FUN_021D85A0: ; 0x021D85A0 + ldr r1, _021D85AC ; =0x0220FBC0 + ldr r2, [r1] + ldr r1, _021D85B0 ; =0x00001F60 + str r0, [r2, r1] + bx lr + nop +_021D85AC: .word 0x0220FBC0 +_021D85B0: .word 0x00001F60 + + thumb_func_start FUN_021D85B4 +FUN_021D85B4: ; 0x021D85B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r0, _021D8614 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + bl FUN_02096F80 + cmp r0, #0 + bne _021D85D8 + ldr r0, _021D8614 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + add r1, sp, #0xc + bl FUN_02096CCC + b _021D85E6 +_021D85D8: + ldr r0, _021D8614 ; =0x0220FBC0 + ldr r1, [r0] + ldr r0, _021D8618 ; =0x00001EF0 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02096CCC +_021D85E6: + mov r4, #0 + mov r7, #0x11 + ldr r6, _021D8614 ; =0x0220FBC0 + add r5, r4, #0 + lsl r7, r7, #8 +_021D85F0: + mov r0, #0x11 + ldr r1, [r6] + lsl r0, r0, #8 + ldr r0, [r1, r0] + add r0, r0, r5 + bl FUN_02097484 + ldr r0, [r6] + ldr r0, [r0, r7] + add r0, r0, r5 + bl FUN_02097490 + add r4, r4, #1 + add r5, #0xc + cmp r4, #0x20 + blt _021D85F0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8614: .word 0x0220FBC0 +_021D8618: .word 0x00001EF0 + + thumb_func_start FUN_021D861C +FUN_021D861C: ; 0x021D861C + ldr r3, _021D8620 ; =FUN_021D8CC8 + bx r3 + .align 2, 0 +_021D8620: .word FUN_021D8CC8 + + thumb_func_start FUN_021D8624 +FUN_021D8624: ; 0x021D8624 + ldr r0, _021D8638 ; =0x0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D8632 + ldr r0, _021D863C ; =0x00001F68 + ldr r0, [r1, r0] + bx lr +_021D8632: + mov r0, #0 + bx lr + nop +_021D8638: .word 0x0220FBC0 +_021D863C: .word 0x00001F68 + + thumb_func_start FUN_021D8640 +FUN_021D8640: ; 0x021D8640 + ldr r0, _021D8654 ; =0x0220FBC0 + ldr r1, [r0] + cmp r1, #0 + beq _021D864E + ldr r0, _021D8658 ; =0x00001F60 + ldr r0, [r1, r0] + bx lr +_021D864E: + mov r0, #0 + bx lr + nop +_021D8654: .word 0x0220FBC0 +_021D8658: .word 0x00001F60 + + thumb_func_start FUN_021D865C +FUN_021D865C: ; 0x021D865C + ldr r0, _021D8670 ; =0x0220FBC0 + ldr r2, [r0] + cmp r2, #0 + beq _021D866C + mov r1, #0 + ldr r0, _021D8674 ; =0x00001F60 + mvn r1, r1 + str r1, [r2, r0] +_021D866C: + bx lr + nop +_021D8670: .word 0x0220FBC0 +_021D8674: .word 0x00001F60 + + thumb_func_start FUN_021D8678 +FUN_021D8678: ; 0x021D8678 + ldr r1, _021D8684 ; =0x0220FBC0 + ldr r2, [r1] + ldr r1, _021D8688 ; =0x00001F68 + str r0, [r2, r1] + bx lr + nop +_021D8684: .word 0x0220FBC0 +_021D8688: .word 0x00001F68 + + thumb_func_start FUN_021D868C +FUN_021D868C: ; 0x021D868C + push {r3, r4, r5, lr} + bl MIC_Init + bl PM_Init + mov r0, #1 + bl PM_SetAmp + mov r0, #3 + bl PM_SetAmpGain + ldr r0, _021D8718 ; =0x0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r3, _021D871C ; =0x00003584 + add r5, r2, #0 + str r2, [r1, r3] + add r1, r3, #0 + ldr r4, [r0, #4] + add r1, #0xc + str r2, [r4, r1] + ldr r4, [r0, #4] + add r1, r3, #4 + str r2, [r4, r1] + add r1, r3, #0 + ldr r4, [r0, #4] + add r1, #8 + str r2, [r4, r1] + ldr r1, [r0, #4] + add r3, #0x10 + str r2, [r1, r3] + ldr r3, _021D8720 ; =0x00003598 + add r1, r2, #0 +_021D86CE: + ldr r4, [r0, #4] + add r2, r2, #1 + add r4, r4, r5 + add r5, r5, #2 + strh r1, [r4, r3] + cmp r2, #0x10 + blt _021D86CE + ldr r0, _021D8718 ; =0x0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8724 ; =0x000035B8 + str r1, [r2, r0] + mov r0, #1 + bl FUN_020AA770 + bl FUN_020C01D0 + ldr r0, _021D8718 ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8728 ; =0x00003504 + add r0, r1, r0 + bl FUN_020C16FC + ldr r1, _021D8718 ; =0x0220FBC8 + mov r0, #0 + ldr r2, [r1, #4] + mov r1, #0xb1 + lsl r1, r1, #6 + add r1, r2, r1 + mov r2, #0x22 + lsl r2, r2, #6 + bl MIi_CpuClearFast + ldr r0, _021D8718 ; =0x0220FBC8 + mov r1, #0 + str r1, [r0, #8] + pop {r3, r4, r5, pc} + nop +_021D8718: .word 0x0220FBC8 +_021D871C: .word 0x00003584 +_021D8720: .word 0x00003598 +_021D8724: .word 0x000035B8 +_021D8728: .word 0x00003504 + + thumb_func_start FUN_021D872C +FUN_021D872C: ; 0x021D872C + bx lr + .align 2, 0 + + thumb_func_start FUN_021D8730 +FUN_021D8730: ; 0x021D8730 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r3, #0 + ldr r4, [sp, #0x14] + cmp r0, #0 + bne _021D8748 + ldr r0, [r6] + mov r1, #0 + add r2, r5, #0 + bl MI_CpuFill8 + pop {r4, r5, r6, pc} +_021D8748: + ldr r0, _021D87B8 ; =0x0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D87BC ; =0x00003565 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _021D876A + add r0, r0, #3 + add r0, r2, r0 + ldr r1, _021D87C0 ; =FUN_021D872C + mov r2, #0 + bl MIC_StartAutoSamplingAsync + ldr r0, _021D87B8 ; =0x0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D87BC ; =0x00003565 + strb r2, [r1, r0] +_021D876A: + bl MIC_GetLastSamplingAddress + sub r0, r0, r4 + cmp r0, r5 + bhs _021D8776 + add r4, r4, r5 +_021D8776: + ldr r0, _021D87C4 ; =0x027FFFA8 + ldrh r1, [r0] + mov r0, #2 + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + beq _021D878E + ldr r0, _021D87B8 ; =0x0220FBC8 + ldr r1, [r0, #4] + mov r0, #0xb1 + lsl r0, r0, #6 + add r4, r1, r0 +_021D878E: + ldr r0, _021D87B8 ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D87C8 ; =0x000034FC + ldr r0, [r1, r0] + cmp r0, #0 + bne _021D87A2 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020AABDC +_021D87A2: + ldr r0, [r6] + add r1, r5, #0 + mov r2, #0 + bl FUN_020AA824 + ldr r0, _021D87B8 ; =0x0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D87CC ; =0x00003564 + strb r2, [r1, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_021D87B8: .word 0x0220FBC8 +_021D87BC: .word 0x00003565 +_021D87C0: .word FUN_021D872C +_021D87C4: .word 0x027FFFA8 +_021D87C8: .word 0x000034FC +_021D87CC: .word 0x00003564 + + thumb_func_start FUN_021D87D0 +FUN_021D87D0: ; 0x021D87D0 + push {r4, lr} + ldr r1, _021D8810 ; =0x0220FBC8 + ldr r2, [r1, #4] + ldr r1, _021D8814 ; =0x00003560 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021D880A + bl FUN_020ACD54 + add r4, r0, #0 + bne _021D87EA + mov r0, #0 + pop {r4, pc} +_021D87EA: + mov r1, #0 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D87FE + add r0, r4, #0 + bl FUN_020ACC84 + mov r0, #0 + pop {r4, pc} +_021D87FE: + ldr r0, _021D8810 ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8814 ; =0x00003560 + str r4, [r1, r0] + mov r0, #1 + pop {r4, pc} +_021D880A: + mov r0, #0 + pop {r4, pc} + nop +_021D8810: .word 0x0220FBC8 +_021D8814: .word 0x00003560 + + thumb_func_start FUN_021D8818 +FUN_021D8818: ; 0x021D8818 + push {r3, lr} + ldr r0, _021D8858 ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D885C ; =0x00003560 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8852 + ldr r1, [r0, #0xc] + cmp r1, #4 + bne _021D8852 + mov r1, #0 + bl FUN_020ACAB0 + cmp r0, #0 + beq _021D883A + mov r0, #0 + pop {r3, pc} +_021D883A: + ldr r0, _021D8858 ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D885C ; =0x00003560 + ldr r0, [r1, r0] + bl FUN_020AADCC + cmp r0, #0 + beq _021D884E + mov r0, #1 + pop {r3, pc} +_021D884E: + mov r0, #0 + pop {r3, pc} +_021D8852: + mov r0, #0 + pop {r3, pc} + nop +_021D8858: .word 0x0220FBC8 +_021D885C: .word 0x00003560 + + thumb_func_start FUN_021D8860 +FUN_021D8860: ; 0x021D8860 + push {r4, lr} + add r4, r2, #0 + cmp r1, #0xc + bhi _021D8902 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8874: ; jump table + .short _021D8902 - _021D8874 - 2 ; case 0 + .short _021D888E - _021D8874 - 2 ; case 1 + .short _021D88F4 - _021D8874 - 2 ; case 2 + .short _021D88FC - _021D8874 - 2 ; case 3 + .short _021D88CE - _021D8874 - 2 ; case 4 + .short _021D8902 - _021D8874 - 2 ; case 5 + .short _021D8902 - _021D8874 - 2 ; case 6 + .short _021D88DE - _021D8874 - 2 ; case 7 + .short _021D88AE - _021D8874 - 2 ; case 8 + .short _021D88C2 - _021D8874 - 2 ; case 9 + .short _021D8902 - _021D8874 - 2 ; case 10 + .short _021D88FC - _021D8874 - 2 ; case 11 + .short _021D88FC - _021D8874 - 2 ; case 12 +_021D888E: + ldr r0, _021D8904 ; =0x0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8908 ; =0x00003560 + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D88AA + add r0, r4, #0 + mov r1, #3 + bl FUN_020ACAB0 + add r0, r4, #0 + bl FUN_020ACC84 + pop {r4, pc} +_021D88AA: + str r4, [r2, r0] + pop {r4, pc} +_021D88AE: + add r0, r4, #0 + mov r1, #0 + bl FUN_020ACAB0 + add r0, r4, #0 + bl FUN_021D8910 + bl FUN_021D8C6C + pop {r4, pc} +_021D88C2: + add r0, r4, #0 + bl FUN_021D8910 + bl FUN_021D8C6C + pop {r4, pc} +_021D88CE: + add r0, r4, #0 + mov r1, #4 + bl FUN_020ACAB0 + add r0, r4, #0 + bl FUN_021D8910 + pop {r4, pc} +_021D88DE: + add r0, r4, #0 + bl FUN_020AADCC + cmp r0, #0 + beq _021D8902 + ldr r0, _021D8904 ; =0x0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D890C ; =0x000034F8 + str r2, [r1, r0] + pop {r4, pc} +_021D88F4: + add r0, r4, #0 + bl FUN_021D8910 + pop {r4, pc} +_021D88FC: + add r0, r4, #0 + bl FUN_021D8910 +_021D8902: + pop {r4, pc} + .align 2, 0 +_021D8904: .word 0x0220FBC8 +_021D8908: .word 0x00003560 +_021D890C: .word 0x000034F8 + + thumb_func_start FUN_021D8910 +FUN_021D8910: ; 0x021D8910 + push {r4, lr} + ldr r1, _021D893C ; =0x0220FBC8 + add r4, r0, #0 + ldr r2, [r1, #4] + ldr r1, _021D8940 ; =0x00003560 + ldr r1, [r2, r1] + cmp r4, r1 + bne _021D8936 + bl FUN_020AACFC + add r0, r4, #0 + bl FUN_020ACC84 + ldr r0, _021D893C ; =0x0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8940 ; =0x00003560 + str r2, [r1, r0] + pop {r4, pc} +_021D8936: + bl FUN_020ACC84 + pop {r4, pc} + .align 2, 0 +_021D893C: .word 0x0220FBC8 +_021D8940: .word 0x00003560 + + thumb_func_start FUN_021D8944 +FUN_021D8944: ; 0x021D8944 + push {r4, r5, r6, lr} + bl OS_GetTick + add r4, r0, #0 + ldr r0, _021D8A3C ; =0x0220FBC8 + add r5, r1, #0 + ldr r0, [r0, #0xc] + sub r1, r4, r0 + mov r0, #0xfa + lsl r0, r0, #8 + mul r0, r1 + ldr r1, _021D8A40 ; =0x000082EA + bl _u32_div_f + ldr r1, _021D8A3C ; =0x0220FBC8 + ldr r3, _021D8A44 ; =0x0000411A + ldr r2, [r1, #8] + sub r0, r0, r3 + add r2, r2, r0 + ldr r0, _021D8A48 ; =0xFFFFD8F0 + str r2, [r1, #8] + cmp r2, r0 + bge _021D8976 + mov r0, #0 + str r0, [r1, #8] +_021D8976: + ldr r0, _021D8A3C ; =0x0220FBC8 + str r4, [r0, #0xc] + str r5, [r0, #0x10] + bl FUN_020AD8A8 + ldr r4, _021D8A3C ; =0x0220FBC8 + ldr r0, _021D8A44 ; =0x0000411A + ldr r1, [r4, #8] + cmp r1, r0 + blt _021D899C + add r6, r0, #0 + add r5, r0, #0 +_021D898E: + bl FUN_020AD8A8 + ldr r0, [r4, #8] + sub r0, r0, r6 + str r0, [r4, #8] + cmp r0, r5 + bge _021D898E +_021D899C: + ldr r0, _021D8A3C ; =0x0220FBC8 + ldr r2, [r0, #4] + ldr r0, _021D8A4C ; =0x0000358C + ldr r1, [r2, r0] + cmp r1, #0 + beq _021D89EC + sub r0, r0, #4 + ldr r0, [r2, r0] + cmp r0, #3 + bhi _021D89E2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D89BC: ; jump table + .short _021D89C4 - _021D89BC - 2 ; case 0 + .short _021D89CC - _021D89BC - 2 ; case 1 + .short _021D89D4 - _021D89BC - 2 ; case 2 + .short _021D89DC - _021D89BC - 2 ; case 3 +_021D89C4: + mov r0, #3 + bl PM_SetAmpGain + b _021D89E2 +_021D89CC: + mov r0, #2 + bl PM_SetAmpGain + b _021D89E2 +_021D89D4: + mov r0, #1 + bl PM_SetAmpGain + b _021D89E2 +_021D89DC: + mov r0, #0 + bl PM_SetAmpGain +_021D89E2: + ldr r0, _021D8A3C ; =0x0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8A4C ; =0x0000358C + str r2, [r1, r0] +_021D89EC: + ldr r0, _021D8A3C ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021D8A00 + cmp r0, #1 + beq _021D8A3A + cmp r0, #2 + pop {r4, r5, r6, pc} +_021D8A00: + bl FUN_021D8018 + cmp r0, #0 + bne _021D8A1E + mov r0, #1 + bl FUN_021D87D0 + cmp r0, #0 + beq _021D8A3A + ldr r0, _021D8A3C ; =0x0220FBC8 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + str r2, [r1, r0] + pop {r4, r5, r6, pc} +_021D8A1E: + bl FUN_021D8018 + cmp r0, #1 + bne _021D8A3A + mov r0, #0 + bl FUN_021D8818 + cmp r0, #0 + beq _021D8A3A + ldr r0, _021D8A3C ; =0x0220FBC8 + mov r2, #2 + ldr r1, [r0, #4] + ldr r0, _021D8A50 ; =0x000034F8 + str r2, [r1, r0] +_021D8A3A: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8A3C: .word 0x0220FBC8 +_021D8A40: .word 0x000082EA +_021D8A44: .word 0x0000411A +_021D8A48: .word 0xFFFFD8F0 +_021D8A4C: .word 0x0000358C +_021D8A50: .word 0x000034F8 + + thumb_func_start FUN_021D8A54 +FUN_021D8A54: ; 0x021D8A54 + push {r3, lr} + ldr r3, _021D8A78 ; =0x0220FBC8 + ldr r3, [r3, #4] + cmp r3, #0 + bne _021D8A62 + mov r0, #0 + pop {r3, pc} +_021D8A62: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020AD834 + cmp r0, #0 + beq _021D8A72 + mov r0, #1 + pop {r3, pc} +_021D8A72: + mov r0, #0 + pop {r3, pc} + nop +_021D8A78: .word 0x0220FBC8 + + thumb_func_start FUN_021D8A7C +FUN_021D8A7C: ; 0x021D8A7C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r2, _021D8BC8 ; =0x0220BAC0 + add r4, r1, #0 + ldrb r3, [r2] + add r1, sp, #0x10 + add r5, r0, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + ldrb r2, [r2, #2] + strb r3, [r1, #1] + strb r2, [r1, #2] + ldr r1, _021D8BCC ; =0x0220FBC8 + ldr r1, [r1, #4] + cmp r1, #0 + bne _021D8ACA + ldr r1, _021D8BD0 ; =0x000035DC + bl FUN_02016998 + ldr r2, _021D8BCC ; =0x0220FBC8 + mov r1, #0x35 + str r0, [r2] + add r0, #0x1f + lsr r0, r0, #5 + lsl r0, r0, #5 + str r0, [r2, #4] + lsl r1, r1, #8 + str r5, [r0, r1] + add r0, r1, #0 + ldr r5, _021D8BD4 ; =0x0220FBE0 + ldr r3, [r2, #4] + sub r0, #0x40 + str r5, [r3, r0] + ldr r0, [r2, #4] + mov r3, #0 + sub r1, #0x3c + str r3, [r0, r1] + bl FUN_021D868C +_021D8ACA: + ldr r5, _021D8BCC ; =0x0220FBC8 + mov r7, #0x11 + ldr r0, [r5, #4] + ldr r3, _021D8BD8 ; =0x00003568 + mov r1, #3 + str r1, [r0, r3] + add r1, r3, #0 + ldr r0, [r5, #4] + sub r1, #0xa8 + ldr r2, [r0, r1] + add r1, r3, #4 + str r2, [r0, r1] + lsl r7, r7, #6 + add r0, r3, #0 + ldr r1, [r5, #4] + lsl r2, r7, #1 + add r0, #8 + str r2, [r1, r0] + mov r2, #0x41 + add r0, r3, #0 + ldr r1, [r5, #4] + lsl r2, r2, #6 + add r0, #0xc + str r2, [r1, r0] + add r0, r3, #0 + ldr r2, [r5, #4] + mov r1, #1 + add r0, #0x10 + str r1, [r2, r0] + add r2, r3, #0 + ldr r6, [r5, #4] + mov r0, #0 + add r2, #0x14 + str r0, [r6, r2] + add r2, r3, #0 + ldr r6, [r5, #4] + add r2, #0x18 + str r0, [r6, r2] + sub r0, r3, #3 + ldr r2, [r5, #4] + sub r3, #0x64 + strb r1, [r2, r0] + ldr r0, [r5, #4] + add r2, sp, #0x10 + add r0, r0, r3 + bl FUN_020C169C + add r0, r5, #0 + ldr r1, [r0, #4] + ldr r0, _021D8BDC ; =0x00003504 + add r0, r1, r0 + mov r1, #0 + bl FUN_020C13C4 + mov r0, #0x41 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _021D8BE0 ; =FUN_021D8730 + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #0xd3 + ldr r2, [r1, #4] + lsl r0, r0, #6 + ldr r2, [r2, r0] + add r0, #0x44 + str r2, [sp, #0xc] + ldr r3, [r1, #4] + mov r2, #0x8f + lsl r2, r2, #6 + add r0, r3, r0 + add r2, r3, r2 + mov r1, #1 + lsl r3, r7, #1 + bl FUN_020C14AC + ldr r2, _021D8BCC ; =0x0220FBC8 + ldr r1, _021D8BE4 ; =0x000034F8 + ldr r0, [r2, #4] + mov r5, #0 + str r5, [r0, r1] + add r0, r1, #0 + ldr r3, [r2, #4] + add r0, #0x68 + str r5, [r3, r0] + mov r0, #1 + str r0, [sp, #0x1c] + ldr r0, [r2, #4] + sub r1, #0x30 + add r0, r0, r1 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + bl FUN_021D8018 + add r1, sp, #0x10 + strb r0, [r1, #0x10] + ldr r0, _021D8BE8 ; =FUN_021D8860 + str r0, [sp, #0x2c] + add r0, r5, #0 + str r0, [sp, #0x30] + ldr r0, _021D8BCC ; =0x0220FBC8 + ldr r0, [r0, #4] + str r0, [sp, #0x24] + mov r0, #0x8f + lsl r0, r0, #6 + str r0, [sp, #0x28] + add r0, sp, #0x14 + bl FUN_020AD93C + cmp r0, #0 + ldr r0, _021D8BCC ; =0x0220FBC8 + add r2, r5, #0 + ldr r1, [r0, #4] + ldr r0, _021D8BEC ; =0x000034FC + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_020AA7A0 + bl FUN_021D8BF0 + mov r0, #1 + bl FUN_020AA760 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021D8BC8: .word 0x0220BAC0 +_021D8BCC: .word 0x0220FBC8 +_021D8BD0: .word 0x000035DC +_021D8BD4: .word 0x0220FBE0 +_021D8BD8: .word 0x00003568 +_021D8BDC: .word 0x00003504 +_021D8BE0: .word FUN_021D8730 +_021D8BE4: .word 0x000034F8 +_021D8BE8: .word FUN_021D8860 +_021D8BEC: .word 0x000034FC + + thumb_func_start FUN_021D8BF0 +FUN_021D8BF0: ; 0x021D8BF0 + ldr r0, _021D8BFC ; =0x0220FBC8 + ldr r3, _021D8C00 ; =0x020C1458 + ldr r1, [r0, #4] + ldr r0, _021D8C04 ; =0x00003504 + add r0, r1, r0 + bx r3 + .align 2, 0 +_021D8BFC: .word 0x0220FBC8 +_021D8C00: .word 0x020C1458 +_021D8C04: .word 0x00003504 + + thumb_func_start FUN_021D8C08 +FUN_021D8C08: ; 0x021D8C08 + push {r3, lr} + ldr r0, _021D8C50 ; =0x0220FBC8 + ldr r1, _021D8C54 ; =0x00003560 + ldr r2, [r0, #4] + ldr r0, [r2, r1] + cmp r0, #0 + beq _021D8C1E + sub r1, #0x68 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021D8C24 +_021D8C1E: + bl FUN_021D8C6C + pop {r3, pc} +_021D8C24: + cmp r1, #1 + bne _021D8C38 + mov r1, #2 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D8C38 + bl FUN_021D8C6C + pop {r3, pc} +_021D8C38: + ldr r0, _021D8C50 ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8C54 ; =0x00003560 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020ACBA0 + cmp r0, #0 + beq _021D8C4E + bl FUN_021D8C6C +_021D8C4E: + pop {r3, pc} + .align 2, 0 +_021D8C50: .word 0x0220FBC8 +_021D8C54: .word 0x00003560 + + thumb_func_start FUN_021D8C58 +FUN_021D8C58: ; 0x021D8C58 + ldr r1, _021D8C64 ; =0x0220FBC8 + ldr r2, [r1, #4] + ldr r1, _021D8C68 ; =0x000034C4 + str r0, [r2, r1] + bx lr + nop +_021D8C64: .word 0x0220FBC8 +_021D8C68: .word 0x000034C4 + + thumb_func_start FUN_021D8C6C +FUN_021D8C6C: ; 0x021D8C6C + push {r4, lr} + ldr r0, _021D8CBC ; =0x0220FBC8 + ldr r1, [r0] + cmp r1, #0 + beq _021D8CBA + ldr r1, [r0, #4] + ldr r0, _021D8CC0 ; =0x000034C4 + ldr r4, [r1, r0] + bl MIC_StopAutoSampling + ldr r0, _021D8CBC ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8CC4 ; =0x00003504 + add r0, r1, r0 + bl FUN_020C1430 + ldr r0, _021D8CBC ; =0x0220FBC8 + ldr r1, [r0, #4] + ldr r0, _021D8CC4 ; =0x00003504 + add r0, r1, r0 + bl FUN_020C1674 + bl FUN_020AD904 + ldr r1, _021D8CBC ; =0x0220FBC8 + mov r0, #0x35 + ldr r2, [r1, #4] + lsl r0, r0, #8 + ldr r0, [r2, r0] + ldr r1, [r1] + bl FUN_02016A8C + mov r1, #0 + ldr r0, _021D8CBC ; =0x0220FBC8 + cmp r4, #0 + str r1, [r0] + str r1, [r0, #4] + beq _021D8CBA + blx r4 +_021D8CBA: + pop {r4, pc} + .align 2, 0 +_021D8CBC: .word 0x0220FBC8 +_021D8CC0: .word 0x000034C4 +_021D8CC4: .word 0x00003504 + + thumb_func_start FUN_021D8CC8 +FUN_021D8CC8: ; 0x021D8CC8 + push {r3, lr} + sub sp, #0x10 + ldr r0, _021D8CEC ; =0x0220FBC8 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D8CE6 + add r0, sp, #0 + bl FUN_020AD144 + ldr r0, [sp, #4] + cmp r0, #2 + ble _021D8CE6 + ldr r0, [sp] + add sp, #0x10 + pop {r3, pc} +_021D8CE6: + mov r0, #0 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 +_021D8CEC: .word 0x0220FBC8 + + thumb_func_start FUN_021D8CF0 +FUN_021D8CF0: ; 0x021D8CF0 + ldr r0, _021D8CFC ; =0x0220FBC8 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _021D8D00 ; =0x000034FC + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8CFC: .word 0x0220FBC8 +_021D8D00: .word 0x000034FC + + thumb_func_start FUN_021D8D04 +FUN_021D8D04: ; 0x021D8D04 + ldr r0, _021D8D10 ; =0x0220FBC8 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _021D8D14 ; =0x000034FC + str r2, [r1, r0] + bx lr + .align 2, 0 +_021D8D10: .word 0x0220FBC8 +_021D8D14: .word 0x000034FC diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 37c87728..9cf93c34 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -497,6 +497,10 @@ FUN_0224F12C = 0x0224F12C; FUN_02252534 = 0x02252534; FUN_02252538 = 0x02252538; FUN_022567E0 = 0x022567E0; +FUN_02213B08 = 0x02213B08; +FUN_02213D80 = 0x02213D80; +FUN_02213DBC = 0x02213DBC; +FUN_02213E24 = 0x02213E24; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; |