summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2021-08-17 17:41:33 +0100
committerred031000 <rubenru09@aol.com>2021-08-17 17:41:42 +0100
commitced29f6660dbe5b77d4b18bbedaa36fd25701535 (patch)
tree51a78e7e68696a621f77525346bc467666b9667d
parent270da8e97395d196f404479468ca323acf4d016f (diff)
some more mod04 files
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/global.inc51
-rw-r--r--arm9/modules/04/asm/arm_04.s10874
-rw-r--r--arm9/modules/04/asm/mod04_021E05FC.s2
-rw-r--r--arm9/modules/04/asm/mod04_021E10F8.s1670
-rw-r--r--arm9/modules/04/asm/mod04_021E26D0.s9238
6 files changed, 10963 insertions, 10874 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 31f43a15..ea5e81ad 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -674,6 +674,8 @@ Overlay MODULE_04
Object mod04_021DE89C.o
Object mod04_021DEB90.o
Object mod04_021E05FC.o
+ Object mod04_021E10F8.o
+ Object mod04_021E26D0.o
Object arm_04.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index 59162090..bb075cdf 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6241,6 +6241,7 @@
.extern MOD04_021E8830
.extern MOD04_021E8A50
.extern MOD04_021E8A74
+.extern MOD04_021E8C08
.extern MOD04_021E8DC0
.extern MOD04_021E8E08
.extern MOD04_021E8EF4
@@ -6265,6 +6266,7 @@
.extern MOD04_021EAE18
.extern MOD04_021EAE38
.extern MOD04_021EAE90
+.extern MOD04_021EAF20
.extern MOD04_021EB044
.extern MOD04_021EB0FC
.extern MOD04_021EB3B8
@@ -6302,31 +6304,79 @@
.extern MOD04_021F024C
.extern MOD04_021F0250
.extern MOD04_021F025C
+.extern MOD04_021F02B8
+.extern MOD04_021F034C
+.extern MOD04_021F0580
.extern MOD04_021F05F4
.extern MOD04_021F0664
.extern MOD04_021F06E4
+.extern MOD04_021F0828
+.extern MOD04_021F0864
+.extern MOD04_021F0944
+.extern MOD04_021F09B0
.extern MOD04_021F0B30
.extern MOD04_021F0B9C
+.extern MOD04_021F0C84
.extern MOD04_021F0D54
.extern MOD04_021F0D8C
.extern MOD04_021F0EB0
.extern MOD04_021F0F18
.extern MOD04_021F0F64
.extern MOD04_021F0F94
+.extern MOD04_021FBD00
+.extern MOD04_021FBE5C
.extern MOD04_021FBE7C
.extern MOD04_021FD3C4
+.extern MOD04_021FD3F8
.extern MOD04_021FD434
.extern MOD04_021FD43C
+.extern MOD04_021FD454
.extern MOD04_021FD45C
.extern MOD04_021FD488
+.extern MOD04_021FD52C
+.extern MOD04_021FD6B0
+.extern MOD04_021FD6BC
.extern MOD04_021FD6C8
+.extern MOD04_021FD6D4
.extern MOD04_021FD704
.extern MOD04_021FD71C
.extern MOD04_021FFEB0
+.extern MOD04_021FFF78
+.extern MOD04_02200468
+.extern MOD04_022006B4
+.extern MOD04_022006EC
.extern MOD04_02200D6C
+.extern MOD04_022011A8
+.extern MOD04_022021C0
+.extern MOD04_02202220
+.extern MOD04_02202254
.extern MOD04_02202280
.extern MOD04_02202308
+.extern MOD04_02202534
+.extern MOD04_02202568
+.extern MOD04_02202580
+.extern MOD04_02202598
+.extern MOD04_022025B0
+.extern MOD04_0220277C
+.extern MOD04_02203898
+.extern MOD04_022038BC
+.extern MOD04_022038C4
+.extern MOD04_022038E4
+.extern MOD04_02203908
+.extern MOD04_0220394C
+.extern MOD04_02203A48
+.extern MOD04_02203BCC
+.extern MOD04_02203BD4
+.extern MOD04_02203BE4
+.extern MOD04_02203BF4
+.extern MOD04_02203C04
+.extern MOD04_02203C38
+.extern MOD04_02203C50
+.extern MOD04_02203C7C
+.extern MOD04_02203CC4
+.extern MOD04_02203D1C
.extern MOD04_02203E80
+.extern MOD04_02203EA4
.extern MOD04_022069DC
.extern MOD04_02206E6C
.extern MOD04_02206EFC
@@ -8396,6 +8446,7 @@
.extern UNK04_0220CF18
.extern UNK04_0220D0CC
.extern UNK04_0220D1A8
+.extern UNK04_0220F018
.extern UNK04_02210480
.extern UNK04_02210484
.extern UNK04_02210488
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 696e0b3b..71bf3cb8 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,10712 +3,6 @@
.section .text
.balign 4, 0
- arm_func_start MOD04_021E10F8
-MOD04_021E10F8: ; 0x021E10F8
- ldr r0, _021E1108 ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r0, [r0, #0x20]
- bx lr
- .align 2, 0
-_021E1108: .word UNK04_022106D0
- arm_func_end MOD04_021E10F8
-
- arm_func_start MOD04_021E110C
-MOD04_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 ; =UNK04_022106D0
- 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 DWC_GetFriendDataType
- cmp r0, #1
- bne _021E11C8
- bl MOD04_021E0F00
- ldr r1, [r4]
- add r2, sp, #8
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_LoginIdToUserName
- 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 DWC_SetGsProfileId
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWCi_SetBuddyFriendData
- mov r8, r5
- b _021E125C
-_021E11C8:
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #3
- beq _021E11F8
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #2
- bne _021E125C
-_021E11F8:
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_IsBuddyFriendData
- cmp r0, #1
- streq fp, [sp]
- beq _021E125C
- ldr r6, [sl, #4]
- bl MOD04_021E0F00
- ldr r1, [r4]
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_GetGsProfileId
- cmp r6, r0
- bne _021E125C
- ldr r0, [r4]
- mov r1, r6
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_SetGsProfileId
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWCi_SetBuddyFriendData
- 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 MOD04_021E17F0
- ldr r1, [sp]
- cmp r1, #0
- beq _021E129C
- bl MOD04_021E1DA4
-_021E129C:
- ldr r0, _021E12B4 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E110C
-
- arm_func_start MOD04_021E12B8
-MOD04_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 ; =UNK04_022106D0
- 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 DWC_GetFriendDataType
- cmp r0, #1
- bne _021E136C
- bl MOD04_021E0F00
- ldr r1, [r4]
- add r2, sp, #4
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_LoginIdToUserName
- ldr r1, [sp]
- add r0, sp, #4
- bl strcmp
- cmp r0, #0
- bne _021E13CC
- ldr r1, [sb, #4]
- mov r0, sl
- bl MOD04_021F0944
- ldr r0, [r4]
- ldr r1, [sb, #4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_SetGsProfileId
- mov fp, r5
- b _021E13CC
-_021E136C:
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #3
- beq _021E139C
- ldr r0, [r4]
- ldr r0, [r0, #0x18]
- add r0, r0, r7
- bl DWC_GetFriendDataType
- cmp r0, #2
- bne _021E13CC
-_021E139C:
- ldr r6, [sb, #4]
- bl MOD04_021E0F00
- ldr r1, [r4]
- ldr r1, [r1, #0x18]
- add r1, r1, r7
- bl DWC_GetGsProfileId
- cmp r6, r0
- bne _021E13CC
- mov r0, sl
- mov r1, r6
- bl MOD04_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 MOD04_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 MOD04_021F0864
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E1410: .word UNK04_022106D0
- arm_func_end MOD04_021E12B8
-
- arm_func_start MOD04_021E1414
-MOD04_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 ; =UNK04_022106D0
- mul r6, r8, r0
- ldr r0, [r1]
- ldr r0, [r0, #0x18]
- add r0, r0, r6
- bl DWC_GetFriendDataType
- cmp r0, #0
- beq _021E15FC
- ldr r7, _021E1670 ; =UNK04_022106D0
- 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 MOD04_021E1900
- cmp r0, #0
- beq _021E14E8
- ldr r0, _021E1670 ; =UNK04_022106D0
- 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 MOD04_021F0664
- bl MOD04_021E1678
- ldr r0, [sp]
- cmp r0, r4
- bne _021E1548
- ldr r0, [sb, #0xc]
- ldr r0, [r0, r7]
- bl MOD04_021E17BC
- b _021E15B0
-_021E1548:
- ldr r0, _021E1670 ; =UNK04_022106D0
- ldr r1, [sb, #0xc]
- ldr r0, [r0]
- ldr r1, [r1]
- ldr r0, [r0, #0x18]
- add r0, r0, r6
- bl DWC_SetGsProfileId
- ldr r0, _021E1670 ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r0, [r0, #0x18]
- add r0, r0, r6
- bl DWCi_SetBuddyFriendData
- mov r0, r8
- bl MOD04_021E1DA4
- ldr r0, _021E1670 ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- 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 MOD04_021E1678
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E1618:
- ldr r0, _021E1670 ; =UNK04_022106D0
- ldr r1, [r0]
- ldr r0, [r1]
- cmp r0, #1
- beq _021E1648
- ldr r1, [r1, #0x18]
- mov r0, #0xc
- mla r0, r8, r0, r1
- bl DWC_GetFriendDataType
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021E1648:
- ldr r0, _021E1670 ; =UNK04_022106D0
- 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 UNK04_022106D0
-_021E1674: .word 0x00000601
- arm_func_end MOD04_021E1414
-
- arm_func_start MOD04_021E1678
-MOD04_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 MOD04_021E2114
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E16E8: .word 0xFFFEEAA8
- arm_func_end MOD04_021E1678
-
- arm_func_start MOD04_021E16EC
-MOD04_021E16EC: ; 0x021E16EC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021E17B8 ; =UNK04_022106D0
- mov r3, #0
- ldr r2, [r2]
- mov r5, r0
- mov r4, r1
- str r3, [sp]
- cmp r2, #0
- beq _021E1720
- bl MOD04_021E05FC
- cmp r0, #0
- bne _021E172C
-_021E1720:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E172C:
- bl MOD04_021E0F00
- mov r1, r5
- bl DWC_GetGsProfileId
- mov r5, r0
- cmp r5, #0
- ble _021E176C
- ldr r0, _021E17B8 ; =UNK04_022106D0
- add r2, sp, #0
- ldr r0, [r0]
- mov r1, r5
- ldr r0, [r0, #4]
- bl MOD04_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 ; =UNK04_022106D0
- mov r2, r4
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl MOD04_021F06E4
- cmp r0, #0
- movne r0, #0
- moveq r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E17B8: .word UNK04_022106D0
- arm_func_end MOD04_021E16EC
-
- arm_func_start MOD04_021E17BC
-MOD04_021E17BC: ; 0x021E17BC
- stmdb sp!, {r4, lr}
- ldr r2, _021E17E8 ; =UNK04_022106D0
- mov r1, r0
- ldr r0, [r2]
- ldr r2, _021E17EC ; =UNK04_0220D350
- ldr r0, [r0, #4]
- bl MOD04_021F09B0
- mov r4, r0
- bl MOD04_021E1678
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E17E8: .word UNK04_022106D0
-_021E17EC: .word UNK04_0220D350
- arm_func_end MOD04_021E17BC
-
- arm_func_start MOD04_021E17F0
-MOD04_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 MOD04_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 MOD04_021E1F84
- cmp sb, r0
- bne _021E18CC
- mov r0, r6
- bl DWC_GetFriendDataType
- cmp r0, #2
- bne _021E1894
- mov r0, r4
- bl DWC_GetFriendDataType
- cmp r0, #3
- bne _021E1894
- mov r0, r5
- mov r1, sb
- bl DWC_SetGsProfileId
-_021E1894:
- mov r0, r4
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- beq _021E18AC
- mov r0, r5
- bl DWCi_SetBuddyFriendData
-_021E18AC:
- mov r0, fp
- mov r1, r7
- mov r2, r8
- bl MOD04_021E19B8
- ldr r0, _021E18FC ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E17F0
-
- arm_func_start MOD04_021E1900
-MOD04_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 MOD04_021E1F84
- cmp r0, #0
- beq _021E199C
- cmp r0, r5
- bne _021E199C
- mov r0, #0xc
- mla r0, r6, r0, r7
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- beq _021E1974
- mov r0, #0xc
- mla r0, r4, r0, r7
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- bne _021E1974
- mov r0, r7
- mov r1, r4
- mov r2, r6
- bl MOD04_021E19B8
- b _021E1984
-_021E1974:
- mov r0, r7
- mov r1, r6
- mov r2, r4
- bl MOD04_021E19B8
-_021E1984:
- ldr r1, _021E19B4 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E1900
-
- arm_func_start MOD04_021E19B8
-MOD04_021E19B8: ; 0x021E19B8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r3, _021E1A1C ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E19B8
-
- arm_func_start MOD04_021E1A20
-MOD04_021E1A20: ; 0x021E1A20
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021E1A5C ; =UNK04_022106D0
- mov r0, #0
- ldr r3, [r1]
- ldrb r1, [r3, #0x1d]
- ldr r2, [r3, #0x30]
- ldr r3, [r3, #0x2c]
- blx r3
- ldr r0, _021E1A5C ; =UNK04_022106D0
- mov r1, #2
- ldr r0, [r0]
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E1A5C: .word UNK04_022106D0
- arm_func_end MOD04_021E1A20
-
- arm_func_start MOD04_021E1A60
-MOD04_021E1A60: ; 0x021E1A60
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0x24c
- ldr r2, _021E1CC4 ; =UNK04_022106D0
- 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 MOD04_021F0828
- bl MOD04_021E1678
- ldr r0, [sp, #0x18]
- mov fp, #0
- str fp, [sp, #0x1c]
- cmp r0, #0
- ble _021E1B7C
- ldr r8, _021E1CC4 ; =UNK04_022106D0
- mov sb, #1
- mov r7, #0xc
-_021E1AB4:
- ldr r0, [r8]
- ldr r1, [sp, #0x1c]
- ldr r0, [r0, #4]
- add r2, sp, #0x38
- bl MOD04_021F06E4
- bl MOD04_021E1678
- mov r4, fp
- cmp r5, #0
- ble _021E1B30
-_021E1AD8:
- mov r0, r4
- bl MOD04_021E1F84
- ldr r1, [sp, #0x38]
- cmp r1, r0
- bne _021E1B24
- mul sl, r4, r7
- add r0, r6, sl
- bl DWC_IsBuddyFriendData
- cmp r0, #0
- bne _021E1B30
- add sl, r6, sl
- ldr r1, [sp, #0x38]
- mov r0, sl
- bl DWC_SetGsProfileId
- mov r0, sl
- bl DWCi_SetBuddyFriendData
- 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 MOD04_021F0580
- bl MOD04_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 ; =UNK04_022106D0
- mov r1, #1
- ldr r0, [r0]
- strb r1, [r0, #0x1e]
-_021E1B8C:
- ldr sl, _021E1CC4 ; =UNK04_022106D0
- 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 MOD04_021E1F84
- movs r7, r0
- beq _021E1C08
- ldr r1, [sl]
- mov r0, r6
- ldrb r1, [r1, #0x1c]
- mov r2, r7
- bl MOD04_021E1900
- cmp r0, #0
- bne _021E1C9C
- ldr r0, [sl]
- mov r1, r7
- ldr r0, [r0, #4]
- mov r2, r4
- bl MOD04_021F0664
- bl MOD04_021E1678
- ldr r0, [sp, #0x1c]
- cmp r0, sb
- bne _021E1C9C
- mov r0, r7
- bl MOD04_021E17BC
- b _021E1C9C
-_021E1C08:
- bl MOD04_021E0F00
- ldr r1, [sl]
- ldrb r2, [r1, #0x1c]
- mla r1, r2, r8, r6
- bl DWC_GetGsProfileId
- cmp r0, sb
- bne _021E1C9C
- bl MOD04_021E0F00
- ldr r2, _021E1CC4 ; =UNK04_022106D0
- mov r1, #0xc
- ldr r3, [r2]
- add r2, sp, #0x20
- ldrb r3, [r3, #0x1c]
- mla r1, r3, r1, r6
- bl DWC_LoginIdToUserName
- ldr r0, _021E1CC4 ; =UNK04_022106D0
- mov r1, #0
- ldr r4, [r0]
- add r2, sp, #0x20
- str r1, [sp]
- str r2, [sp, #4]
- str r1, [sp, #8]
- ldr r0, _021E1CC8 ; =MOD04_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 MOD04_021F0C84
- ldr r0, _021E1CC4 ; =UNK04_022106D0
- 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 UNK04_022106D0
-_021E1CC8: .word MOD04_021E1414
- arm_func_end MOD04_021E1A60
-
- arm_func_start MOD04_021E1CCC
-MOD04_021E1CCC: ; 0x021E1CCC
- ldr r0, _021E1CF8 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E1CCC
-
- arm_func_start MOD04_021E1CFC
-MOD04_021E1CFC: ; 0x021E1CFC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021E1D88 ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- add r1, r1, #1
- str r1, [r4, #8]
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl MOD04_021F0F18
- mov r5, r0
- bl OS_GetTick
- ldr r2, _021E1D88 ; =UNK04_022106D0
- 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 UNK04_022106D0
-_021E1D8C: .word 0x000082EA
- arm_func_end MOD04_021E1CFC
-
- arm_func_start MOD04_021E1D90
-MOD04_021E1D90: ; 0x021E1D90
- ldr r0, _021E1DA0 ; =UNK04_022106D0
- mov r1, #0
- str r1, [r0]
- bx lr
- .align 2, 0
-_021E1DA0: .word UNK04_022106D0
- arm_func_end MOD04_021E1D90
-
- arm_func_start MOD04_021E1DA4
-MOD04_021E1DA4: ; 0x021E1DA4
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x210
- ldr r1, _021E1E2C ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- 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 MOD04_021E26B8
- ldr r2, _021E1E2C ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E1DA4
-
- arm_func_start MOD04_021E1E30
-MOD04_021E1E30: ; 0x021E1E30
- stmdb sp!, {r4, r5, r6, lr}
- ldr r3, _021E1ED0 ; =UNK04_022106D0
- mov r6, r0
- ldr r0, [r3]
- mov r5, r1
- mov r4, r2
- cmp r0, #0
- beq _021E1E5C
- bl MOD04_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 ; =UNK04_022106D0
- ldreq r0, [r0]
- ldreq r0, [r0, #4]
- ldreq r0, [r0]
- ldreq r6, [r0, #0x214]
- cmp r5, #0
- ldreq r0, _021E1ED0 ; =UNK04_022106D0
- mov r1, r6
- ldreq r0, [r0]
- ldreq r0, [r0, #4]
- ldreq r0, [r0]
- addeq r5, r0, #0x218
- cmp r4, #0
- ldreq r0, _021E1ED0 ; =UNK04_022106D0
- mov r2, r5
- ldreq r0, [r0]
- ldreq r0, [r0, #4]
- ldreq r0, [r0]
- addeq r4, r0, #0x318
- ldr r0, _021E1ED0 ; =UNK04_022106D0
- mov r3, r4
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl MOD04_021F034C
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E1ED0: .word UNK04_022106D0
- arm_func_end MOD04_021E1E30
-
- arm_func_start MOD04_021E1ED4
-MOD04_021E1ED4: ; 0x021E1ED4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E1F14 ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- ldr r2, [r2]
- str r0, [r2, #0xc]
- str r1, [r2, #0x10]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E1F14: .word UNK04_022106D0
- arm_func_end MOD04_021E1ED4
-
- arm_func_start MOD04_021E1F18
-MOD04_021E1F18: ; 0x021E1F18
- stmdb sp!, {r4, r5, r6, lr}
- ldr r4, _021E1F80 ; =UNK04_022106D0
- 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 MOD04_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 UNK04_022106D0
- arm_func_end MOD04_021E1F18
-
- arm_func_start MOD04_021E1F84
-MOD04_021E1F84: ; 0x021E1F84
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r1, _021E1FE0 ; =UNK04_022106D0
- 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 MOD04_021E0F00
- mov r1, #0xc
- mla r1, r5, r1, r4
- bl DWC_GetGsProfileId
- 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 UNK04_022106D0
- arm_func_end MOD04_021E1F84
-
- arm_func_start MOD04_021E1FE4
-MOD04_021E1FE4: ; 0x021E1FE4
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x210
- ldr r2, _021E2064 ; =UNK04_022106D0
- 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 MOD04_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 MOD04_021F06E4
- ldr r0, _021E2064 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E1FE4
-
- arm_func_start MOD04_021E2068
-MOD04_021E2068: ; 0x021E2068
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xc
- mov r4, r1
- mov r5, r0
- ldr r0, [r4, #8]
- ldr r1, _021E20C0 ; =UNK04_0220D354
- bl strcmp
- cmp r0, #0
- addne sp, sp, #0xc
- movne r0, #0
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021E20C4 ; =MOD04_021E110C
- mov r2, #0
- str r0, [sp]
- str r2, [sp, #4]
- ldr r1, [r4]
- mov r0, r5
- mov r3, r2
- bl MOD04_021F0B9C
- mov r0, #1
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E20C0: .word UNK04_0220D354
-_021E20C4: .word MOD04_021E110C
- arm_func_end MOD04_021E2068
-
- arm_func_start MOD04_021E20C8
-MOD04_021E20C8: ; 0x021E20C8
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r2, _021E210C ; =UNK04_022106D0
- ldr r2, [r2]
- ldr r2, [r2, #0x18]
- cmp r2, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {pc}
- ldr r3, _021E2110 ; =MOD04_021E12B8
- mov r2, #0
- str r3, [sp]
- str r2, [sp, #4]
- ldr r1, [r1]
- mov r3, r2
- bl MOD04_021F0B9C
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021E210C: .word UNK04_022106D0
-_021E2110: .word MOD04_021E12B8
- arm_func_end MOD04_021E20C8
-
- arm_func_start MOD04_021E2114
-MOD04_021E2114: ; 0x021E2114
- stmdb sp!, {r4, lr}
- ldr r2, _021E2170 ; =UNK04_022106D0
- mov r4, r0
- ldr r2, [r2]
- cmp r2, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021DD6B0
- ldr r0, _021E2170 ; =UNK04_022106D0
- 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 MOD04_021E1CCC
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E2170: .word UNK04_022106D0
- arm_func_end MOD04_021E2114
-
- arm_func_start MOD04_021E2174
-MOD04_021E2174: ; 0x021E2174
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021E2224 ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E2174
-
- arm_func_start MOD04_021E2228
-MOD04_021E2228: ; 0x021E2228
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E2348 ; =UNK04_022106D0
- 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 MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- bl MOD04_021E10F8
- cmp r0, #0
- bne _021E227C
- bl MOD04_021FBE5C
- cmp r0, #0
- beq _021E2280
-_021E227C:
- bl MOD04_021FBD00
-_021E2280:
- ldr r0, _021E2348 ; =UNK04_022106D0
- ldr r0, [r0]
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021E231C
- ldr r0, [r0]
- cmp r0, #0
- beq _021E231C
- bl MOD04_021E1CFC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E2348 ; =UNK04_022106D0
- 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 MOD04_021E1A60
-_021E22EC:
- ldr r0, _021E2348 ; =UNK04_022106D0
- 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 ; =UNK04_022106D0
- 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 MOD04_021E1A20
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E2348: .word UNK04_022106D0
- arm_func_end MOD04_021E2228
-
- arm_func_start MOD04_021E234C
-MOD04_021E234C: ; 0x021E234C
- stmdb sp!, {r4, lr}
- ldr lr, _021E2428 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E234C
-
- arm_func_start MOD04_021E242C
-MOD04_021E242C: ; 0x021E242C
- ldr r2, _021E2450 ; =UNK04_022106D0
- 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 UNK04_022106D0
- arm_func_end MOD04_021E242C
-
- arm_func_start MOD04_021E2454
-MOD04_021E2454: ; 0x021E2454
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0x104
- ldr r2, _021E24DC ; =UNK04_022106D0
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- cmp r0, #0
- beq _021E2480
- bl MOD04_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 MOD04_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 MOD04_021E1E30
- cmp r0, #0
- moveq r0, #1
- movne r0, #0
- add sp, sp, #0x104
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E24DC: .word UNK04_022106D0
- arm_func_end MOD04_021E2454
-
- arm_func_start MOD04_021E24E0
-MOD04_021E24E0: ; 0x021E24E0
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x100
- mov r6, r3
- add r3, sp, #0
- ldr r4, [sp, #0x110]
- bl MOD04_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 MOD04_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 MOD04_021DD36C
- mov r0, r5
- add sp, sp, #0x100
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E24E0
-
- arm_func_start MOD04_021E2578
-MOD04_021E2578: ; 0x021E2578
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov r3, r1
- mov r1, #0
- str r2, [sp]
- mov r2, r1
- bl MOD04_021E24E0
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E2578
-
- arm_func_start MOD04_021E259C
-MOD04_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 MOD04_021E16EC
- cmp r0, #0
- beq _021E268C
- ldr r0, [sp, #8]
- cmp r0, #6
- bne _021E2650
- cmp r6, #0
- beq _021E260C
- ldr r0, _021E26B0 ; =UNK04_0220D38C
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_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 ; =UNK04_0220D390
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_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 UNK04_0220D38C
-_021E26B4: .word UNK04_0220D390
- arm_func_end MOD04_021E259C
-
- arm_func_start MOD04_021E26B8
-MOD04_021E26B8: ; 0x021E26B8
- ldr ip, _021E26CC ; =MOD04_021E259C
- mov r3, r1
- mov r1, #0
- mov r2, r1
- bx ip
- .align 2, 0
-_021E26CC: .word MOD04_021E259C
- arm_func_end MOD04_021E26B8
-
- arm_func_start MOD04_021E26D0
-MOD04_021E26D0: ; 0x021E26D0
- ldr r1, _021E26E0 ; =UNK04_022106D8
- ldr r1, [r1]
- str r0, [r1, #0x1a0]
- bx lr
- .align 2, 0
-_021E26E0: .word UNK04_022106D8
- arm_func_end MOD04_021E26D0
-
- arm_func_start MOD04_021E26E4
-MOD04_021E26E4: ; 0x021E26E4
- ldr r0, _021E26F0 ; =UNK04_022106D8
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_021E26F0: .word UNK04_022106D8
- arm_func_end MOD04_021E26E4
-
- arm_func_start MOD04_021E26F4
-MOD04_021E26F4: ; 0x021E26F4
- ldr r1, _021E2700 ; =UNK04_022106D8
- str r0, [r1]
- bx lr
- .align 2, 0
-_021E2700: .word UNK04_022106D8
- arm_func_end MOD04_021E26F4
-
- arm_func_start MOD04_021E2704
-MOD04_021E2704: ; 0x021E2704
- stmdb sp!, {lr}
- sub sp, sp, #4
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #1
- ldmneia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E273C
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x17d]
- add r1, r1, #1
- strb r1, [r0, #0x17d]
-_021E273C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E275C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17d]
- cmp r0, #5
- blo _021E2774
-_021E275C:
- ldr r1, _021E2780 ; =0xFFFEAE6C
- mov r0, #6
- bl MOD04_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_end MOD04_021E2704
-
- arm_func_start MOD04_021E2784
-MOD04_021E2784: ; 0x021E2784
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x20
- mov r5, r0
- mov r6, r2
- mov r4, r3
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E27BC
- bl MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x14]
- add r1, r1, #1
- strb r1, [r0, #0x14]
- bl MOD04_021E26E4
- ldrb r1, [r4]
- ldrb r5, [r0, #0x14]
- cmp r1, #0
- beq _021E2950
- bl MOD04_021E26E4
- ldr r1, [r6, #4]
- add r0, r0, r5, lsl #2
- str r1, [r0, #0x210]
- ldrh r4, [r6, #2]
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x180]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x184]
- str r1, [r0, #0x188]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- bne _021E2878
- mov r0, #0xc
- bl MOD04_021E26D0
- b _021E2880
-_021E2878:
- mov r0, #7
- bl MOD04_021E26D0
-_021E2880:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- ldr r3, [r0, #0x200]
- ldr r2, _021E2B58 ; =UNK04_0220D394
- add r0, sp, #0x10
- mov r1, #0xc
- bl OS_SNPrintf
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021FFEB0
- mov r6, r0
- bl MOD04_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 MOD04_021FD52C
- cmp r0, #1
- bne _021E2928
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_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 MOD04_021E26E4
- ldr r1, [r6, #4]
- add r0, r0, r4, lsl #2
- str r1, [r0, #0x210]
- ldrh r5, [r6, #2]
- bl MOD04_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 MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x18c]
- mov r0, #7
- str r1, [r4, #0x190]
- bl MOD04_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 MOD04_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 MOD04_021E2704
- cmp r0, #0
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_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 MOD04_021E7A44
- bl MOD04_021E37A4
- add sp, sp, #0x20
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E2A74:
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E2AD8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E2AF0
-_021E2AD8:
- mov r0, #1
- bl MOD04_021E2704
- cmp r0, #0
- bne _021E2B04
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, pc}
-_021E2AF0:
- mov r0, #0
- bl MOD04_021E2704
- cmp r0, #0
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, pc}
-_021E2B04:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x180]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x184]
- str r1, [r0, #0x188]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- cmp r0, #0
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E2B58: .word UNK04_0220D394
-_021E2B5C: .word 0x00001388
- arm_func_end MOD04_021E2784
-
- arm_func_start MOD04_021E2B60
-MOD04_021E2B60: ; 0x021E2B60
- bx lr
- arm_func_end MOD04_021E2B60
-
- arm_func_start MOD04_021E2B64
-MOD04_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 MOD04_021DF88C
- cmp r0, #5
- beq _021E2BB8
- bl MOD04_021DF88C
- cmp r0, #6
- addne sp, sp, #0x9c
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E2BB8
- bl MOD04_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 ; =UNK04_0220D398
- 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 MOD04_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 UNK04_0220D398
- arm_func_end MOD04_021E2B64
-
- arm_func_start MOD04_021E2C78
-MOD04_021E2C78: ; 0x021E2C78
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E2C9C
- mov r0, #6
- bl MOD04_021E26D0
- b _021E2CBC
-_021E2C9C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E2CBC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- ldmneia sp!, {r4, pc}
-_021E2CBC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x180]
- cmp r4, r0
- bne _021E2CE0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x17c]
- add r1, r1, #1
- strb r1, [r0, #0x17c]
- b _021E2CF4
-_021E2CE0:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- str r4, [r0, #0x180]
-_021E2CF4:
- bl MOD04_021E26E4
- mov r2, #0
- str r2, [r0, #0x184]
- str r2, [r0, #0x188]
- mov r1, r4
- mov r0, #1
- bl MOD04_021E7B04
- bl MOD04_021E37A4
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E2C78
-
- arm_func_start MOD04_021E2D2C
-MOD04_021E2D2C: ; 0x021E2D2C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl MOD04_021E26E4
- str r5, [r0, #0x1c]
- bl MOD04_021E26E4
- strh r4, [r0, #0x1a]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E2D2C
-
- arm_func_start MOD04_021E2D54
-MOD04_021E2D54: ; 0x021E2D54
- ldr ip, _021E2D5C ; =MOD04_021E3800
- bx ip
- .align 2, 0
-_021E2D5C: .word MOD04_021E3800
- arm_func_end MOD04_021E2D54
-
- arm_func_start MOD04_021E2D60
-MOD04_021E2D60: ; 0x021E2D60
- mov r0, #0
- bx lr
- arm_func_end MOD04_021E2D60
-
- arm_func_start MOD04_021E2D68
-MOD04_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 MOD04_02202254
- mov r0, r6
- mov r1, #0xa
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x32
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x33
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x34
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x35
- bl MOD04_02202254
- mov r0, r6
- mov r1, #0x36
- bl MOD04_02202254
- ldr r4, _021E2E0C ; =UNK04_02210704
- mov r5, #0
-_021E2DE4:
- ldrb r1, [r4]
- cmp r1, #0
- beq _021E2DF8
- mov r0, r6
- bl MOD04_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 UNK04_02210704
- arm_func_end MOD04_021E2D68
-
- arm_func_start MOD04_021E2E10
-MOD04_021E2E10: ; 0x021E2E10
- bx lr
- arm_func_end MOD04_021E2E10
-
- arm_func_start MOD04_021E2E14
-MOD04_021E2E14: ; 0x021E2E14
- bx lr
- arm_func_end MOD04_021E2E14
-
- arm_func_start MOD04_021E2E18
-MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x14]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2E88:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x16]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2E9C:
- bl MOD04_021E26E4
- ldr r1, [r0, #0x200]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EB0:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x15]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EC4:
- bl MOD04_021E26E4
- ldr r1, [r0, #0x20]
- mov r0, r4
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2ED8:
- mov r0, r4
- mov r1, #3
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
-_021E2EE8:
- mov r0, r4
- mov r1, #1
- bl MOD04_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 ; =UNK04_02210704
- ldrb r0, [r0, r2]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r0, _021E2F60 ; =UNK04_02210705
- ldrb r0, [r0, r2]
- cmp r0, #0
- beq _021E2F44
- ldr r1, _021E2F64 ; =UNK04_0221070C
- mov r0, r4
- ldr r1, [r1, r2]
- bl MOD04_022021C0
- ldmia sp!, {r4, pc}
-_021E2F44:
- ldr r1, _021E2F64 ; =UNK04_0221070C
- mov r0, r4
- ldr r1, [r1, r2]
- ldr r1, [r1]
- bl MOD04_02202220
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E2F5C: .word UNK04_02210704
-_021E2F60: .word UNK04_02210705
-_021E2F64: .word UNK04_0221070C
- arm_func_end MOD04_021E2E18
-
- arm_func_start MOD04_021E2F68
-MOD04_021E2F68: ; 0x021E2F68
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0x1c
- mov r8, #0
- mov r7, r8
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #1
- addle sp, sp, #0x1c
- ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- mov sb, r8
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E2FF8
- ldr r4, _021E30D8 ; =UNK04_0220BAC4
- ldr r6, _021E30DC ; =UNK04_0220D3A0
- mvn r5, #0
-_021E2FB4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, sb
- bl MOD04_02203BF4
- mov r1, r6
- mov r2, r5
- bl MOD04_0220394C
- cmp r0, r8
- movgt r8, r0
- ldr r0, [r4, sb, lsl #2]
- add sb, sb, #1
- add r7, r7, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp sb, r0
- blt _021E2FB4
-_021E2FF8:
- mov r0, #0x64
- bl MOD04_021DE8C8
- mov sb, r0
- mov r6, #0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E3090
- add r5, sp, #0
- mov fp, r6
- mov r4, #0x64
-_021E3028:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_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 ; =UNK04_0220BAC4
- 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 MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r6, r0
- blt _021E3028
-_021E3090:
- mvn r0, #0x80000000
- cmp r8, r0
- addlt r8, r8, #1
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r6
- bl MOD04_02203BF4
- ldr r1, _021E30DC ; =UNK04_0220D3A0
- mov r2, r8
- bl MOD04_02203A48
- bl MOD04_021E26E4
- mov r1, #0
- ldr r0, [r0, #0xe4]
- ldr r2, _021E30DC ; =UNK04_0220D3A0
- mov r3, r1
- bl MOD04_02203BD4
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E30D8: .word UNK04_0220BAC4
-_021E30DC: .word UNK04_0220D3A0
- arm_func_end MOD04_021E2F68
-
- arm_func_start MOD04_021E30E0
-MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E3268
- mov r0, #0x80
- mov r4, #1
- mov r5, r8
- str r0, [sp, #8]
- mov fp, #0x100
-_021E3120:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r8
- bl MOD04_02203BF4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E31BC
- ldr r1, _021E32D4 ; =UNK04_0220D3AC
- mov r0, r6
- mov r2, r5
- bl MOD04_0220394C
- mov sb, r0
- mov sl, r5
- mov r7, r4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E31B4
-_021E3170:
- bl MOD04_021E26E4
- add r0, r0, r7, lsl #2
- ldr r0, [r0, #0xf4]
- cmp sb, r0
- bne _021E31A0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r6
- bl MOD04_02203C50
- mov sl, r4
- sub r8, r8, #1
- b _021E31B4
-_021E31A0:
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E3170
-_021E31B4:
- cmp sl, #0
- bne _021E3250
-_021E31BC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x474]
- cmp r0, #0
- beq _021E3238
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_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 MOD04_021DE8C8
- orr r2, r0, r7, lsl #8
- ldr r1, _021E32DC ; =UNK04_0220D3A0
- mov r0, r6
- bl MOD04_02203A48
- b _021E3250
-_021E321C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, r6
- bl MOD04_02203C50
- str r4, [sp, #4]
- sub r8, r8, #1
- b _021E3250
-_021E3238:
- ldr r0, [sp, #8]
- bl MOD04_021DE8C8
- mov r2, r0
- ldr r1, _021E32DC ; =UNK04_0220D3A0
- mov r0, r6
- bl MOD04_02203A48
-_021E3250:
- add r8, r8, #1
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r8, r0
- blt _021E3120
-_021E3268:
- ldr r0, [sp]
- cmp r0, #0
- beq _021E32A0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E32A0
- bl MOD04_021E26E4
- mov r1, #0
- ldr r0, [r0, #0xe4]
- ldr r2, _021E32DC ; =UNK04_0220D3A0
- mov r3, r1
- bl MOD04_02203BD4
-_021E32A0:
- ldr r0, [sp, #4]
- cmp r0, #0
- beq _021E32C8
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_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 UNK04_0220D3AC
-_021E32D8: .word 0x007FFFFF
-_021E32DC: .word UNK04_0220D3A0
- arm_func_end MOD04_021E30E0
-
- arm_func_start MOD04_021E32E0
-MOD04_021E32E0: ; 0x021E32E0
- bx lr
- arm_func_end MOD04_021E32E0
-
- arm_func_start MOD04_021E32E4
-MOD04_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 MOD04_021E32E0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E331C:
- mov r5, #0
- bl MOD04_02203BE4
- cmp r0, #0
- ble _021E336C
-_021E332C:
- mov r0, r6
- mov r1, r5
- bl MOD04_02203BF4
- mov r4, r0
- bl MOD04_021E3F98
- cmp r0, #0
- bne _021E3358
- mov r0, r6
- mov r1, r4
- bl MOD04_02203C50
- sub r5, r5, #1
-_021E3358:
- mov r0, r6
- add r5, r5, #1
- bl MOD04_02203BE4
- cmp r5, r0
- blt _021E332C
-_021E336C:
- bl MOD04_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 MOD04_02203BE4
- cmp r0, #0
- ble _021E3424
-_021E33A8:
- mov r0, r6
- mov r1, r5
- bl MOD04_02203BF4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- beq _021E3410
- bl MOD04_021E26E4
- mov r7, r0
- mov r0, r4
- bl MOD04_02203908
- ldr r1, [r7, #0x1c]
- cmp r1, r0
- bne _021E3410
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- cmp r0, #0
- beq _021E3410
- bl MOD04_021E26E4
- mov r7, r0
- mov r0, r4
- bl MOD04_022038E4
- ldrh r1, [r7, #0x1a]
- cmp r1, r0
- beq _021E3424
-_021E3410:
- mov r0, r6
- add r5, r5, #1
- bl MOD04_02203BE4
- cmp r5, r0
- blt _021E33A8
-_021E3424:
- mov r0, r6
- bl MOD04_02203BE4
- cmp r5, r0
- bge _021E3464
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3464:
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_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 MOD04_021E30E0
- bl MOD04_021E2F68
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E34E0
- mov r0, #0
- mov r1, r0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E34E0:
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_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 MOD04_02203BE4
- cmp r0, #0
- beq _021E3580
- mov r4, #0
-_021E351C:
- mov r0, r6
- mov r1, r4
- bl MOD04_02203BF4
- mov r5, r0
- bl MOD04_02203908
- mov r7, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1b8]
- cmp r7, r0
- bne _021E3564
- mov r0, r5
- bl MOD04_022038E4
- mov r7, r0
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb4]
- cmp r7, r0
- beq _021E3580
-_021E3564:
- mov r0, r6
- mov r1, r5
- bl MOD04_02203C50
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- bne _021E351C
-_021E3580:
- mov r0, r6
- bl MOD04_02203BE4
- cmp r0, #0
- beq _021E3684
- mov r0, r6
- mov r1, #0
- bl MOD04_02203BF4
- ldr r1, _021E36AC ; =UNK04_0220D3AC
- mov r2, #0
- bl MOD04_0220394C
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E3650
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r4, r0
- bne _021E3650
- mov r0, #0
- bl MOD04_021E30E0
- cmp r0, #0
- beq _021E3604
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E3650
- bl MOD04_021E5824
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E3650
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3604:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, r0
- mov r0, #0
- ldr r2, [r1, #0xf4]
- mov r1, r0
- bl MOD04_021E5D30
- bl MOD04_021E61EC
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3650:
- mov r0, #6
- bl MOD04_021E26D0
- mov r0, r6
- mov r1, #0
- bl MOD04_02203BF4
- mov r2, r0
- mov r0, #0
- mov r1, r0
- bl MOD04_021E7B04
- bl MOD04_021E37A4
- add sp, sp, #4
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E3684:
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_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 UNK04_0220D3AC
- arm_func_end MOD04_021E32E4
-
- arm_func_start MOD04_021E36B0
-MOD04_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 MOD04_021E8E08
-_021E3748:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E3750: .word 0xFFFEAC28
- arm_func_end MOD04_021E36B0
-
- arm_func_start MOD04_021E3754
-MOD04_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 MOD04_021E8E08
-_021E3798:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E37A0: .word 0xFFFEB007
- arm_func_end MOD04_021E3754
-
- arm_func_start MOD04_021E37A4
-MOD04_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 MOD04_021E8E08
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E37FC: .word 0xFFFEB010
- arm_func_end MOD04_021E37A4
-
- arm_func_start MOD04_021E3800
-MOD04_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 MOD04_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 MOD04_021E0EAC
- b _021E38D4
-_021E389C:
- ldr r1, _021E38DC ; =0xFFFEDEF0
- mov r0, r4
- add r1, r5, r1
- bl MOD04_021E2114
- b _021E38D4
-_021E38B0:
- ldr r1, _021E38E0 ; =0xFFFEB7E0
- mov r0, r4
- add r1, r5, r1
- bl MOD04_021E8E08
- b _021E38D4
-_021E38C4:
- ldr r1, _021E38E4 ; =0xFFFE90D0
- mov r0, r4
- add r1, r5, r1
- bl MOD04_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_end MOD04_021E3800
-
- arm_func_start MOD04_021E38E8
-MOD04_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 MOD04_021E8E08
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E3978: .word 0xFFFEB3F8
- arm_func_end MOD04_021E38E8
-
- arm_func_start MOD04_021E397C
-MOD04_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 MOD04_021E8E08
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E39EC: .word 0xFFFEC398
- arm_func_end MOD04_021E397C
-
- arm_func_start MOD04_021E39F0
-MOD04_021E39F0: ; 0x021E39F0
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
- sub sp, sp, #8
- ldr r0, _021E3E1C ; =UNK04_022106D4
- 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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x13
- bne _021E3C58
- mov r0, #0
- bl MOD04_021E3EC4
- ldr r1, _021E3E1C ; =UNK04_022106D4
- ldr r5, [r1]
- ldr r1, [r5, #8]
- cmp r1, r0
- bne _021E3B2C
- ldr r1, [r5, #0xc]
- cmp r1, r0
- bne _021E3AB8
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x16]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, #0
- sub r1, r1, #1
- strb r1, [r4, #0x1a4]
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E3B0C
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_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 MOD04_021E26D0
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_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 MOD04_021E3E28
- bl MOD04_021E4B40
- mov r0, #1
- bl MOD04_021E4CF8
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3B98:
- mov r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E3C3C
- ldr r8, _021E3E1C ; =UNK04_022106D4
- mov r5, #0
- mov r4, #0x11
- mov r6, r7
-_021E3BBC:
- bl MOD04_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 MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3C28:
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E3BBC
-_021E3C3C:
- ldr r0, _021E3E1C ; =UNK04_022106D4
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- beq _021E3C7C
- bl MOD04_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 ; =UNK04_022106D4
- ldr r4, [r0]
- bl MOD04_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 ; =UNK04_022106D4
- 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 ; =UNK04_022106D4
- 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 MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r0, #0
- beq _021E3D74
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E3D74:
- mov r0, #0x13
- bl MOD04_021E26D0
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E3DF8
- mov r6, #0
- mov r5, #0x11
-_021E3D98:
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E3D98
-_021E3DF8:
- ldr r0, _021E3E1C ; =UNK04_022106D4
- 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 UNK04_022106D4
-_021E3E20: .word 0x000082EA
-_021E3E24: .word 0x00001770
- arm_func_end MOD04_021E39F0
-
- arm_func_start MOD04_021E3E28
-MOD04_021E3E28: ; 0x021E3E28
- stmdb sp!, {r4, lr}
- ldr r1, _021E3E98 ; =UNK04_022106D4
- 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 ; =UNK04_022106D4
- cmp r4, #0
- ldr r2, [r2]
- str r0, [r2, #0x18]
- str r1, [r2, #0x1c]
- ldmneia sp!, {r4, pc}
- bl OS_GetTick
- ldr r2, _021E3E98 ; =UNK04_022106D4
- ldr r2, [r2]
- str r0, [r2, #0x10]
- str r1, [r2, #0x14]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E3E98: .word UNK04_022106D4
- arm_func_end MOD04_021E3E28
-
- arm_func_start MOD04_021E3E9C
-MOD04_021E3E9C: ; 0x021E3E9C
- stmdb sp!, {r4, lr}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1f8]
- str r1, [r4, #0x1fc]
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E3E9C
-
- arm_func_start MOD04_021E3EC4
-MOD04_021E3EC4: ; 0x021E3EC4
- stmdb sp!, {r4, r5, r6, lr}
- cmp r0, #0
- mov r6, #0
- beq _021E3EE4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x2f0]
- bic r0, r0, #1
- ldmia sp!, {r4, r5, r6, pc}
-_021E3EE4:
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E3F20
- mov r4, r5
-_021E3EFC:
- bl MOD04_021E26E4
- add r0, r0, r5
- ldrb r0, [r0, #0x2d0]
- add r5, r5, #1
- orr r6, r6, r4, lsl r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E3EFC
-_021E3F20:
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E3EC4
-
- arm_func_start MOD04_021E3F28
-MOD04_021E3F28: ; 0x021E3F28
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- cmp r1, #0
- moveq r4, #1
- mov r5, r0
- movne r4, #0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- bgt _021E3F8C
-_021E3F50:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r5, r0
- bne _021E3F78
- bl MOD04_021E26E4
- add r0, r0, r4
- add sp, sp, #4
- ldrb r0, [r0, #0x2d0]
- ldmia sp!, {r4, r5, pc}
-_021E3F78:
- add r4, r4, #1
- bl MOD04_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_end MOD04_021E3F28
-
- arm_func_start MOD04_021E3F98
-MOD04_021E3F98: ; 0x021E3F98
- stmdb sp!, {r4, lr}
- ldr r1, _021E405C ; =UNK04_0220D3B4
- mvn r2, #0
- mov r4, r0
- bl MOD04_0220394C
- mvn r2, #0
- cmp r0, r2
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4060 ; =UNK04_0220D3C0
- mov r0, r4
- bl MOD04_0220394C
- mvn r2, #0
- cmp r0, r2
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4064 ; =UNK04_0220D3CC
- mov r0, r4
- bl MOD04_0220394C
- mvn r2, #0
- cmp r0, r2
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4068 ; =UNK04_0220D3D8
- mov r0, r4
- bl MOD04_0220394C
- mvn r1, #0
- cmp r0, r1
- bne _021E4028
- ldr r1, _021E4068 ; =UNK04_0220D3D8
- mov r0, r4
- mov r2, #0
- bl MOD04_0220394C
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
-_021E4028:
- ldr r1, _021E406C ; =UNK04_0220D3E4
- mov r0, r4
- mvn r2, #0
- bl MOD04_0220394C
- mvn r1, #0
- cmp r0, r1
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r1, _021E4070 ; =UNK04_0220D3AC
- mov r0, r4
- mov r2, #0
- bl MOD04_0220394C
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E405C: .word UNK04_0220D3B4
-_021E4060: .word UNK04_0220D3C0
-_021E4064: .word UNK04_0220D3CC
-_021E4068: .word UNK04_0220D3D8
-_021E406C: .word UNK04_0220D3E4
-_021E4070: .word UNK04_0220D3AC
- arm_func_end MOD04_021E3F98
-
- arm_func_start MOD04_021E4074
-MOD04_021E4074: ; 0x021E4074
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x2fc]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- mov r4, #0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x344]
- cmp r0, #0
- ble _021E40E8
-_021E40AC:
- bl MOD04_021E26E4
- add r0, r0, r4
- ldrb r0, [r0, #0x304]
- bl MOD04_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 MOD04_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_end MOD04_021E4074
-
- arm_func_start MOD04_021E40F4
-MOD04_021E40F4: ; 0x021E40F4
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, #0
- mov r4, r6
-_021E4100:
- mov r5, r4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r0, #0
- blt _021E413C
-_021E4114:
- bl MOD04_021E26E4
- add r0, r0, r5
- ldrb r0, [r0, #0x2d0]
- cmp r6, r0
- beq _021E413C
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r5, r0
- ble _021E4114
-_021E413C:
- bl MOD04_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_end MOD04_021E40F4
-
- arm_func_start MOD04_021E4164
-MOD04_021E4164: ; 0x021E4164
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r6, _021E41BC ; =UNK04_02210704
- 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 MOD04_021DD904
-_021E4194:
- add r7, r7, #1
- cmp r7, #0x9a
- add r6, r6, #0xc
- blt _021E417C
- ldr r1, _021E41BC ; =UNK04_02210704
- 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 UNK04_02210704
-_021E41C0: .word 0x00000738
- arm_func_end MOD04_021E4164
-
- arm_func_start MOD04_021E41C4
-MOD04_021E41C4: ; 0x021E41C4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- beq _021E41FC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xe
- beq _021E41FC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xf
- bne _021E4240
-_021E41FC:
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0xe
- bl MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x1ac]
- add r1, r1, #1
- strb r1, [r0, #0x1ac]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ac]
- cmp r0, #5
- bls _021E4330
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d8]
- bl MOD04_021E4A00
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E4324
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ac]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1e8]
- str r1, [r4, #0x1ec]
- b _021E43CC
-_021E4324:
- mov r0, #2
- bl MOD04_021E4CF8
- b _021E43CC
-_021E4330:
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E43CC
- mov r5, #0xd
- mov r6, r4
-_021E434C:
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- mov r1, r5
- bl MOD04_021E4604
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
-_021E4394:
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E434C
- b _021E43CC
-_021E43AC:
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb2]
- cmp r5, r0, asr #31
- cmpeq r4, r0
- bls _021E43CC
- mov r0, #2
- bl MOD04_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_end MOD04_021E41C4
-
- arm_func_start MOD04_021E43E0
-MOD04_021E43E0: ; 0x021E43E0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- beq _021E443C
- mov r0, #8
- bl MOD04_021E26D0
- mov r0, r4
- bl MOD04_021E4B78
-_021E443C:
- mov r0, r6
- mov r1, #0xe
- bl MOD04_021E4604
- cmp r0, #0
- bne _021E45F8
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E4458:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xe
- bne _021E45C4
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb2]
- cmp r4, r0, asr #31
- cmpeq r5, r0
- bls _021E4524
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r5, [r0, #0xb2]
-_021E4524:
- mov r0, r6
- mov r1, #0
- bl MOD04_021E3F28
- mov r4, r0
- cmp r4, #0xff
- beq _021E4550
- bl MOD04_021E26E4
- ldr r2, [r0, #0x1d8]
- mov r1, #1
- orr r1, r2, r1, lsl r4
- str r1, [r0, #0x1d8]
-_021E4550:
- mov r0, #1
- bl MOD04_021E3EC4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d8]
- cmp r4, r0
- bne _021E45F8
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E45B8
- mov r4, #0xf
-_021E4584:
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- mov r1, r4
- bl MOD04_021E4604
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E4584
-_021E45B8:
- mov r0, #0xf
- bl MOD04_021E26D0
- b _021E45F8
-_021E45C4:
- mov r0, r6
- mov r1, #0xf
- bl MOD04_021E4604
- cmp r0, #0
- bne _021E45F8
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E45E0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #8
- bne _021E45F8
- mov r0, #2
- bl MOD04_021E4CF8
-_021E45F8:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E4600: .word 0x000082EA
- arm_func_end MOD04_021E43E0
-
- arm_func_start MOD04_021E4604
-MOD04_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 MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x10
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_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_end MOD04_021E4604
-
- arm_func_start MOD04_021E4684
-MOD04_021E4684: ; 0x021E4684
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #9
- beq _021E46BC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x10
- beq _021E46BC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x11
- bne _021E4700
-_021E46BC:
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_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 MOD04_021DF88C
- cmp r0, #5
- bne _021E477C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ad]
- cmp r0, #5
- blo _021E477C
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E48FC
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E477C:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ad]
- add r1, r1, #1
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x2d0]
- mov r1, #3
- bl MOD04_021E4910
- b _021E48FC
-_021E47A0:
- ldr r0, _021E490C ; =0x00001770
- cmp r5, #0
- cmpeq r4, r0
- bls _021E48FC
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ab]
- add r1, r1, #1
- strb r1, [r0, #0x1ab]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ab]
- cmp r0, #5
- bls _021E4870
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E47F0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E4800
-_021E47F0:
- bl MOD04_021E4B40
- mov r0, #1
- bl MOD04_021E4CF8
- b _021E48FC
-_021E4800:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d4]
- bl MOD04_021E4A00
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E4850
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ab]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1e0]
- str r1, [r4, #0x1e4]
- b _021E48FC
-_021E4850:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E48FC
- mov r5, #2
- mov r6, r4
-_021E488C:
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, r4
- ldrb r0, [r0, #0x2d0]
- mov r1, r5
- bl MOD04_021E4910
-_021E48C4:
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E488C
- b _021E48FC
-_021E48DC:
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb0]
- cmp r5, r0, asr #31
- cmpeq r4, r0
- bls _021E48FC
- mov r0, #4
- bl MOD04_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_end MOD04_021E4684
-
- arm_func_start MOD04_021E4910
-MOD04_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 MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blo _021E49D0
-_021E4974:
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r6, r0
- bls _021E4974
- b _021E49D0
-_021E49AC:
- bl MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb0]
- strb r0, [sp]
- bl MOD04_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 MOD04_021EAF20
- bl MOD04_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_end MOD04_021E4910
-
- arm_func_start MOD04_021E4A00
-MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E4A8C
- add r4, sp, #8
- add r5, sp, #0x88
- mov r6, r7
-_021E4A34:
- bl MOD04_021E26E4
- add r0, r0, r7
- ldrb r0, [r0, #0x2d0]
- mov r0, r6,lsl r0
- ands r0, sl, r0
- beq _021E4A64
- bl MOD04_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 MOD04_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 MOD04_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 MOD04_021E7884
- bl MOD04_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 MOD04_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 MOD04_021E3F28
- cmp r0, #0xff
- beq _021E4B1C
- bl MOD04_021DF9D4
-_021E4B1C:
- add r6, r6, #1
- cmp r6, sb
- blt _021E4B04
-_021E4B28:
- bl MOD04_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_end MOD04_021E4A00
-
- arm_func_start MOD04_021E4B40
-MOD04_021E4B40: ; 0x021E4B40
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- mov r1, #2
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E4B40
-
- arm_func_start MOD04_021E4B78
-MOD04_021E4B78: ; 0x021E4B78
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl MOD04_021E26E4
- str r5, [r0, #0x20c]
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, r5
- add r1, r1, #1
- bl MOD04_021DF648
- movs r4, r0
- beq _021E4BD4
- bl MOD04_021E26E4
- mov r1, #2
- strb r1, [r0, #0x1a8]
- ldr r0, [r4]
- bl MOD04_021FD488
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- add sp, sp, #4
- mov r0, #1
- ldmia sp!, {r4, r5, pc}
-_021E4BD4:
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- mov r0, r5
- add r1, r1, #1
- bl MOD04_021E89EC
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E4B78
-
- arm_func_start MOD04_021E4BF4
-MOD04_021E4BF4: ; 0x021E4BF4
- stmdb sp!, {r4, lr}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- beq _021E4CA4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E4C64
- mov r0, #3
- bl MOD04_021E26D0
- mov r0, #0
- bl MOD04_021E7E5C
- mov r4, r0
- bl MOD04_021E38E8
- cmp r0, #0
- beq _021E4CAC
- mov r0, r4
- ldmia sp!, {r4, pc}
-_021E4C64:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E4CAC
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- mov r1, #0
- bl MOD04_021E6038
- mov r4, r0
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E4CAC
- mov r0, r4
- ldmia sp!, {r4, pc}
-_021E4CA4:
- mov r0, #1
- bl MOD04_021E4CF8
-_021E4CAC:
- mov r0, #0
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E4BF4
-
- arm_func_start MOD04_021E4CB4
-MOD04_021E4CB4: ; 0x021E4CB4
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E4B40
- mov r0, #1
- bl MOD04_021E4CF8
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E4CB4
-
- arm_func_start MOD04_021E4CF8
-MOD04_021E4CF8: ; 0x021E4CF8
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #8
- movs r4, r0
- bne _021E4D14
- bl MOD04_021E4ED4
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021E4D14:
- bl MOD04_021E8174
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E4D38
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E4D94
-_021E4D38:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r6, #1
- movne r6, #0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_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 MOD04_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 MOD04_021E7E5C
- bl MOD04_021E38E8
- add sp, sp, #8
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021E4DC8:
- bl MOD04_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 MOD04_021E5D30
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E4CF8
-
- arm_func_start MOD04_021E4E00
-MOD04_021E4E00: ; 0x021E4E00
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- mov r4, #0
- str r4, [sp, #8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E4EC8
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20]
- cmp r0, #0
- beq _021E4EC8
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r1, [r5, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- beq _021E4EC8
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E7884
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_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_end MOD04_021E4E00
-
- arm_func_start MOD04_021E4ED4
-MOD04_021E4ED4: ; 0x021E4ED4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- ldr r1, _021E4F90 ; =UNK04_0220D3F0
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_021E397C
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E8034
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- movne r6, #1
- bne _021E4F28
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- moveq r6, #1
- movne r6, #0
-_021E4F28:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r7, #1
- movne r7, #0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a9]
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E4F90: .word UNK04_0220D3F0
- arm_func_end MOD04_021E4ED4
-
- arm_func_start MOD04_021E4F94
-MOD04_021E4F94: ; 0x021E4F94
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #2
- bne _021E4FC4
- bl MOD04_021E4ED4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E4FC4:
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E5038
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E5010
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- b _021E502C
-_021E5010:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
-_021E502C:
- bl MOD04_021E4ED4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E5038:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #5
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #7
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- beq _021E5098
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- bne _021E50D8
-_021E5098:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r0, #0
- beq _021E50C4
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5BF0
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
-_021E50C4:
- bl MOD04_021E4E00
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
-_021E50D8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E5100
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E5100:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E512C
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
-_021E512C:
- bl MOD04_021E4ED4
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E4F94
-
- arm_func_start MOD04_021E5138
-MOD04_021E5138: ; 0x021E5138
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- beq _021E5168
- bl MOD04_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 MOD04_021E4074
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- beq _021E51AC
- bl MOD04_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_end MOD04_021E5138
-
- arm_func_start MOD04_021E51C0
-MOD04_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 MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- ldrb r1, [r6, #0x1a4]
- sub r0, r0, #1
- cmp r1, r0
- bge _021E52B0
- mov r0, #0xd
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- add r0, r0, #1
- add r0, r5, r0, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [sp, #8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- add r0, r0, #1
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- add r0, r0, #1
- add r0, r5, r0
- ldrb r0, [r0, #0x2d0]
- str r0, [sp, #0x10]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a4]
- add r0, r0, #1
- add r0, r5, r0, lsl #2
- ldr r0, [r0, #0x24]
- str r0, [sp, #0x14]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E26E4
- mov r1, r4
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, r4
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E52F0
- mov r0, r5
- bl MOD04_021E26D0
- b _021E5314
-_021E52F0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E530C
- mov r0, #4
- bl MOD04_021E26D0
- b _021E5314
-_021E530C:
- mov r0, #0xa
- bl MOD04_021E26D0
-_021E5314:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E534C
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r1, [r6, #0xd]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- bne _021E53FC
-_021E534C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E5384
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r6, r0, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [r7, #0x20c]
- b _021E53A4
-_021E5384:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r6, #0xf4]
-_021E53A4:
- mov r0, #0x10
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1d4]
- mov r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E54EC
- mov r6, #2
-_021E53D0:
- bl MOD04_021E26E4
- add r0, r0, r7
- ldrb r0, [r0, #0x2d0]
- mov r1, r6
- bl MOD04_021E4910
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r7, r0
- ble _021E53D0
- b _021E54EC
-_021E53FC:
- mov r0, #0
- str r0, [sp, #8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r6, r0
- ldrb r0, [r0, #0x2d0]
- str r0, [sp, #0x10]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E5460
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r6, r0
- bl OS_GetTick
- str r0, [r6, #0xec]
- str r1, [r6, #0xf0]
- b _021E54EC
-_021E5460:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E54EC
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- bne _021E54EC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #2
- blo _021E54EC
- bl MOD04_021E26E4
- mov r8, r0
- mov r0, #0
- bl MOD04_021E3EC4
- mov r6, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_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 MOD04_021E4CB4
- b _021E57E8
-_021E54EC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- movne r4, #1
-_021E54FC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x10
- beq _021E57E8
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x3cd]
- b _021E57E8
-_021E5594:
- mov r0, #1
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E55D0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E26D0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E5600
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5620
-_021E5600:
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r5, #0x20]
-_021E5620:
- bl MOD04_021E3E9C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- bls _021E57E8
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_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 MOD04_021E26D0
- bl MOD04_021E3E9C
- bl MOD04_021E26E4
- mov r1, r4
- str r1, [r0, #0x20c]
- mov r4, #1
- b _021E57E8
-_021E56BC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- beq _021E56DC
- ldr r1, _021E581C ; =UNK04_0220D3F0
- mov r0, #2
- mov r2, r4
- bl MOD04_021E1E30
-_021E56DC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r7, #1
- movne r7, #0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r5, r0
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E5750
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5758
-_021E5750:
- bl MOD04_021E8034
- b _021E57DC
-_021E5758:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- beq _021E5780
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203E80
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe4]
-_021E5780:
- bl MOD04_02200D6C
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E57C8
- bl MOD04_021E85D4
- bl MOD04_021E397C
- cmp r0, #0
- addne sp, sp, #0x20
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- ldr r0, _021E5820 ; =UNK04_022106DC
- ldrb r1, [r0]
- cmp r1, #1
- moveq r1, #1
- streqb r1, [r0, #1]
- mov r0, #0xa
- bl MOD04_021E26D0
- b _021E57D0
-_021E57C8:
- mov r0, #1
- bl MOD04_021E26D0
-_021E57D0:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
-_021E57DC:
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- addeq sp, sp, #0x20
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203C04
- add sp, sp, #0x20
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- .align 2, 0
-_021E581C: .word UNK04_0220D3F0
-_021E5820: .word UNK04_022106DC
- arm_func_end MOD04_021E51C0
-
- arm_func_start MOD04_021E5824
-MOD04_021E5824: ; 0x021E5824
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #0xc
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E58BC
- mov r5, #0xa
-_021E5844:
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E7884
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E5844
-_021E58BC:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- bl MOD04_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_end MOD04_021E5824
-
- arm_func_start MOD04_021E5908
-MOD04_021E5908: ; 0x021E5908
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E5950
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E5938
- bl MOD04_021E4B40
-_021E5938:
- ldr r1, _021E59D0 ; =0xFFFEC5D2
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E5950:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r5, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E5998
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E5998:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E59B0
- bl MOD04_021E4CB4
- b _021E59C4
-_021E59B0:
- mov r0, #4
- bl MOD04_021E26D0
- mov r0, #0
- bl MOD04_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_end MOD04_021E5908
-
- arm_func_start MOD04_021E59D4
-MOD04_021E59D4: ; 0x021E59D4
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E5A0C
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
-_021E5A3C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0x1f
- bhs _021E5A6C
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- mov r1, #0
- add r0, r0, #1
- add r0, r6, r0, lsl #2
- str r1, [r0, #0xf4]
-_021E5A6C:
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E5AA0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E5AA0:
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r6, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- cmp r4, #0
- bne _021E5AE0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E5BE8
- bl MOD04_021E4CB4
- b _021E5BE8
-_021E5AE0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E5B1C
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #2
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- str r1, [r4, #0xf0]
- b _021E5BE8
-_021E5B1C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5B48
- mov r0, #4
- bl MOD04_021E26D0
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- b _021E5BE8
-_021E5B48:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E5BE8
- mov r0, #0xe
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1d8]
- bl MOD04_021E26E4
- add r1, r0, #0x100
- mov r2, #0
- mov r0, r5
- strh r2, [r1, #0xb2]
- bl MOD04_021E4B78
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E5BD0
- mov r4, #0xd
-_021E5B9C:
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- mov r1, r4
- bl MOD04_021E4604
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E5B9C
-_021E5BD0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- bne _021E5BE8
- mov r0, #2
- bl MOD04_021E4CF8
-_021E5BE8:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E59D4
-
- arm_func_start MOD04_021E5BF0
-MOD04_021E5BF0: ; 0x021E5BF0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xc
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E7884
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- mov r0, r4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E5BF0
-
- arm_func_start MOD04_021E5C44
-MOD04_021E5C44: ; 0x021E5C44
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1cc]
- str r1, [r4, #0x1d0]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E5CC0
- mov r0, #3
- bl MOD04_021E26D0
- mov r0, #0
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- cmp r0, #0
- beq _021E5D20
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E5CC0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E5CF8
- mov r0, #0
- mov r1, r0
- mov r2, r5
- bl MOD04_021E5D30
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E5D20
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E5CF8:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E5D20
- ldr r1, _021E5D2C ; =0xFFFEC5E6
- mov r0, #6
- bl MOD04_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_end MOD04_021E5C44
-
- arm_func_start MOD04_021E5D30
-MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x1a5]
- str r0, [sp, #0xc]
- b _021E5D90
-_021E5D58:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x1a5]
- add r1, r1, #1
- strb r1, [r0, #0x1a5]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r1, [r6, #0x1a5]
- ldr r0, [r0, #0x344]
- cmp r1, r0
- blt _021E5DFC
- bl MOD04_021E26E4
- strb r8, [r0, #0x1a5]
-_021E5DFC:
- cmp sb, #0
- beq _021E5E50
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1a5]
- ldr r0, [sp, #0xc]
- cmp r0, r1
- bne _021E5E50
- bl MOD04_021E26E4
- ldr r1, _021E6028 ; =0x00000BB8
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1cc]
- str r1, [r4, #0x1d0]
- bl MOD04_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 MOD04_021E0F00
- mov fp, r0
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 DWC_GetGsProfileId
- movs sl, r0
- beq _021E5DB4
- mvn r0, #0
- cmp sl, r0
- beq _021E5DB4
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov fp, r0
- bl MOD04_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 DWCi_Acc_IsValidFriendData
- cmp r0, #0
- beq _021E5DB4
- mov r6, r7
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E5F1C
-_021E5EF4:
- bl MOD04_021E26E4
- add r0, r0, r6, lsl #2
- ldr r0, [r0, #0xf4]
- cmp sl, r0
- beq _021E5F1C
- add r6, r6, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r6, r0
- ble _021E5EF4
-_021E5F1C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r6, r0
- ble _021E5DB4
- bl MOD04_021E26E4
- ldr r0, [r0]
- mov r1, sl
- add r2, sp, #0x18
- bl MOD04_021F0664
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0]
- ldr r1, [sp, #0x18]
- add r2, sp, #0x28
- bl MOD04_021F06E4
- orrs r0, r6, r0
- bne _021E5DB4
- ldr r0, [sp, #0x2c]
- cmp r0, #4
- bne _021E5DB4
- ldr r0, _021E602C ; =UNK04_0220D3F4
- add r1, sp, #0x1c
- add r2, sp, #0x30
- mov r3, r5
- bl MOD04_021DE9F4
- mov r6, r0
- ldr r0, _021E6030 ; =UNK04_0220D3F8
- add r1, sp, #0x12
- add r2, sp, #0x30
- mov r3, r5
- bl MOD04_021DE9F4
- mov fp, r0
- ldr r0, _021E6034 ; =UNK04_0220D3FC
- add r1, sp, #0x10
- add r2, sp, #0x30
- mov r3, r5
- bl MOD04_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 MOD04_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 MOD04_021E6038
- add sp, sp, #0x23c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021E6028: .word 0x00000BB8
-_021E602C: .word UNK04_0220D3F4
-_021E6030: .word UNK04_0220D3F8
-_021E6034: .word UNK04_0220D3FC
- arm_func_end MOD04_021E5D30
-
- arm_func_start MOD04_021E6038
-MOD04_021E6038: ; 0x021E6038
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x14
- mov r5, r0
- cmp r1, #0
- bne _021E606C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- bne _021E60A0
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- cmp r0, #0
- bne _021E60A0
-_021E606C:
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1c0]
- str r1, [r4, #0x1c4]
- bl MOD04_021E26E4
- str r5, [r0, #0xf4]
- add sp, sp, #0x14
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E60A0:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6124
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, #0
- bl MOD04_02203BF4
- mov r6, r0
- bl MOD04_021E26E4
- mov r4, r0
- ldr r1, _021E61E4 ; =UNK04_0220D3AC
- mov r0, r6
- mov r2, #0
- bl MOD04_0220394C
- str r0, [r4, #0xf4]
- bl MOD04_021E26E4
- mov r4, r0
- mov r0, r6
- bl MOD04_02203908
- str r0, [r4, #0x24]
- bl MOD04_021E26E4
- mov r4, r0
- mov r0, r6
- bl MOD04_022038E4
- strh r0, [r4, #0xa4]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r4, #1
- str r0, [r6, #0x204]
- b _021E6160
-_021E6124:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E613C
- bl MOD04_021E26E4
- str r5, [r0, #0xf4]
-_021E613C:
- bl MOD04_021E26E4
- str r5, [r0, #0x204]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- mov r4, #3
- str r0, [sp, #0x10]
-_021E6160:
- bl MOD04_021E26E4
- ldr r1, _021E61E8 ; =0x00001770
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r6, r0
- bl OS_GetTick
- str r0, [r6, #0x1cc]
- str r1, [r6, #0x1d0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- movne r7, #0xb
- moveq r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- str r0, [sp, #8]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E7884
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E61E4: .word UNK04_0220D3AC
-_021E61E8: .word 0x00001770
- arm_func_end MOD04_021E6038
-
- arm_func_start MOD04_021E61EC
-MOD04_021E61EC: ; 0x021E61EC
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6210
- mov r0, r4
- bl MOD04_021E38E8
- ldmia sp!, {r4, pc}
-_021E6210:
- mov r0, r4
- bl MOD04_021E397C
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E61EC
-
- arm_func_start MOD04_021E621C
-MOD04_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 MOD04_021E26E4
- sub r2, r4, #2
- add r1, r0, #0x350
- add r0, r5, #4
- mov r2, r2, lsl #2
- bl MIi_CpuCopy32
-_021E6250:
- bl MOD04_021E26E4
- sub r1, r4, #1
- str r1, [r0, #0x348]
- bl MOD04_021E26E4
- str r6, [r0, #0x34c]
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E621C
-
- arm_func_start MOD04_021E6268
-MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E62A4
- bl MOD04_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 MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- str r6, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r7, r0, lsl #2
- str r6, [r0, #0xf4]
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r7, r0, lsl #2
- str r5, [r0, #0x24]
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r7, r0, lsl #1
- strh r4, [r0, #0xa4]
- bl MOD04_021E26E4
- str r5, [r0, #0x1b8]
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r4, [r0, #0xb4]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E40F4
- ldrb r1, [r4, #0x14]
- add r1, r1, #1
- add r1, r5, r1
- strb r0, [r1, #0x2d0]
- str r6, [sp, #8]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r0, #1
- blt _021E6414
- add r6, sp, #8
- mov r5, #2
- mov r4, #7
-_021E63B8:
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_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 MOD04_021E7884
- cmp r0, #0
- addne sp, sp, #0x14
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
- add r7, r7, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r7, r0
- ble _021E63B8
-_021E6414:
- mov r0, #1
- bl MOD04_021E3E28
- mov r0, #0
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_end MOD04_021E6268
-
- arm_func_start MOD04_021E6428
-MOD04_021E6428: ; 0x021E6428
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r8, r3
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E6490
- cmp r0, #1
- beq _021E6460
- cmp r0, #2
- beq _021E6670
- b _021E6724
-_021E6460:
- bl MOD04_021E26E4
- ldr r0, [r0]
- mov r1, r7
- bl MOD04_021F05F4
- cmp r0, #0
- moveq r4, #0xff
- beq _021E6724
- mov r0, r7
- bl MOD04_021E4074
- cmp r0, #0
- moveq r4, #3
- beq _021E6724
-_021E6490:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r8, r0
- bne _021E64F8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #0
- bne _021E64F8
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r4, #0x14]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- beq _021E64F8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E655C
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r4, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- bne _021E655C
-_021E64F8:
- mov r4, #3
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6724
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r0, [r0, #0xb4]
- cmp r0, #0
- bne _021E6724
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E6724
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r1, [r5, #0x20]
- ldr r0, [r0, #0x200]
- cmp r1, r0
- bne _021E6724
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- b _021E6724
-_021E655C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #3
- beq _021E657C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E65AC
-_021E657C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- bne _021E659C
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r0, #0
- beq _021E6668
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r7, r0
- bne _021E6610
- ldr r0, [sp, #0x18]
- cmp r0, #0
- bne _021E6600
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- cmp r0, r7
- bge _021E6608
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x200]
- cmp r0, r7
- bge _021E6660
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- bne _021E6660
-_021E663C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E5BF0
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0]
- mov r1, r7
- bl MOD04_021F05F4
- cmp r0, #0
- moveq r4, #0xff
- beq _021E6724
- cmp r8, #3
- bne _021E66B0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r4, #0x14]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- bne _021E66B8
-_021E66B0:
- mov r4, #3
- b _021E6724
-_021E66B8:
- ldr r0, _021E672C ; =UNK04_022106DC
- ldrb r1, [r0]
- cmp r1, #1
- bne _021E66D8
- ldrb r0, [r0, #1]
- cmp r0, #1
- moveq r4, #0x13
- beq _021E6724
-_021E66D8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xa
- bne _021E6718
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- cmp r0, #0
- bne _021E6708
- bl MOD04_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 UNK04_022106DC
- arm_func_end MOD04_021E6428
-
- arm_func_start MOD04_021E6730
-MOD04_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 MOD04_021E26E4
- cmp r0, #0
- beq _021E6770
- bl MOD04_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 MOD04_021DF88C
- cmp r0, #5
- bne _021E67AC
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E67AC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E67AC
- bl MOD04_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 MOD04_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 MOD04_021E6428
- mov r5, r0
- cmp r5, #2
- bne _021E6994
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1dc]
- mov r0, r8
- mov r1, r7
- mov r2, sl
- bl MOD04_021E6268
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x118
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E6918
- bl MOD04_021E26E4
- ldr r0, [r0, #0x46c]
- cmp r0, #0
- beq _021E6918
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, r8
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x470]
- ldr r2, [r6, #0x46c]
- mov r0, r4
- blx r2
-_021E6918:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- mov r4, #1
- str r0, [sp, #0x14]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r0, #1
- blt _021E6960
- add r6, sp, #0x14
-_021E693C:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [r6, r4, lsl #2]
- add r4, r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- cmp r4, r0
- ble _021E693C
-_021E6960:
- bl MOD04_021E26E4
- ldr r1, [r0, #0x1c]
- add r0, sp, #0x14
- str r1, [r0, r4, lsl #2]
- bl MOD04_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 MOD04_021E26D0
- b _021E69E0
-_021E6994:
- cmp r5, #3
- bne _021E69E0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x16]
- cmp r0, #0
- beq _021E69E0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldrb r1, [r6, #0x14]
- ldrb r0, [r0, #0x16]
- cmp r1, r0
- bne _021E69E0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #4]
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #8]
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #4]
- str r1, [r0, #0x1b8]
- bl MOD04_021E26E4
- ldr r1, [r6]
- add r0, r0, #0x100
- add r1, r6, r1, lsl #2
- ldr r1, [r1, #8]
- strh r1, [r0, #0xb4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E6B4C
- ldr r1, [r6]
- add r0, r6, #4
- bl MOD04_021E5138
- cmp r0, #0
- beq _021E6B08
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E6B4C
- mov r0, r8
- mov r1, r6
- bl MOD04_021E621C
- b _021E6B4C
-_021E6B08:
- mov r0, r8
- bl MOD04_021E5BF0
- bl MOD04_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 MOD04_021E5D30
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6BD0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E6B90
- mov r0, r8
- mov r1, r6
- bl MOD04_021E621C
- bl MOD04_021E5824
- bl MOD04_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 MOD04_021E26D0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- mov r1, #0
- bl MOD04_02203BF4
- mov r2, r0
- mov r0, #0
- mov r1, r0
- bl MOD04_021E7B04
- bl MOD04_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 MOD04_021E26D0
- mov r0, r8
- bl MOD04_021E7E5C
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E7608
- bl MOD04_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 MOD04_021E8E08
- add sp, sp, #0x118
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6C44:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E5C44
- add sp, sp, #0x118
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6C58:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #4
- bne _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x204]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1cc]
- str r1, [r4, #0x1d0]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- beq _021E6CAC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a7]
- cmp r0, #0x10
- blo _021E6CBC
-_021E6CAC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E6D00
-_021E6CBC:
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1c0]
- str r1, [r4, #0x1c4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E7608
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1a7]
- add r1, r1, #1
- strb r1, [r0, #0x1a7]
- b _021E7608
-_021E6D00:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E6D54
- mov r0, #3
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0xec]
- str r1, [r4, #0xf0]
- b _021E7608
-_021E6D54:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E7608
- mov r1, #0
- mov r2, r1
- mov r0, #1
- bl MOD04_021E5D30
- b _021E7608
-_021E6D78:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x17]
- cmp r0, #0
- beq _021E7608
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E6DD8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- bne _021E6DD8
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf8]
- cmp r8, r0
- bne _021E6DD8
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
-_021E6DD8:
- mov r0, r8
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E6E20
- mov r0, #6
- bl MOD04_021E26D0
- b _021E6E50
-_021E6E20:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- beq _021E6E40
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- bne _021E7608
-_021E6E40:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20]
- cmp r8, r0
- bne _021E7608
-_021E6E50:
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E26E4
- mov r6, r0
- bl MOD04_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 MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x194]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- mov r4, r0
- bl MOD04_021E26E4
- add r3, r0, #0x194
- mov r1, r4
- mov r0, #0
- add r2, sp, #0xc
- bl MOD04_021E2784
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- b _021E7608
-_021E6F04:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E7608
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E6F98
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- bne _021E6F98
- ldr r0, [sp, #8]
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x118
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E6F98:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- ldr r1, [sp, #8]
- add r0, r0, #1
- add r0, r5, r0, lsl #2
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r0, #1
- add r0, r5, r0
- strb r4, [r0, #0x2d0]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- bl MOD04_021E26E4
- ldr r0, [r0, #0x46c]
- cmp r0, #0
- beq _021E7608
- bl MOD04_021E26E4
- mov r5, r0
- ldr r0, [sp, #8]
- bl MOD04_021E1F18
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x470]
- ldr r2, [r5, #0x46c]
- mov r0, r4
- blx r2
- b _021E7608
-_021E701C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E7608
- bl MOD04_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 MOD04_021E26E4
- add r0, r5, r0
- strb r4, [r0, #0x2d0]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r2, [r0, #0x200]
- add r1, r4, r5, lsl #2
- mov r0, #3
- str r2, [r1, #0xf4]
- bl MOD04_021E51C0
- b _021E7608
-_021E7084:
- ldr r0, [r6, #8]
- ldr r4, [r6, #4]
- and r5, r0, #0xff
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r1, [sp, #8]
- ldr r0, [r0, #0xf4]
- cmp r1, r0
- bne _021E7104
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- sub r0, r0, #1
- cmp r4, r0
- bne _021E7104
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_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 MOD04_021E26E4
- ldr r1, [sp, #8]
- add r0, r0, r4, lsl #2
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- add r0, r4, r0
- strb r5, [r0, #0x2d0]
- bl MOD04_021E26E4
- ldr r1, [r6, #0xc]
- add r0, r0, r4, lsl #2
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- ldr r1, [r6, #0x10]
- add r0, r0, r4, lsl #1
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- ldr r1, [r6, #0xc]
- str r1, [r0, #0x1b8]
- bl MOD04_021E26E4
- add r1, r0, #0x100
- ldr r2, [r6, #0x10]
- mov r0, #5
- strh r2, [r1, #0xb4]
- bl MOD04_021E26D0
- ldr r0, [sp, #8]
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- cmp r0, #0
- addne sp, sp, #0x118
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- b _021E7608
-_021E719C:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xd
- bne _021E7608
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x1a4]
- add r1, r1, #1
- strb r1, [r0, #0x1a4]
- mov r0, #0
- bl MOD04_021E51C0
- b _021E7608
-_021E71F0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- beq _021E7210
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x12
- bne _021E7608
-_021E7210:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E7234
- ldr r1, [r6]
- add r0, r6, #4
- bl MOD04_021E5138
- cmp r0, #0
- beq _021E7250
-_021E7234:
- bl MOD04_021E26E4
- ldr r1, [r6, #4]
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- b _021E725C
-_021E7250:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
-_021E725C:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E7280
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- b _021E7608
-_021E7280:
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- cmp r8, r0
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E72C8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E72E4
-_021E72C8:
- mov r0, r8
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E7608
- bl MOD04_021E26E4
- str r8, [r0, #0x20c]
- bl MOD04_021E4B40
- mov r0, #0
- bl MOD04_021E4CF8
- b _021E7608
-_021E730C:
- ldr r2, [r6]
- mov r0, r8
- mov r1, sb
- bl MOD04_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 MOD04_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 MOD04_021E3F28
- cmp r0, #0xff
- beq _021E7370
- bl MOD04_021DF9D4
-_021E7370:
- add r7, r7, #1
- cmp r7, r5
- blt _021E7358
- b _021E7608
-_021E7380:
- ldr r0, _021E7614 ; =UNK04_022106D4
- 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 MOD04_021E7884
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x13
- bne _021E7608
- mov r0, r8
- mov r1, #0
- bl MOD04_021E3F28
- cmp r0, #0xff
- beq _021E7608
- ldr r1, _021E7614 ; =UNK04_022106D4
- 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 MOD04_021E8E08
- add sp, sp, #0x118
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E7498:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E7608
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a6]
- cmp r0, #0
- bne _021E7608
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E7608
-_021E74CC:
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- beq _021E750C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- bne _021E7524
-_021E750C:
- bl MOD04_021E4E00
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0x118
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
-_021E7524:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E754C
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E754C:
- bl MOD04_021E4CB4
- b _021E7608
-_021E7554:
- bl MOD04_021E26E4
- mov r4, r0
- mov r0, r8
- mov r1, #0
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r4, r0
- ble _021E74CC
- b _021E7608
-_021E7594:
- mov r4, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E7608
-_021E75A8:
- bl MOD04_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 MOD04_021E7884
- bl MOD04_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 MOD04_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 UNK04_022106D4
-_021E7618: .word 0x000082EA
- arm_func_end MOD04_021E6730
-
- arm_func_start MOD04_021E761C
-MOD04_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_end MOD04_021E761C
-
- arm_func_start MOD04_021E76C8
-MOD04_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 ; =UNK04_0220D410
- ldr r2, _021E7764 ; =UNK04_0220D400
- ldr r3, _021E7768 ; =UNK04_0220D408
- 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 MOD04_021F02B8
- add sp, sp, #0x208
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E7760: .word UNK04_0220D410
-_021E7764: .word UNK04_0220D400
-_021E7768: .word UNK04_0220D408
- arm_func_end MOD04_021E76C8
-
- arm_func_start MOD04_021E776C
-MOD04_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 ; =UNK04_0220D398
- 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 MOD04_021E26E4
- ldrh r0, [r0, #0x1a]
- strh r0, [sp, #0xe]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1c]
- str r0, [sp, #0x10]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- mov r6, #0
- str r0, [sp, #0x14]
- mov r4, r6
-_021E781C:
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r8
- mov r1, r4
- mov r2, r4
- bl MOD04_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 MOD04_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 UNK04_0220D398
- arm_func_end MOD04_021E776C
-
- arm_func_start MOD04_021E7884
-MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E78E0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- beq _021E78D8
- bl MOD04_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 MOD04_021E776C
- mov r4, r0
- b _021E79A0
-_021E7900:
- cmp sl, #0
- beq _021E7978
- cmp sb, #0
- beq _021E7978
- ldr r3, [sl]
- ldr r2, _021E7A3C ; =UNK04_0220D394
- 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 ; =UNK04_0220D414
- 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 MOD04_021E26E4
- ldr r0, [r0]
- ldr r2, [sp, #4]
- add r3, sp, #0x20
- mov r1, fp
- bl MOD04_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 MOD04_021E26E4
- strb fp, [r0, #0x3cc]
- bl MOD04_021E26E4
- add r1, r0, #0x300
- ldr r0, [sp, #0xc]
- strh r0, [r1, #0xce]
- bl MOD04_021E26E4
- ldr r1, [sp, #8]
- str r1, [r0, #0x3d0]
- bl MOD04_021E26E4
- ldr r1, [sp, #4]
- str r1, [r0, #0x454]
- bl MOD04_021E26E4
- str sb, [r0, #0x458]
- bl MOD04_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 MOD04_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 UNK04_0220D394
-_021E7A40: .word UNK04_0220D414
- arm_func_end MOD04_021E7884
-
- arm_func_start MOD04_021E7A44
-MOD04_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 MOD04_021E26E4
- mov r4, r0
- mov r1, #0
- ldr r0, [r7, #4]
- mov r2, r1
- bl MOD04_021FFEB0
- mov r1, r0
- ldrh r2, [r7, #2]
- ldr r0, [r4, #0xe4]
- ldr r3, [r7, #8]
- bl MOD04_02203C7C
- bl MOD04_021E38E8
- cmp r0, #0
- addne sp, sp, #0xc
- movne r0, #2
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021E7A9C:
- ldr r5, _021E7AFC ; =MOD04_021E2784
- ldr r4, _021E7B00 ; =MOD04_021E2B60
- mov r6, #0
-_021E7AA8:
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- str r5, [sp]
- str r7, [sp, #4]
- ldrb r2, [r7]
- ldr r1, [r7, #8]
- mov r3, r4
- bl MOD04_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 MOD04_021E2784
-_021E7B00: .word MOD04_021E2B60
- arm_func_end MOD04_021E7A44
-
- arm_func_start MOD04_021E7B04
-MOD04_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 MOD04_021E26E4
- cmp r4, #0
- ldrb r6, [r0, #0x14]
- mov r4, #0
- bne _021E7D48
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_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 MOD04_022038C4
- cmp r0, #0
- beq _021E7BC0
- mov r0, r7
- bl MOD04_02203908
- mov r5, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203BCC
- cmp r5, r0
- movne r5, #1
- bne _021E7C48
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_022038BC
- add r1, r5, r6, lsl #2
- str r0, [r1, #0x210]
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_02203898
- add r1, r5, r6, lsl #1
- add r1, r1, #0x200
- strh r0, [r1, #0x90]
- mov r5, r4
- b _021E7C48
-_021E7BC0:
- bl SOC_GetHostID
- 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 MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_02203908
- add r1, r5, r6, lsl #2
- str r0, [r1, #0x210]
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, r7
- bl MOD04_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 MOD04_021E26E4
- mov r6, r0
- mov r0, #0x10000
- bl MOD04_021DE8C8
- add r1, r6, #0x100
- strh r0, [r1, #0x7e]
- bl MOD04_021E26E4
- str r8, [r0, #0x19c]
- b _021E7D00
-_021E7C74:
- bl SOC_GetHostID
- str r0, [sp, #8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD454
- str r0, [sp, #0xc]
- bl MOD04_021E26E4
- mov sb, r0
- mov r0, r7
- bl MOD04_02203908
- mov r8, r0
- mov r0, r7
- bl MOD04_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 MOD04_021E7884
- mov r6, r0
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E7D00:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x194]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x195]
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, r7
- bl MOD04_022038E4
- add r1, r6, #0x100
- strh r0, [r1, #0x96]
- bl MOD04_021E26E4
- mov r6, r0
- mov r0, r7
- bl MOD04_02203908
- str r0, [r6, #0x198]
- b _021E7D88
-_021E7D48:
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x194]
- bl MOD04_021E26E4
- mov r1, r4
- strb r1, [r0, #0x195]
- bl MOD04_021E26E4
- add r0, r0, #0x100
- mov r1, r4
- strh r1, [r0, #0x96]
- bl MOD04_021E26E4
- mov r1, r4
- str r1, [r0, #0x198]
- bl MOD04_021E26E4
- str r8, [r0, #0x19c]
- mov r5, #1
-_021E7D88:
- cmp r5, #0
- beq _021E7DA4
- bl MOD04_021E26E4
- add r0, r0, #0x194
- bl MOD04_021E7A44
- mov r4, r0
- b _021E7DE0
-_021E7DA4:
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- mov r5, r0
- bl MOD04_021E26E4
- add r3, r0, #0x194
- mov r0, #0
- mov r1, r5
- mov r2, r0
- bl MOD04_021E2784
- bl MOD04_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_end MOD04_021E7B04
-
- arm_func_start MOD04_021E7DF4
-MOD04_021E7DF4: ; 0x021E7DF4
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- mov lr, #3
- ldr ip, _021E7E48 ; =UNK04_0220D3AC
- str lr, [sp]
- str ip, [sp, #4]
- str r1, [sp, #8]
- str r2, [sp, #0xc]
- str r2, [sp, #0x10]
- ldr r2, _021E7E4C ; =UNK04_0220D3CC
- ldr r1, _021E7E50 ; =UNK04_0220D3D8
- str r2, [sp, #0x14]
- str r3, [sp, #0x18]
- str r1, [sp, #0x1c]
- ldr r2, _021E7E54 ; =UNK04_0220D418
- ldr r3, _021E7E58 ; =UNK04_0220D3E4
- mov r1, #0x100
- str ip, [sp, #0x20]
- bl OS_SNPrintf
- add sp, sp, #0x24
- ldmfd sp!, {pc}
- .align 2, 0
-_021E7E48: .word UNK04_0220D3AC
-_021E7E4C: .word UNK04_0220D3CC
-_021E7E50: .word UNK04_0220D3D8
-_021E7E54: .word UNK04_0220D418
-_021E7E58: .word UNK04_0220D3E4
- arm_func_end MOD04_021E7DF4
-
- arm_func_start MOD04_021E7E5C
-MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E7EC4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E7EF4
-_021E7EC4:
- add r1, sp, #0x100
- ldr r2, _021E8020 ; =UNK04_02210704
- 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 MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- bne _021E7F84
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldr r1, [r6, #0x200]
- ldrb r2, [r5, #0x16]
- ldrb r3, [r0, #0x15]
- add r0, sp, #0xc
- bl MOD04_021E7DF4
- ldr r0, _021E8024 ; =UNK04_022106E0
- ldr r5, [r0]
- cmp r5, #0
- beq _021E7FAC
- add r0, sp, #0xc
- ldr r2, _021E8028 ; =UNK04_0220D470
- mov r3, r0
- mov r1, #0x100
- str r5, [sp]
- bl OS_SNPrintf
- b _021E7FAC
-_021E7F84:
- bl MOD04_021E26E4
- ldr r5, [r0, #0x208]
-_021E7F8C:
- ldr r2, _021E802C ; =UNK04_0220D47C
- ldr r3, _021E8030 ; =UNK04_0220D3AC
- add r0, sp, #0xc
- mov r1, #0x100
- str r5, [sp]
- bl OS_SNPrintf
- bl MOD04_021E26E4
- str r5, [r0, #0x204]
-_021E7FAC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203C04
- mov sl, #0
- add sb, sp, #0xc
- add r5, sp, #0x10c
- mov r6, sl
- mov r8, #6
- mov r7, #1
-_021E7FD0:
- bl MOD04_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 MOD04_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 UNK04_02210704
-_021E8024: .word UNK04_022106E0
-_021E8028: .word UNK04_0220D470
-_021E802C: .word UNK04_0220D47C
-_021E8030: .word UNK04_0220D3AC
- arm_func_end MOD04_021E7E5C
-
- arm_func_start MOD04_021E8034
-MOD04_021E8034: ; 0x021E8034
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- beq _021E8074
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203E80
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe4]
-_021E8074:
- bl MOD04_02200D6C
- mov r0, #0
- bl MOD04_021E26D0
- ldr r0, _021E80C0 ; =UNK04_022106E0
- ldr r1, [r0]
- cmp r1, #0
- beq _021E80A8
- mov r0, #4
- mov r2, #0
- bl MOD04_021DD904
- ldr r0, _021E80C0 ; =UNK04_022106E0
- mov r1, #0
- str r1, [r0]
-_021E80A8:
- bl MOD04_021E4164
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x18]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E80C0: .word UNK04_022106E0
- arm_func_end MOD04_021E8034
-
- arm_func_start MOD04_021E80C4
-MOD04_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 MOD04_021E8174
- bl MOD04_021E26E4
- strb r7, [r0, #0x15]
- bl MOD04_021E26E4
- strb r6, [r0, #0x16]
- bl MOD04_021E26E4
- str r5, [r0, #0x464]
- bl MOD04_021E26E4
- str r4, [r0, #0x468]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17d]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x2d0]
- mov r0, #0x32
- ldr r1, _021E8160 ; =UNK04_0220D3AC
- bl MOD04_0220277C
- mov r0, #0x33
- ldr r1, _021E8164 ; =UNK04_0220D3CC
- bl MOD04_0220277C
- mov r0, #0x34
- ldr r1, _021E8168 ; =UNK04_0220D3D8
- bl MOD04_0220277C
- mov r0, #0x35
- ldr r1, _021E816C ; =UNK04_0220D3E4
- bl MOD04_0220277C
- mov r0, #0x36
- ldr r1, _021E8170 ; =UNK04_0220D3A0
- bl MOD04_0220277C
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E8160: .word UNK04_0220D3AC
-_021E8164: .word UNK04_0220D3CC
-_021E8168: .word UNK04_0220D3D8
-_021E816C: .word UNK04_0220D3E4
-_021E8170: .word UNK04_0220D3A0
- arm_func_end MOD04_021E80C4
-
- arm_func_start MOD04_021E8174
-MOD04_021E8174: ; 0x021E8174
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17c]
- bl MOD04_021E26E4
- mov r5, r0
- mov r0, #0x10000
- bl MOD04_021DE8C8
- add r1, r5, #0x100
- strh r0, [r1, #0x7e]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x180]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x184]
- str r1, [r0, #0x188]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a4]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a9]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1aa]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ab]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ac]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a7]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb2]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1b8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1e0]
- str r1, [r0, #0x1e4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1f0]
- str r1, [r0, #0x1f4]
- bl MOD04_021E26E4
- add r1, r0, #0x3cc
- mov r0, #0
- mov r2, #0x98
- bl MIi_CpuClear32
- cmp r4, #2
- bne _021E82F0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x14]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E82CC
- mov r0, #1
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E82CC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
- mov r0, #0xa
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E82F0:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xd]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xe]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe8]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a5]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1bc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c0]
- str r1, [r0, #0x1c4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1cc]
- str r1, [r0, #0x1d0]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1d4]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x204]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x208]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x2f0]
- bl MOD04_021E26E4
- add r1, r0, #0x24
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0xa4
- mov r0, #0
- mov r2, #0x40
- bl MIi_CpuClear16
- bl MOD04_021E26E4
- add r1, r0, #0xf4
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0x194
- mov r0, #0
- mov r2, #0xc
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0x210
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- bl MOD04_021E26E4
- add r1, r0, #0x290
- mov r0, #0
- mov r2, #0x40
- bl MIi_CpuClear16
- bl MOD04_021E26E4
- add r0, r0, #0x2d0
- mov r1, #0
- mov r2, #0x20
- bl MI_CpuFill8
- bl MOD04_021E26E4
- add r1, r0, #0x348
- mov r0, #0
- mov r2, #0x84
- bl MIi_CpuClear32
- cmp r4, #1
- bne _021E84A8
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E8484
- mov r0, #3
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E8484:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
- mov r0, #4
- bl MOD04_021E26D0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
-_021E84A8:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x15]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x16]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x18]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1a6]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ae]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ad]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1f8]
- str r1, [r0, #0x1fc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x46c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x470]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021E8174
-
- arm_func_start MOD04_021E852C
-MOD04_021E852C: ; 0x021E852C
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #1
- movne r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E852C
-
- arm_func_start MOD04_021E854C
-MOD04_021E854C: ; 0x021E854C
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov r0, #0
- bl MOD04_021E26F4
- ldr r0, _021E85C8 ; =UNK04_022106E0
- ldr r1, [r0]
- cmp r1, #0
- beq _021E8584
- mov r0, #4
- mov r2, #0
- bl MOD04_021DD904
- ldr r0, _021E85C8 ; =UNK04_022106E0
- mov r1, #0
- str r1, [r0]
-_021E8584:
- bl MOD04_021E4164
- ldr r0, _021E85CC ; =UNK04_022106D4
- ldr r1, [r0]
- cmp r1, #0
- beq _021E85B0
- mov r0, #4
- mov r2, #0
- bl MOD04_021DD904
- ldr r0, _021E85CC ; =UNK04_022106D4
- mov r1, #0
- str r1, [r0]
-_021E85B0:
- ldr r0, _021E85D0 ; =UNK04_022106DC
- mov r1, #0
- strb r1, [r0]
- strb r1, [r0, #1]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E85C8: .word UNK04_022106E0
-_021E85CC: .word UNK04_022106D4
-_021E85D0: .word UNK04_022106DC
- arm_func_end MOD04_021E854C
-
- arm_func_start MOD04_021E85D4
-MOD04_021E85D4: ; 0x021E85D4
- stmdb sp!, {lr}
- sub sp, sp, #0x2c
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addne sp, sp, #0x2c
- movne r0, #0
- ldmneia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x16]
- ldr r2, _021E8694 ; =UNK04_0220D394
- add r0, sp, #0
- add r3, r1, #1
- mov r1, #0xc
- bl OS_SNPrintf
- ldr r0, _021E8698 ; =UNK04_0220D484
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DEB54
- bl MOD04_021E26E4
- ldrb r2, [r0, #0xd]
- add r0, sp, #0
- mov r1, #0xc
- add r3, r2, #1
- ldr r2, _021E8694 ; =UNK04_0220D394
- bl OS_SNPrintf
- ldr r0, _021E869C ; =UNK04_0220D488
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DEB0C
- ldr r2, _021E8694 ; =UNK04_0220D394
- add r0, sp, #0
- mov r1, #0xc
- mov r3, #3
- bl OS_SNPrintf
- ldr r0, _021E86A0 ; =UNK04_0220D3F4
- add r1, sp, #0
- add r2, sp, #0xc
- mov r3, #0x2f
- bl MOD04_021DEB0C
- mov r0, #6
- add r1, sp, #0xc
- mov r2, #0
- bl MOD04_021E1E30
- add sp, sp, #0x2c
- ldmfd sp!, {pc}
- .align 2, 0
-_021E8694: .word UNK04_0220D394
-_021E8698: .word UNK04_0220D484
-_021E869C: .word UNK04_0220D488
-_021E86A0: .word UNK04_0220D3F4
- arm_func_end MOD04_021E85D4
-
- arm_func_start MOD04_021E86A4
-MOD04_021E86A4: ; 0x021E86A4
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- ldr r0, _021E8748 ; =UNK04_022106E4
- mov r1, #0
- mov r2, #0x20
- bl MI_CpuFill8
- mov r6, #0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- cmp r0, #0
- blt _021E8730
- ldr r5, _021E8748 ; =UNK04_022106E4
- mov r4, #1
-_021E86E8:
- bl MOD04_021E26E4
- mov r8, r0
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, r6
- ldrb r0, [r0, #0x2d0]
- add r6, r6, #1
- strb r0, [r5], #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- cmp r6, r0
- ble _021E86E8
-_021E8730:
- ldr r0, _021E8748 ; =UNK04_022106E4
- str r0, [r7]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- add r0, r0, #1
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E8748: .word UNK04_022106E4
- arm_func_end MOD04_021E86A4
-
- arm_func_start MOD04_021E874C
-MOD04_021E874C: ; 0x021E874C
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021E26E4
- add r0, r0, #0x2d0
- str r0, [r4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E874C
-
- arm_func_start MOD04_021E8780
-MOD04_021E8780: ; 0x021E8780
- stmdb sp!, {r4, r5, r6, lr}
- mvn r6, #0
- mov r5, #0
- mov r4, #1
-_021E8790:
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xe]
- ldmia sp!, {r4, r5, r6, pc}
-_021E87CC:
- bl MOD04_021E26E4
- strb r6, [r0, #0xe]
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E8780
-
- arm_func_start MOD04_021E87D8
-MOD04_021E87D8: ; 0x021E87D8
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xe]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E87D8
-
- arm_func_start MOD04_021E8804
-MOD04_021E8804: ; 0x021E8804
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E8804
-
- arm_func_start MOD04_021E8830
-MOD04_021E8830: ; 0x021E8830
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #4
- mov sb, r0
- mov r8, r1
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E26E4
- add r0, r0, sb, lsl #2
- ldr fp, [r0, #0xf4]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #2
- ldr r1, [r0, #0x24]
- add r0, sl, r4, lsl #2
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r0, r0, r5, lsl #1
- ldrh r1, [r0, #0xa4]
- add r0, sl, r4, lsl #1
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r1, sl, r4, lsl #2
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0xf4]
- str r0, [r1, #0xf4]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_021E26E4
- add r1, sl, r4, lsl #2
- add r0, r0, r5, lsl #2
- ldr r0, [r0, #0x210]
- str r0, [r1, #0x210]
- bl MOD04_021E26E4
- mov sl, r0
- bl MOD04_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 MOD04_021E26E4
- mov sl, r0
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, r4, lsl #2
- mov r1, #0
- str r1, [r0, #0x24]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #1
- mov r1, #0
- strh r1, [r0, #0xa4]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- mov r1, #0
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- mov r1, #0
- str r1, [r0, #0x210]
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #1
- add r0, r0, #0x200
- mov r1, #0
- strh r1, [r0, #0x90]
- bl MOD04_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_end MOD04_021E8830
-
- arm_func_start MOD04_021E89EC
-MOD04_021E89EC: ; 0x021E89EC
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- bl MOD04_021E26E4
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r5, #0
- mov r4, #0
- ble _021E8A48
-_021E8A14:
- bl MOD04_021E26E4
- add r0, r0, r4, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r6, r0
- bne _021E8A3C
- mov r0, r4
- mov r1, r5
- bl MOD04_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_end MOD04_021E89EC
-
- arm_func_start MOD04_021E8A50
-MOD04_021E8A50: ; 0x021E8A50
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #2
- ldmeqia sp!, {r4, pc}
- mov r0, r4
- bl MOD04_021E59D4
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E8A50
-
- arm_func_start MOD04_021E8A74
-MOD04_021E8A74: ; 0x021E8A74
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl MOD04_021DF88C
- cmp r0, #5
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {r4, r5, pc}
- bl MOD04_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 MOD04_021E8E08
- add sp, sp, #4
- mov r0, #1
- ldmia sp!, {r4, r5, pc}
-_021E8AD4:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x2d0]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #1
- beq _021E8B10
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #1
- beq _021E8B10
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- cmp r0, #0
- beq _021E8B44
- bl MOD04_021E26E4
- ldr r0, [r0, #0x19c]
- bl MOD04_022006B4
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x19c]
-_021E8B44:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #0
- beq _021E8B84
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a8]
- cmp r0, #0
- bne _021E8BF4
- bl MOD04_021E26E4
- mov r1, #3
- strb r1, [r0, #0x1a8]
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD45C
- b _021E8BF4
-_021E8B84:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E8BA4
- ldr r1, _021E8C04 ; =0xFFFEC5D2
- mov r0, #6
- bl MOD04_021E8E08
- b _021E8BF4
-_021E8BA4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x208]
- cmp r0, #0
- beq _021E8BBC
- bl MOD04_021E4BF4
- b _021E8BF4
-_021E8BBC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E8BEC
- mov r0, #0x12
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r4, r0
- bl OS_GetTick
- str r0, [r4, #0x1f0]
- str r1, [r4, #0x1f4]
- b _021E8BF4
-_021E8BEC:
- mov r0, #1
- bl MOD04_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_end MOD04_021E8A74
-
- arm_func_start MOD04_021E8C08
-MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #1
- bne _021E8CCC
- ldrb r0, [r4]
- cmp r0, #1
- bne _021E8C58
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x20c]
-_021E8C58:
- ldrb r6, [r4, #1]
- bl MOD04_021E26E4
- ldrb r1, [r4, #2]
- add r0, r0, r6
- strb r1, [r0, #0x2d0]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r1, [r0, #0x200]
- add r0, r4, r6, lsl #2
- str r1, [r0, #0xf4]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E8CA4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #1
- bne _021E8CB8
-_021E8CA4:
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x16]
-_021E8CB8:
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ad]
- mov r0, #9
- bl MOD04_021E26D0
-_021E8CCC:
- mov r0, r5
- mov r1, #3
- bl MOD04_021E4910
- ldmia sp!, {r4, r5, r6, pc}
-_021E8CDC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x10
- bne _021E8D94
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, #0x100
- ldrh r0, [r0, #0xb0]
- cmp r4, r0
- ble _021E8D2C
- bl MOD04_021E26E4
- add r0, r0, #0x100
- strh r4, [r0, #0xb0]
-_021E8D2C:
- mov r0, #0
- bl MOD04_021E3EC4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1d4]
- cmp r4, r0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r0, #1
- blt _021E8D88
- mov r4, #4
-_021E8D60:
- bl MOD04_021E26E4
- add r0, r0, r5
- ldrb r0, [r0, #0x2d0]
- mov r1, r4
- bl MOD04_021E4910
- add r5, r5, #1
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- cmp r5, r0
- ble _021E8D60
-_021E8D88:
- mov r0, #0x11
- bl MOD04_021E26D0
- ldmia sp!, {r4, r5, r6, pc}
-_021E8D94:
- mov r0, r5
- mov r1, #4
- bl MOD04_021E4910
- ldmia sp!, {r4, r5, r6, pc}
-_021E8DA4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #9
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #4
- bl MOD04_021E51C0
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021E8C08
-
- arm_func_start MOD04_021E8DC0
-MOD04_021E8DC0: ; 0x021E8DC0
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x14]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x16]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E8DC0
-
- arm_func_start MOD04_021E8E08
-MOD04_021E8E08: ; 0x021E8E08
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #8
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E4B40
- mov r0, r4
- mov r1, r5
- bl MOD04_021DD6B0
- ldr r1, _021E8EC8 ; =UNK04_0220D3F0
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- moveq r7, #1
- movne r7, #0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- cmp r0, #0
- moveq r8, #1
- movne r8, #0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x20c]
- bl MOD04_021E1F18
- mov r5, r0
- bl MOD04_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 MOD04_021E8034
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021E8EC8: .word UNK04_0220D3F0
- arm_func_end MOD04_021E8E08
-
- arm_func_start MOD04_021E8ECC
-MOD04_021E8ECC: ; 0x021E8ECC
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021E26E4
- mov r1, #0xff
- strb r1, [r0, #0x3cc]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x3cd]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021E8ECC
-
- arm_func_start MOD04_021E8EF4
-MOD04_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 MOD04_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 MOD04_021E6730
- add sp, sp, #0x21c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_end MOD04_021E8EF4
-
- arm_func_start MOD04_021E8F80
-MOD04_021E8F80: ; 0x021E8F80
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x1c
- mov r6, r0
- mov r4, r1
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #0x1c
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #7
- beq _021E8FC4
- bl MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0xc]
- add r1, r1, #1
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xc]
- cmp r0, #5
- bls _021E9030
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xc]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9030:
- bl MOD04_021E26E4
- ldr r3, [r0, #0x200]
- ldr r2, _021E91F8 ; =UNK04_0220D394
- add r0, sp, #0x10
- mov r1, #0xc
- bl OS_SNPrintf
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_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 MOD04_021FFEB0
- mov r5, r0
- bl MOD04_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 MOD04_021FD52C
- cmp r0, #1
- bne _021E90E0
- bl MOD04_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 MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x14]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x1c
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9114:
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- add sp, sp, #0x1c
- cmp r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9140:
- bl MOD04_021DF704
- mov r5, r0
- mvn r1, #0
- cmp r5, r1
- bne _021E9168
- ldr r1, _021E9200 ; =0xFFFEABC4
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9168:
- bl MOD04_021DF6BC
- mov r4, r0
- mov r0, r5
- bl MOD04_021DF638
- str r6, [r4]
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- ldrb r2, [r0, #0xd]
- mov r0, r6
- mov r1, r4
- add r2, r5, r2
- ldrb r2, [r2, #0x2d0]
- strb r2, [r4, #1]
- bl MOD04_021FD3F8
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xc
- bne _021E91E8
- mov r0, #0
- bl MOD04_021E51C0
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E91E8:
- mov r0, #1
- bl MOD04_021E51C0
- add sp, sp, #0x1c
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021E91F8: .word UNK04_0220D394
-_021E91FC: .word 0x00001388
-_021E9200: .word 0xFFFEABC4
- arm_func_end MOD04_021E8F80
-
- arm_func_start MOD04_021E9204
-MOD04_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 MOD04_021E26E4
- cmp r0, #0
- beq _021E9244
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #7
- bne _021E9244
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1a9]
- cmp r0, #0
- beq _021E925C
-_021E9244:
- ldr r1, _021E944C ; =UNK04_0220D48C
- mov r0, r8
- mvn r2, #0
- bl MOD04_021FD6B0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E925C:
- bl MOD04_021DF704
- mov r5, r0
- mvn r2, #0
- cmp r5, r2
- bne _021E9290
- ldr r1, _021E9450 ; =UNK04_0220D498
- mov r0, r8
- bl MOD04_021FD6B0
- ldr r1, _021E9454 ; =0xFFFEABC4
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E9290:
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0x210]
- cmp r7, r0
- bne _021E92D4
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, sb, r0, lsl #2
- ldr r0, [r0, #0xf4]
- cmp r4, r0
- bne _021E934C
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- str r7, [r0, #0x210]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 ; =UNK04_0220D4A4
- mov r0, r8
- mvn r2, #0
- bl MOD04_021FD6B0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E9364:
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- bl MOD04_021E26E4
- ldr r1, [r0, #8]
- mov r0, r8
- bl MOD04_021FD6BC
- cmp r0, #0
- bne _021E93A0
- ldr r1, _021E945C ; =0xFFFEC5E6
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021E93A0:
- bl MOD04_021E8ECC
- bl MOD04_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 MOD04_021E26E4
- add r0, r0, #0x100
- strh r4, [r0, #0xb0]
-_021E93D4:
- mov r0, r5
- bl MOD04_021DF6BC
- mov r4, r0
- mov r0, r5
- bl MOD04_021DF638
- str r8, [r4]
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- add r1, r1, #1
- strb r1, [r0, #0xd]
- strb r5, [r4]
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_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 MOD04_021FD3F8
- mov r0, #2
- bl MOD04_021E51C0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021E944C: .word UNK04_0220D48C
-_021E9450: .word UNK04_0220D498
-_021E9454: .word 0xFFFEABC4
-_021E9458: .word UNK04_0220D4A4
-_021E945C: .word 0xFFFEC5E6
-_021E9460: .word 0x0000FFFF
- arm_func_end MOD04_021E9204
-
- arm_func_start MOD04_021E9464
-MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- beq _021E9558
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r2, [sp, #0x18]
- add r3, sp, #0
- mov r1, r4
- bl MOD04_022011A8
- b _021E9558
-_021E9518:
- ldr r1, _021E9564 ; =UNK04_0220F018
- 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 MOD04_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 UNK04_0220F018
- arm_func_end MOD04_021E9464
-
- arm_func_start MOD04_021E9568
-MOD04_021E9568: ; 0x021E9568
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- mov r4, r0
- bl MOD04_021E26E4
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- cmp r4, #0
- bne _021E95E4
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- beq _021E95B8
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202534
-_021E95B8:
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD6D4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E95E4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1c8]
- cmp r0, #0
- beq _021E9730
- bl OS_GetTick
- mov r6, r0
- mov r7, r1
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c8]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #3
- bne _021E971C
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1aa]
- add r1, r1, #1
- strb r1, [r0, #0x1aa]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1aa]
- cmp r0, #5
- bls _021E96F8
- ldr r1, _021E9EFC ; =0xFFFEC5D2
- mov r0, #6
- bl MOD04_021E8E08
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E96F8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9730
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E971C:
- mov r0, #0
- bl MOD04_021E5C44
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
-_021E9730:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1bc]
- cmp r0, #0
- beq _021E9D04
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- ldr r0, _021E9F00 ; =0x00000BB8
- mla r5, r1, r0, r0
- bl OS_GetTick
- mov r4, r0
- mov r6, r1
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E97B8:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe8]
- cmp r0, #0
- ble _021E9D04
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #3
- bne _021E97EC
- bl MOD04_021E26E4
- ldrb r1, [r0, #0xd]
- ldr r0, _021E9F00 ; =0x00000BB8
- mla r5, r1, r0, r0
- b _021E9800
-_021E97EC:
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x204]
- bl MOD04_021E7E5C
- bl MOD04_021E38E8
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe8]
- b _021E9D04
-_021E9870:
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x18c]
- str r1, [r0, #0x190]
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9900:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cc]
- cmp r0, #6
- bne _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x3cd]
- add r1, r1, #1
- strb r1, [r0, #0x3cd]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cd]
- cmp r0, #5
- bls _021E9998
- bl MOD04_021E8ECC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9998:
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E99F8:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cc]
- cmp r0, #2
- bne _021E9D04
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- bne _021E9A60
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #0
- beq _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E8ECC
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r0, #1
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9AEC:
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cc]
- cmp r0, #8
- bne _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E26E4
- ldrb r1, [r0, #0x3cd]
- add r1, r1, #1
- strb r1, [r0, #0x3cd]
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x3cd]
- cmp r0, #0
- beq _021E9BAC
- bl MOD04_021E8ECC
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x15]
- cmp r0, #2
- bne _021E9BA4
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- add r0, r4, r0, lsl #2
- ldr r0, [r0, #0xf4]
- bl MOD04_021E59D4
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9BA4:
- bl MOD04_021E4CB4
- b _021E9D04
-_021E9BAC:
- bl MOD04_021E26E4
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- beq _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9C0C:
- bl MOD04_021DF88C
- cmp r0, #5
- bne _021E9D04
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E26E4
- ldrb r0, [r0, #0x1ad]
- cmp r0, #5
- blo _021E9C8C
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- bl MOD04_021E5908
- cmp r0, #0
- bne _021E9D04
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021E9C8C:
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 MOD04_021E7884
- bl MOD04_021E61EC
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldrb r1, [r0, #0x1ad]
- add r1, r1, #1
- strb r1, [r0, #0x1ad]
- bl MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- beq _021E9D24
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #6
- bne _021E9DA0
-_021E9D24:
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- mov r1, #0
- add r3, r0, #0x194
- mov r2, r1
- mov r0, #1
- bl MOD04_021E2784
-_021E9DA0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- beq _021E9DBC
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- bl MOD04_02203C38
-_021E9DBC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_021E9F1C
- bl MOD04_02200468
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021E9DEC
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD6D4
-_021E9DEC:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0x12
- bne _021E9E54
- bl OS_GetTick
- mov r4, r0
- mov r5, r1
- bl MOD04_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 MOD04_021E4BF4
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021E9E54:
- bl MOD04_021E4684
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E41C4
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E39F0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0x1ae]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xa
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldrb r0, [r0, #0xd]
- strb r0, [r4, #0x16]
- bl MOD04_021E85D4
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1ae]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x47c]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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_end MOD04_021E9568
-
- arm_func_start MOD04_021E9F1C
-MOD04_021E9F1C: ; 0x021E9F1C
- stmdb sp!, {r4, lr}
- movs r4, r0
- ldmeqia sp!, {r4, pc}
- bl MOD04_02202534
- ldr r0, [r4, #0xb4]
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_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 MOD04_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 MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- ldmia sp!, {r4, pc}
-_021E9FB0:
- bl MOD04_021E26E4
- ldr r0, [r0, #0x1a0]
- cmp r0, #0xb
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021E9F1C
-
- arm_func_start MOD04_021E9FD0
-MOD04_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 MOD04_021E80C4
- bl MOD04_021E26E4
- str r4, [r0, #0x46c]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x28]
- str r1, [r0, #0x470]
- bl MOD04_021E26E4
- mov r1, #1
- strb r1, [r0, #0x17]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r4, #0x20]
- bl MOD04_021E26E4
- str r6, [r0, #0xf4]
- mov r0, #4
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- bne _021EA0A4
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- mov r5, r0
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_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 ; =MOD04_021E32E4
- str r0, [sp, #0xc]
- str r3, [sp, #0x10]
- ldr r0, [r5, #0x2f4]
- ldr r1, [r4, #0x2f4]
- ldr r2, [r2, #0x2f8]
- bl MOD04_02203EA4
- str r0, [r6, #0xe4]
-_021EA0A4:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xe4]
- cmp r0, #0
- bne _021EA0C8
- mov r0, #5
- bl MOD04_021E38E8
- cmp r0, #0
- addne sp, sp, #0x18
- ldmneia sp!, {r4, r5, r6, pc}
-_021EA0C8:
- ldr r1, _021EA134 ; =UNK04_0220D3F0
- mov r0, #5
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_021E397C
- cmp r0, #0
- addne sp, sp, #0x18
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- bne _021EA110
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- bl MOD04_021EA1E0
- cmp r0, #0
- addne sp, sp, #0x18
- ldmneia sp!, {r4, r5, r6, pc}
-_021EA110:
- bl MOD04_021E26E4
- ldr r0, [r0, #0xf4]
- mov r1, #0
- bl MOD04_021E6038
- bl MOD04_021E61EC
- cmp r0, #0
- add sp, sp, #0x18
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021EA130: .word MOD04_021E32E4
-_021EA134: .word UNK04_0220D3F0
- arm_func_end MOD04_021E9FD0
-
- arm_func_start MOD04_021EA138
-MOD04_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 MOD04_021E80C4
- bl MOD04_021E26E4
- str r4, [r0, #0x46c]
- bl MOD04_021E26E4
- ldr r1, [sp, #8]
- str r1, [r0, #0x470]
- bl MOD04_021E26E4
- mov r4, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- str r0, [r4, #0xf4]
- bl MOD04_021E26E4
- mov r1, #1
- str r1, [r0, #0x2f0]
- bl MOD04_021E26E4
- mov r2, #0
- strb r2, [r0, #0xe]
- ldr r1, _021EA1DC ; =UNK04_022106DC
- mov r0, #0xa
- strb r2, [r1, #1]
- bl MOD04_021E26D0
- bl MOD04_021E85D4
- bl MOD04_021E397C
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- cmp r0, #0
- ldmneia sp!, {r4, pc}
- bl MOD04_021E26E4
- ldr r0, [r0, #0x200]
- bl MOD04_021EA1E0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021EA1DC: .word UNK04_022106DC
- arm_func_end MOD04_021EA138
-
- arm_func_start MOD04_021EA1E0
-MOD04_021EA1E0: ; 0x021EA1E0
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0x2c
- mov r4, r0
- bl MOD04_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 MOD04_021E26E4
- str r4, [r0, #0x200]
- mov sl, #0
- ldr fp, _021EA344 ; =MOD04_021E2E18
- mov r4, sl
- mov r5, #1
-_021EA21C:
- bl MOD04_021E26E4
- mov sb, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD43C
- mov r8, r0
- bl MOD04_021E26E4
- ldr r0, [r0, #4]
- ldr r0, [r0]
- bl MOD04_021FD454
- mov r7, r0
- bl MOD04_021E26E4
- mov r6, r0
- bl MOD04_021E26E4
- ldr r3, [r0, #0x2f8]
- mov r1, r8
- str r3, [sp]
- str r5, [sp, #4]
- str r5, [sp, #8]
- ldr r3, _021EA348 ; =MOD04_021E2E14
- str fp, [sp, #0xc]
- str r3, [sp, #0x10]
- ldr r3, _021EA34C ; =MOD04_021E2E10
- mov r2, r7
- str r3, [sp, #0x14]
- ldr r3, _021EA350 ; =MOD04_021E2D68
- add r0, sb, #0x10
- str r3, [sp, #0x18]
- ldr r3, _021EA354 ; =MOD04_021E2D60
- str r3, [sp, #0x1c]
- ldr r3, _021EA358 ; =MOD04_021E2D54
- str r3, [sp, #0x20]
- str r4, [sp, #0x24]
- ldr r3, [r6, #0x2f4]
- bl MOD04_022025B0
- movs r6, r0
- beq _021EA2E4
- cmp r6, #3
- bne _021EA2C4
- cmp sl, #4
- bne _021EA2D8
-_021EA2C4:
- mov r0, r6
- bl MOD04_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 MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c]
- bl MOD04_021E26E4
- mov r1, #0
- strh r1, [r0, #0x1a]
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r1, _021EA35C ; =MOD04_021E2D2C
- bl MOD04_02202568
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r1, _021EA360 ; =MOD04_021E2C78
- bl MOD04_02202598
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- ldr r1, _021EA364 ; =MOD04_021E2B64
- bl MOD04_02202580
- bl MOD04_021E26E4
- ldr r0, [r0, #0x10]
- bl MOD04_02202308
- mov r0, r6
- add sp, sp, #0x2c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021EA344: .word MOD04_021E2E18
-_021EA348: .word MOD04_021E2E14
-_021EA34C: .word MOD04_021E2E10
-_021EA350: .word MOD04_021E2D68
-_021EA354: .word MOD04_021E2D60
-_021EA358: .word MOD04_021E2D54
-_021EA35C: .word MOD04_021E2D2C
-_021EA360: .word MOD04_021E2C78
-_021EA364: .word MOD04_021E2B64
- arm_func_end MOD04_021EA1E0
-
- arm_func_start MOD04_021EA368
-MOD04_021EA368: ; 0x021EA368
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021E26F4
- bl MOD04_021E26E4
- str r6, [r0]
- bl MOD04_021E26E4
- str r5, [r0, #4]
- bl MOD04_021E26E4
- str r4, [r0, #8]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x10]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1c]
- bl MOD04_021E26E4
- mov r1, #0
- strh r1, [r0, #0x1a]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0xe4]
- mov r0, r1
- bl MOD04_021E26D0
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0xf]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x19]
- bl MOD04_021E26E4
- mov r1, #0
- strb r1, [r0, #0x1af]
- bl MOD04_021E26E4
- mov r1, #0
- add r0, r0, #0x100
- strh r1, [r0, #0xb6]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x1dc]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x200]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x10]
- str r1, [r0, #0x2f4]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x14]
- str r1, [r0, #0x2f8]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x18]
- str r1, [r0, #0x2fc]
- bl MOD04_021E26E4
- ldr r1, [sp, #0x1c]
- str r1, [r0, #0x300]
- bl MOD04_021E26E4
- add r0, r0, #0x304
- mov r1, #0
- mov r2, #0x40
- bl MI_CpuFill8
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x344]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x464]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x468]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x474]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x478]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x47c]
- bl MOD04_021E26E4
- mov r1, #0
- str r1, [r0, #0x480]
- bl MOD04_021E4164
- ldr r1, _021EA4D0 ; =UNK04_022106DC
- mov r0, #0
- strb r0, [r1]
- strb r0, [r1, #1]
- strh r0, [r1, #2]
- bl MOD04_021E8174
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021EA4D0: .word UNK04_022106DC
- arm_func_end MOD04_021EA368
-
- arm_func_start MOD04_021EA4D4
-MOD04_021EA4D4: ; 0x021EA4D4
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {pc}
- bl MOD04_021E26E4
- cmp r0, #0
- beq _021EA518
- bl MOD04_021DF88C
- cmp r0, #5
- bne _021EA518
- bl MOD04_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_end MOD04_021EA4D4
-
- arm_func_start MOD04_021EA530
-MOD04_021EA530: ; 0x021EA530
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021EA4D4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021E4F94
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021EA530
-
arm_func_start MOD04_021EA55C
MOD04_021EA55C: ; 0x021EA55C
stmdb sp!, {lr}
@@ -50351,11 +39645,6 @@ _0220BAB8:
.section .rodata
- .global UNK04_0220BAC4
-UNK04_0220BAC4: ; 0x0220BAC4
- .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
-
.global UNK04_0220BADC
UNK04_0220BADC: ; 0x0220BADC
.byte 0x57, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x32
@@ -50508,131 +39797,6 @@ UNK04_0220BE70: ; 0x0220BE70
.section .data
- .global UNK_0220D350
-UNK04_0220D350: ; 0x0220D350
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D354
-UNK04_0220D354: ; 0x0220D354
- .byte 0x49, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65
- .byte 0x64, 0x20, 0x79, 0x6F, 0x75, 0x72, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74
- .byte 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x6D, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x79, 0x6F, 0x75, 0x72
- .byte 0x20, 0x6C, 0x69, 0x73, 0x74, 0x00, 0x00, 0x00
-
- .global UNK_0220D38C
-UNK04_0220D38C: ; 0x0220D38C
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D390
-UNK04_0220D390: ; 0x0220D390
- .byte 0x53, 0x43, 0x4E, 0x00
-
- .global UNK_0220D394
-UNK04_0220D394: ; 0x0220D394
- .byte 0x25, 0x75, 0x00, 0x00
-
- .global UNK_0220D398
-UNK04_0220D398: ; 0x0220D398
- .byte 0x53, 0x42, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3A0
-UNK04_0220D3A0: ; 0x0220D3A0
- .byte 0x64, 0x77, 0x63, 0x5F, 0x65, 0x76, 0x61, 0x6C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3AC
-UNK04_0220D3AC: ; 0x0220D3AC
- .byte 0x64, 0x77, 0x63, 0x5F, 0x70, 0x69, 0x64, 0x00
-
- .global UNK_0220D3B4
-UNK04_0220D3B4: ; 0x0220D3B4
- .byte 0x6E, 0x75, 0x6D, 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00
-
- .global UNK_0220D3C0
-UNK04_0220D3C0: ; 0x0220D3C0
- .byte 0x6D, 0x61, 0x78, 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00
-
- .global UNK_0220D3CC
-UNK04_0220D3CC: ; 0x0220D3CC
- .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220D3D8
-UNK04_0220D3D8: ; 0x0220D3D8
- .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x72, 0x65, 0x73, 0x76, 0x00, 0x00, 0x00
-
- .global UNK_0220D3E4
-UNK04_0220D3E4: ; 0x0220D3E4
- .byte 0x64, 0x77, 0x63, 0x5F, 0x6D, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3F0
-UNK04_0220D3F0: ; 0x0220D3F0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D3F4
-UNK04_0220D3F4: ; 0x0220D3F4
- .byte 0x56, 0x45, 0x52, 0x00
-
- .global UNK_0220D3F8
-UNK04_0220D3F8: ; 0x0220D3F8
- .byte 0x46, 0x4D, 0x45, 0x00
-
- .global UNK_0220D3FC
-UNK04_0220D3FC: ; 0x0220D3FC
- .byte 0x4D, 0x44, 0x46, 0x00
-
- .global UNK_0220D400
-UNK04_0220D400: ; 0x0220D400
- .byte 0x25, 0x73, 0x25, 0x64, 0x76, 0x25, 0x73, 0x00
-
- .global UNK_0220D408
-UNK04_0220D408: ; 0x0220D408
- .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D410
-UNK04_0220D410: ; 0x0220D410
- .byte 0x4D, 0x41, 0x54, 0x00
-
- .global UNK_0220D414
-UNK04_0220D414: ; 0x0220D414
- .byte 0x2F, 0x25, 0x75, 0x00
-
- .global UNK_0220D418
-UNK04_0220D418: ; 0x0220D418
- .byte 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x73, 0x20, 0x21
- .byte 0x3D, 0x20, 0x25, 0x75, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x78, 0x70, 0x6C, 0x61, 0x79
- .byte 0x65, 0x72, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x75, 0x6D
- .byte 0x70, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3C, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64
- .byte 0x20, 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x73, 0x20
- .byte 0x21, 0x3D, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00
-
- .global UNK_0220D470
-UNK04_0220D470: ; 0x0220D470
- .byte 0x25, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x25, 0x73, 0x29, 0x00
-
- .global UNK_0220D47C
-UNK04_0220D47C: ; 0x0220D47C
- .byte 0x25, 0x73, 0x20, 0x3D, 0x20, 0x25, 0x75, 0x00
-
- .global UNK_0220D484
-UNK04_0220D484: ; 0x0220D484
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D488
-UNK04_0220D488: ; 0x0220D488
- .byte 0x53, 0x43, 0x4E, 0x00
-
- .global UNK_0220D48C
-UNK04_0220D48C: ; 0x0220D48C
- .byte 0x49, 0x6E, 0x69, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x00, 0x00
-
- .global UNK_0220D498
-UNK04_0220D498: ; 0x0220D498
- .byte 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x00
-
- .global UNK_0220D4A4
-UNK04_0220D4A4: ; 0x0220D4A4
- .byte 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20
- .byte 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x00
-
.global UNK_0220D4BC
UNK04_0220D4BC: ; 0x0220D4BC
.byte 0x44, 0x54, 0x00, 0x00
@@ -52498,7 +41662,7 @@ UNK04_0220F010: ; 0x0220F010
UNK04_0220F014: ; 0x0220F014
.byte 0x3A, 0x25, 0x64, 0x00
- .global UNK_0220F018
+ .global UNK04_0220F018
UNK04_0220F018: ; 0x0220F018
.byte 0xFD, 0xFC, 0x1E, 0x66, 0x6A, 0xB2, 0x00, 0x00
@@ -53142,42 +42306,6 @@ UNK04_0220FBA4: ; 0x0220FBA4
.section .bss
- .global UNK04_022106D0
-UNK04_022106D0: ; 0x022106D0
- .space 0x4
-
- .global UNK04_022106D4
-UNK04_022106D4: ; 0x022106D4
- .space 0x4
-
- .global UNK04_022106D8
-UNK04_022106D8: ; 0x022106D8
- .space 0x4
-
- .global UNK04_022106DC
-UNK04_022106DC: ; 0x022106DC
- .space 0x4
-
- .global UNK04_022106E0
-UNK04_022106E0: ; 0x022106E0
- .space 0x4
-
- .global UNK04_022106E4
-UNK04_022106E4: ; 0x022106E4
- .space 0x20
-
- .global UNK04_02210704
-UNK04_02210704: ; 0x02210704
- .space 0x1
-
- .global UNK04_02210705
-UNK04_02210705: ; 0x02210705
- .space 0x7
-
- .global UNK04_0221070C
-UNK04_0221070C: ; 0x0221070C
- .space 0x730
-
.global UNK04_02210E3C
UNK04_02210E3C: ; 0x02210E3C
.space 0x4
diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s
index 21395d39..0ce6279d 100644
--- a/arm9/modules/04/asm/mod04_021E05FC.s
+++ b/arm9/modules/04/asm/mod04_021E05FC.s
@@ -811,7 +811,7 @@ _021E10F4: .word UNK04_022106C8
.section .data
- .global UNK_0220D34C
+ .global UNK04_0220D34C
UNK04_0220D34C: ; 0x0220D34C
.byte 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/04/asm/mod04_021E10F8.s b/arm9/modules/04/asm/mod04_021E10F8.s
new file mode 100644
index 00000000..0216e485
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E10F8.s
@@ -0,0 +1,1670 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E10F8
+MOD04_021E10F8: ; 0x021E10F8
+ ldr r0, _021E1108 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bx lr
+ .align 2, 0
+_021E1108: .word UNK04_022106D0
+ arm_func_end MOD04_021E10F8
+
+ arm_func_start MOD04_021E110C
+MOD04_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 ; =UNK04_022106D0
+ 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 DWC_GetFriendDataType
+ cmp r0, #1
+ bne _021E11C8
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ add r2, sp, #8
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_LoginIdToUserName
+ 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 DWC_SetGsProfileId
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWCi_SetBuddyFriendData
+ mov r8, r5
+ b _021E125C
+_021E11C8:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ beq _021E11F8
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E125C
+_021E11F8:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #1
+ streq fp, [sp]
+ beq _021E125C
+ ldr r6, [sl, #4]
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_GetGsProfileId
+ cmp r6, r0
+ bne _021E125C
+ ldr r0, [r4]
+ mov r1, r6
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWCi_SetBuddyFriendData
+ 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 MOD04_021E17F0
+ ldr r1, [sp]
+ cmp r1, #0
+ beq _021E129C
+ bl MOD04_021E1DA4
+_021E129C:
+ ldr r0, _021E12B4 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E110C
+
+ arm_func_start MOD04_021E12B8
+MOD04_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 ; =UNK04_022106D0
+ 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 DWC_GetFriendDataType
+ cmp r0, #1
+ bne _021E136C
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ add r2, sp, #4
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_LoginIdToUserName
+ ldr r1, [sp]
+ add r0, sp, #4
+ bl strcmp
+ cmp r0, #0
+ bne _021E13CC
+ ldr r1, [sb, #4]
+ mov r0, sl
+ bl MOD04_021F0944
+ ldr r0, [r4]
+ ldr r1, [sb, #4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ mov fp, r5
+ b _021E13CC
+_021E136C:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ beq _021E139C
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E13CC
+_021E139C:
+ ldr r6, [sb, #4]
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_GetGsProfileId
+ cmp r6, r0
+ bne _021E13CC
+ mov r0, sl
+ mov r1, r6
+ bl MOD04_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 MOD04_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 MOD04_021F0864
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1410: .word UNK04_022106D0
+ arm_func_end MOD04_021E12B8
+
+ arm_func_start MOD04_021E1414
+MOD04_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 ; =UNK04_022106D0
+ mul r6, r8, r0
+ ldr r0, [r1]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWC_GetFriendDataType
+ cmp r0, #0
+ beq _021E15FC
+ ldr r7, _021E1670 ; =UNK04_022106D0
+ 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 MOD04_021E1900
+ cmp r0, #0
+ beq _021E14E8
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ 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 MOD04_021F0664
+ bl MOD04_021E1678
+ ldr r0, [sp]
+ cmp r0, r4
+ bne _021E1548
+ ldr r0, [sb, #0xc]
+ ldr r0, [r0, r7]
+ bl MOD04_021E17BC
+ b _021E15B0
+_021E1548:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r1, [sb, #0xc]
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWC_SetGsProfileId
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWCi_SetBuddyFriendData
+ mov r0, r8
+ bl MOD04_021E1DA4
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ 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 MOD04_021E1678
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1618:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [r1]
+ cmp r0, #1
+ beq _021E1648
+ ldr r1, [r1, #0x18]
+ mov r0, #0xc
+ mla r0, r8, r0, r1
+ bl DWC_GetFriendDataType
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1648:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+_021E1674: .word 0x00000601
+ arm_func_end MOD04_021E1414
+
+ arm_func_start MOD04_021E1678
+MOD04_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 MOD04_021E2114
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E16E8: .word 0xFFFEEAA8
+ arm_func_end MOD04_021E1678
+
+ arm_func_start MOD04_021E16EC
+MOD04_021E16EC: ; 0x021E16EC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021E17B8 ; =UNK04_022106D0
+ mov r3, #0
+ ldr r2, [r2]
+ mov r5, r0
+ mov r4, r1
+ str r3, [sp]
+ cmp r2, #0
+ beq _021E1720
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E172C
+_021E1720:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E172C:
+ bl MOD04_021E0F00
+ mov r1, r5
+ bl DWC_GetGsProfileId
+ mov r5, r0
+ cmp r5, #0
+ ble _021E176C
+ ldr r0, _021E17B8 ; =UNK04_022106D0
+ add r2, sp, #0
+ ldr r0, [r0]
+ mov r1, r5
+ ldr r0, [r0, #4]
+ bl MOD04_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 ; =UNK04_022106D0
+ mov r2, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F06E4
+ cmp r0, #0
+ movne r0, #0
+ moveq r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E17B8: .word UNK04_022106D0
+ arm_func_end MOD04_021E16EC
+
+ arm_func_start MOD04_021E17BC
+MOD04_021E17BC: ; 0x021E17BC
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E17E8 ; =UNK04_022106D0
+ mov r1, r0
+ ldr r0, [r2]
+ ldr r2, _021E17EC ; =UNK04_0220D350
+ ldr r0, [r0, #4]
+ bl MOD04_021F09B0
+ mov r4, r0
+ bl MOD04_021E1678
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E17E8: .word UNK04_022106D0
+_021E17EC: .word UNK04_0220D350
+ arm_func_end MOD04_021E17BC
+
+ arm_func_start MOD04_021E17F0
+MOD04_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 MOD04_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 MOD04_021E1F84
+ cmp sb, r0
+ bne _021E18CC
+ mov r0, r6
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E1894
+ mov r0, r4
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ bne _021E1894
+ mov r0, r5
+ mov r1, sb
+ bl DWC_SetGsProfileId
+_021E1894:
+ mov r0, r4
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ beq _021E18AC
+ mov r0, r5
+ bl DWCi_SetBuddyFriendData
+_021E18AC:
+ mov r0, fp
+ mov r1, r7
+ mov r2, r8
+ bl MOD04_021E19B8
+ ldr r0, _021E18FC ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E17F0
+
+ arm_func_start MOD04_021E1900
+MOD04_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 MOD04_021E1F84
+ cmp r0, #0
+ beq _021E199C
+ cmp r0, r5
+ bne _021E199C
+ mov r0, #0xc
+ mla r0, r6, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ beq _021E1974
+ mov r0, #0xc
+ mla r0, r4, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ bne _021E1974
+ mov r0, r7
+ mov r1, r4
+ mov r2, r6
+ bl MOD04_021E19B8
+ b _021E1984
+_021E1974:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ bl MOD04_021E19B8
+_021E1984:
+ ldr r1, _021E19B4 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E1900
+
+ arm_func_start MOD04_021E19B8
+MOD04_021E19B8: ; 0x021E19B8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r3, _021E1A1C ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E19B8
+
+ arm_func_start MOD04_021E1A20
+MOD04_021E1A20: ; 0x021E1A20
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021E1A5C ; =UNK04_022106D0
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x1d]
+ ldr r2, [r3, #0x30]
+ ldr r3, [r3, #0x2c]
+ blx r3
+ ldr r0, _021E1A5C ; =UNK04_022106D0
+ mov r1, #2
+ ldr r0, [r0]
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1A5C: .word UNK04_022106D0
+ arm_func_end MOD04_021E1A20
+
+ arm_func_start MOD04_021E1A60
+MOD04_021E1A60: ; 0x021E1A60
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x24c
+ ldr r2, _021E1CC4 ; =UNK04_022106D0
+ 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 MOD04_021F0828
+ bl MOD04_021E1678
+ ldr r0, [sp, #0x18]
+ mov fp, #0
+ str fp, [sp, #0x1c]
+ cmp r0, #0
+ ble _021E1B7C
+ ldr r8, _021E1CC4 ; =UNK04_022106D0
+ mov sb, #1
+ mov r7, #0xc
+_021E1AB4:
+ ldr r0, [r8]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r0, #4]
+ add r2, sp, #0x38
+ bl MOD04_021F06E4
+ bl MOD04_021E1678
+ mov r4, fp
+ cmp r5, #0
+ ble _021E1B30
+_021E1AD8:
+ mov r0, r4
+ bl MOD04_021E1F84
+ ldr r1, [sp, #0x38]
+ cmp r1, r0
+ bne _021E1B24
+ mul sl, r4, r7
+ add r0, r6, sl
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ bne _021E1B30
+ add sl, r6, sl
+ ldr r1, [sp, #0x38]
+ mov r0, sl
+ bl DWC_SetGsProfileId
+ mov r0, sl
+ bl DWCi_SetBuddyFriendData
+ 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 MOD04_021F0580
+ bl MOD04_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 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+_021E1B8C:
+ ldr sl, _021E1CC4 ; =UNK04_022106D0
+ 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 MOD04_021E1F84
+ movs r7, r0
+ beq _021E1C08
+ ldr r1, [sl]
+ mov r0, r6
+ ldrb r1, [r1, #0x1c]
+ mov r2, r7
+ bl MOD04_021E1900
+ cmp r0, #0
+ bne _021E1C9C
+ ldr r0, [sl]
+ mov r1, r7
+ ldr r0, [r0, #4]
+ mov r2, r4
+ bl MOD04_021F0664
+ bl MOD04_021E1678
+ ldr r0, [sp, #0x1c]
+ cmp r0, sb
+ bne _021E1C9C
+ mov r0, r7
+ bl MOD04_021E17BC
+ b _021E1C9C
+_021E1C08:
+ bl MOD04_021E0F00
+ ldr r1, [sl]
+ ldrb r2, [r1, #0x1c]
+ mla r1, r2, r8, r6
+ bl DWC_GetGsProfileId
+ cmp r0, sb
+ bne _021E1C9C
+ bl MOD04_021E0F00
+ ldr r2, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #0xc
+ ldr r3, [r2]
+ add r2, sp, #0x20
+ ldrb r3, [r3, #0x1c]
+ mla r1, r3, r1, r6
+ bl DWC_LoginIdToUserName
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #0
+ ldr r4, [r0]
+ add r2, sp, #0x20
+ str r1, [sp]
+ str r2, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, _021E1CC8 ; =MOD04_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 MOD04_021F0C84
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+_021E1CC8: .word MOD04_021E1414
+ arm_func_end MOD04_021E1A60
+
+ arm_func_start MOD04_021E1CCC
+MOD04_021E1CCC: ; 0x021E1CCC
+ ldr r0, _021E1CF8 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E1CCC
+
+ arm_func_start MOD04_021E1CFC
+MOD04_021E1CFC: ; 0x021E1CFC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021E1D88 ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ add r1, r1, #1
+ str r1, [r4, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F0F18
+ mov r5, r0
+ bl OS_GetTick
+ ldr r2, _021E1D88 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+_021E1D8C: .word 0x000082EA
+ arm_func_end MOD04_021E1CFC
+
+ arm_func_start MOD04_021E1D90
+MOD04_021E1D90: ; 0x021E1D90
+ ldr r0, _021E1DA0 ; =UNK04_022106D0
+ mov r1, #0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_021E1DA0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1D90
+
+ arm_func_start MOD04_021E1DA4
+MOD04_021E1DA4: ; 0x021E1DA4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x210
+ ldr r1, _021E1E2C ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ 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 MOD04_021E26B8
+ ldr r2, _021E1E2C ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E1DA4
+
+ arm_func_start MOD04_021E1E30
+MOD04_021E1E30: ; 0x021E1E30
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r3, _021E1ED0 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r3]
+ mov r5, r1
+ mov r4, r2
+ cmp r0, #0
+ beq _021E1E5C
+ bl MOD04_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 ; =UNK04_022106D0
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ ldreq r6, [r0, #0x214]
+ cmp r5, #0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ mov r1, r6
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ addeq r5, r0, #0x218
+ cmp r4, #0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ mov r2, r5
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ addeq r4, r0, #0x318
+ ldr r0, _021E1ED0 ; =UNK04_022106D0
+ mov r3, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F034C
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E1ED0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1E30
+
+ arm_func_start MOD04_021E1ED4
+MOD04_021E1ED4: ; 0x021E1ED4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E1F14 ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ ldr r2, [r2]
+ str r0, [r2, #0xc]
+ str r1, [r2, #0x10]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1F14: .word UNK04_022106D0
+ arm_func_end MOD04_021E1ED4
+
+ arm_func_start MOD04_021E1F18
+MOD04_021E1F18: ; 0x021E1F18
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r4, _021E1F80 ; =UNK04_022106D0
+ 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 MOD04_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 UNK04_022106D0
+ arm_func_end MOD04_021E1F18
+
+ arm_func_start MOD04_021E1F84
+MOD04_021E1F84: ; 0x021E1F84
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _021E1FE0 ; =UNK04_022106D0
+ 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 MOD04_021E0F00
+ mov r1, #0xc
+ mla r1, r5, r1, r4
+ bl DWC_GetGsProfileId
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E1F84
+
+ arm_func_start MOD04_021E1FE4
+MOD04_021E1FE4: ; 0x021E1FE4
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x210
+ ldr r2, _021E2064 ; =UNK04_022106D0
+ 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 MOD04_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 MOD04_021F06E4
+ ldr r0, _021E2064 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E1FE4
+
+ arm_func_start MOD04_021E2068
+MOD04_021E2068: ; 0x021E2068
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ mov r4, r1
+ mov r5, r0
+ ldr r0, [r4, #8]
+ ldr r1, _021E20C0 ; =UNK04_0220D354
+ bl strcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021E20C4 ; =MOD04_021E110C
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4]
+ mov r0, r5
+ mov r3, r2
+ bl MOD04_021F0B9C
+ mov r0, #1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E20C0: .word UNK04_0220D354
+_021E20C4: .word MOD04_021E110C
+ arm_func_end MOD04_021E2068
+
+ arm_func_start MOD04_021E20C8
+MOD04_021E20C8: ; 0x021E20C8
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r2, _021E210C ; =UNK04_022106D0
+ ldr r2, [r2]
+ ldr r2, [r2, #0x18]
+ cmp r2, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+ ldr r3, _021E2110 ; =MOD04_021E12B8
+ mov r2, #0
+ str r3, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r1]
+ mov r3, r2
+ bl MOD04_021F0B9C
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E210C: .word UNK04_022106D0
+_021E2110: .word MOD04_021E12B8
+ arm_func_end MOD04_021E20C8
+
+ arm_func_start MOD04_021E2114
+MOD04_021E2114: ; 0x021E2114
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E2170 ; =UNK04_022106D0
+ mov r4, r0
+ ldr r2, [r2]
+ cmp r2, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021DD6B0
+ ldr r0, _021E2170 ; =UNK04_022106D0
+ 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 MOD04_021E1CCC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2170: .word UNK04_022106D0
+ arm_func_end MOD04_021E2114
+
+ arm_func_start MOD04_021E2174
+MOD04_021E2174: ; 0x021E2174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021E2224 ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E2174
+
+ arm_func_start MOD04_021E2228
+MOD04_021E2228: ; 0x021E2228
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ 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 MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD04_021E10F8
+ cmp r0, #0
+ bne _021E227C
+ bl MOD04_021FBE5C
+ cmp r0, #0
+ beq _021E2280
+_021E227C:
+ bl MOD04_021FBD00
+_021E2280:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021E231C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E231C
+ bl MOD04_021E1CFC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ 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 MOD04_021E1A60
+_021E22EC:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ 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 ; =UNK04_022106D0
+ 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 MOD04_021E1A20
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E2348: .word UNK04_022106D0
+ arm_func_end MOD04_021E2228
+
+ arm_func_start MOD04_021E234C
+MOD04_021E234C: ; 0x021E234C
+ stmdb sp!, {r4, lr}
+ ldr lr, _021E2428 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E234C
+
+ arm_func_start MOD04_021E242C
+MOD04_021E242C: ; 0x021E242C
+ ldr r2, _021E2450 ; =UNK04_022106D0
+ 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 UNK04_022106D0
+ arm_func_end MOD04_021E242C
+
+ arm_func_start MOD04_021E2454
+MOD04_021E2454: ; 0x021E2454
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x104
+ ldr r2, _021E24DC ; =UNK04_022106D0
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ beq _021E2480
+ bl MOD04_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 MOD04_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 MOD04_021E1E30
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #0x104
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E24DC: .word UNK04_022106D0
+ arm_func_end MOD04_021E2454
+
+ arm_func_start MOD04_021E24E0
+MOD04_021E24E0: ; 0x021E24E0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x100
+ mov r6, r3
+ add r3, sp, #0
+ ldr r4, [sp, #0x110]
+ bl MOD04_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 MOD04_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 MOD04_021DD36C
+ mov r0, r5
+ add sp, sp, #0x100
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E24E0
+
+ arm_func_start MOD04_021E2578
+MOD04_021E2578: ; 0x021E2578
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r3, r1
+ mov r1, #0
+ str r2, [sp]
+ mov r2, r1
+ bl MOD04_021E24E0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E2578
+
+ arm_func_start MOD04_021E259C
+MOD04_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 MOD04_021E16EC
+ cmp r0, #0
+ beq _021E268C
+ ldr r0, [sp, #8]
+ cmp r0, #6
+ bne _021E2650
+ cmp r6, #0
+ beq _021E260C
+ ldr r0, _021E26B0 ; =UNK04_0220D38C
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_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 ; =UNK04_0220D390
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_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 UNK04_0220D38C
+_021E26B4: .word UNK04_0220D390
+ arm_func_end MOD04_021E259C
+
+ arm_func_start MOD04_021E26B8
+MOD04_021E26B8: ; 0x021E26B8
+ ldr ip, _021E26CC ; =MOD04_021E259C
+ mov r3, r1
+ mov r1, #0
+ mov r2, r1
+ bx ip
+ .align 2, 0
+_021E26CC: .word MOD04_021E259C
+ arm_func_end MOD04_021E26B8
+
+ .section .data
+
+ .global UNK04_0220D350
+UNK04_0220D350: ; 0x0220D350
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D354
+UNK04_0220D354: ; 0x0220D354
+ .asciz "I have authorized your request to add me to your list"
+
+ .balign 4, 0
+ .global UNK04_0220D38C
+UNK04_0220D38C: ; 0x0220D38C
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D390
+UNK04_0220D390: ; 0x0220D390
+ .asciz "SCN"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022106D0
+UNK04_022106D0: ; 0x022106D0
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021E26D0.s b/arm9/modules/04/asm/mod04_021E26D0.s
new file mode 100644
index 00000000..8471cb82
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E26D0.s
@@ -0,0 +1,9238 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E26D0
+MOD04_021E26D0: ; 0x021E26D0
+ ldr r1, _021E26E0 ; =UNK04_022106D8
+ ldr r1, [r1]
+ str r0, [r1, #0x1a0]
+ bx lr
+ .align 2, 0
+_021E26E0: .word UNK04_022106D8
+ arm_func_end MOD04_021E26D0
+
+ arm_func_start MOD04_021E26E4
+MOD04_021E26E4: ; 0x021E26E4
+ ldr r0, _021E26F0 ; =UNK04_022106D8
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_021E26F0: .word UNK04_022106D8
+ arm_func_end MOD04_021E26E4
+
+ arm_func_start MOD04_021E26F4
+MOD04_021E26F4: ; 0x021E26F4
+ ldr r1, _021E2700 ; =UNK04_022106D8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_021E2700: .word UNK04_022106D8
+ arm_func_end MOD04_021E26F4
+
+ arm_func_start MOD04_021E2704
+MOD04_021E2704: ; 0x021E2704
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #1
+ ldmneia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E273C
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x17d]
+ add r1, r1, #1
+ strb r1, [r0, #0x17d]
+_021E273C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E275C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17d]
+ cmp r0, #5
+ blo _021E2774
+_021E275C:
+ ldr r1, _021E2780 ; =0xFFFEAE6C
+ mov r0, #6
+ bl MOD04_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_end MOD04_021E2704
+
+ arm_func_start MOD04_021E2784
+MOD04_021E2784: ; 0x021E2784
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov r6, r2
+ mov r4, r3
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E27BC
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x14]
+ add r1, r1, #1
+ strb r1, [r0, #0x14]
+ bl MOD04_021E26E4
+ ldrb r1, [r4]
+ ldrb r5, [r0, #0x14]
+ cmp r1, #0
+ beq _021E2950
+ bl MOD04_021E26E4
+ ldr r1, [r6, #4]
+ add r0, r0, r5, lsl #2
+ str r1, [r0, #0x210]
+ ldrh r4, [r6, #2]
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x180]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x184]
+ str r1, [r0, #0x188]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ bne _021E2878
+ mov r0, #0xc
+ bl MOD04_021E26D0
+ b _021E2880
+_021E2878:
+ mov r0, #7
+ bl MOD04_021E26D0
+_021E2880:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ ldr r3, [r0, #0x200]
+ ldr r2, _021E2B58 ; =UNK04_0220D394
+ add r0, sp, #0x10
+ mov r1, #0xc
+ bl OS_SNPrintf
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021FFEB0
+ mov r6, r0
+ bl MOD04_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 MOD04_021FD52C
+ cmp r0, #1
+ bne _021E2928
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_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 MOD04_021E26E4
+ ldr r1, [r6, #4]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0x210]
+ ldrh r5, [r6, #2]
+ bl MOD04_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 MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x18c]
+ mov r0, #7
+ str r1, [r4, #0x190]
+ bl MOD04_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 MOD04_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 MOD04_021E2704
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_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 MOD04_021E7A44
+ bl MOD04_021E37A4
+ add sp, sp, #0x20
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2A74:
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E2AD8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E2AF0
+_021E2AD8:
+ mov r0, #1
+ bl MOD04_021E2704
+ cmp r0, #0
+ bne _021E2B04
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2AF0:
+ mov r0, #0
+ bl MOD04_021E2704
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021E2B04:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x180]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x184]
+ str r1, [r0, #0x188]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E2B58: .word UNK04_0220D394
+_021E2B5C: .word 0x00001388
+ arm_func_end MOD04_021E2784
+
+ arm_func_start MOD04_021E2B60
+MOD04_021E2B60: ; 0x021E2B60
+ bx lr
+ arm_func_end MOD04_021E2B60
+
+ arm_func_start MOD04_021E2B64
+MOD04_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 MOD04_021DF88C
+ cmp r0, #5
+ beq _021E2BB8
+ bl MOD04_021DF88C
+ cmp r0, #6
+ addne sp, sp, #0x9c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E2BB8
+ bl MOD04_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 ; =UNK04_0220D398
+ 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 MOD04_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 UNK04_0220D398
+ arm_func_end MOD04_021E2B64
+
+ arm_func_start MOD04_021E2C78
+MOD04_021E2C78: ; 0x021E2C78
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E2C9C
+ mov r0, #6
+ bl MOD04_021E26D0
+ b _021E2CBC
+_021E2C9C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E2CBC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ ldmneia sp!, {r4, pc}
+_021E2CBC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x180]
+ cmp r4, r0
+ bne _021E2CE0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x17c]
+ add r1, r1, #1
+ strb r1, [r0, #0x17c]
+ b _021E2CF4
+_021E2CE0:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ str r4, [r0, #0x180]
+_021E2CF4:
+ bl MOD04_021E26E4
+ mov r2, #0
+ str r2, [r0, #0x184]
+ str r2, [r0, #0x188]
+ mov r1, r4
+ mov r0, #1
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E2C78
+
+ arm_func_start MOD04_021E2D2C
+MOD04_021E2D2C: ; 0x021E2D2C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl MOD04_021E26E4
+ str r5, [r0, #0x1c]
+ bl MOD04_021E26E4
+ strh r4, [r0, #0x1a]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E2D2C
+
+ arm_func_start MOD04_021E2D54
+MOD04_021E2D54: ; 0x021E2D54
+ ldr ip, _021E2D5C ; =MOD04_021E3800
+ bx ip
+ .align 2, 0
+_021E2D5C: .word MOD04_021E3800
+ arm_func_end MOD04_021E2D54
+
+ arm_func_start MOD04_021E2D60
+MOD04_021E2D60: ; 0x021E2D60
+ mov r0, #0
+ bx lr
+ arm_func_end MOD04_021E2D60
+
+ arm_func_start MOD04_021E2D68
+MOD04_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 MOD04_02202254
+ mov r0, r6
+ mov r1, #0xa
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x32
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x33
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x34
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x35
+ bl MOD04_02202254
+ mov r0, r6
+ mov r1, #0x36
+ bl MOD04_02202254
+ ldr r4, _021E2E0C ; =UNK04_02210704
+ mov r5, #0
+_021E2DE4:
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _021E2DF8
+ mov r0, r6
+ bl MOD04_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 UNK04_02210704
+ arm_func_end MOD04_021E2D68
+
+ arm_func_start MOD04_021E2E10
+MOD04_021E2E10: ; 0x021E2E10
+ bx lr
+ arm_func_end MOD04_021E2E10
+
+ arm_func_start MOD04_021E2E14
+MOD04_021E2E14: ; 0x021E2E14
+ bx lr
+ arm_func_end MOD04_021E2E14
+
+ arm_func_start MOD04_021E2E18
+MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x14]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2E88:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x16]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2E9C:
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x200]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EB0:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x15]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EC4:
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x20]
+ mov r0, r4
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2ED8:
+ mov r0, r4
+ mov r1, #3
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+_021E2EE8:
+ mov r0, r4
+ mov r1, #1
+ bl MOD04_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 ; =UNK04_02210704
+ ldrb r0, [r0, r2]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _021E2F60 ; =UNK04_02210705
+ ldrb r0, [r0, r2]
+ cmp r0, #0
+ beq _021E2F44
+ ldr r1, _021E2F64 ; =UNK04_0221070C
+ mov r0, r4
+ ldr r1, [r1, r2]
+ bl MOD04_022021C0
+ ldmia sp!, {r4, pc}
+_021E2F44:
+ ldr r1, _021E2F64 ; =UNK04_0221070C
+ mov r0, r4
+ ldr r1, [r1, r2]
+ ldr r1, [r1]
+ bl MOD04_02202220
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2F5C: .word UNK04_02210704
+_021E2F60: .word UNK04_02210705
+_021E2F64: .word UNK04_0221070C
+ arm_func_end MOD04_021E2E18
+
+ arm_func_start MOD04_021E2F68
+MOD04_021E2F68: ; 0x021E2F68
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x1c
+ mov r8, #0
+ mov r7, r8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #1
+ addle sp, sp, #0x1c
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov sb, r8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E2FF8
+ ldr r4, _021E30D8 ; =UNK04_0220BAC4
+ ldr r6, _021E30DC ; =UNK04_0220D3A0
+ mvn r5, #0
+_021E2FB4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, sb
+ bl MOD04_02203BF4
+ mov r1, r6
+ mov r2, r5
+ bl MOD04_0220394C
+ cmp r0, r8
+ movgt r8, r0
+ ldr r0, [r4, sb, lsl #2]
+ add sb, sb, #1
+ add r7, r7, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp sb, r0
+ blt _021E2FB4
+_021E2FF8:
+ mov r0, #0x64
+ bl MOD04_021DE8C8
+ mov sb, r0
+ mov r6, #0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E3090
+ add r5, sp, #0
+ mov fp, r6
+ mov r4, #0x64
+_021E3028:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_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 ; =UNK04_0220BAC4
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r6, r0
+ blt _021E3028
+_021E3090:
+ mvn r0, #0x80000000
+ cmp r8, r0
+ addlt r8, r8, #1
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r6
+ bl MOD04_02203BF4
+ ldr r1, _021E30DC ; =UNK04_0220D3A0
+ mov r2, r8
+ bl MOD04_02203A48
+ bl MOD04_021E26E4
+ mov r1, #0
+ ldr r0, [r0, #0xe4]
+ ldr r2, _021E30DC ; =UNK04_0220D3A0
+ mov r3, r1
+ bl MOD04_02203BD4
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E30D8: .word UNK04_0220BAC4
+_021E30DC: .word UNK04_0220D3A0
+ arm_func_end MOD04_021E2F68
+
+ arm_func_start MOD04_021E30E0
+MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E3268
+ mov r0, #0x80
+ mov r4, #1
+ mov r5, r8
+ str r0, [sp, #8]
+ mov fp, #0x100
+_021E3120:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r8
+ bl MOD04_02203BF4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E31BC
+ ldr r1, _021E32D4 ; =UNK04_0220D3AC
+ mov r0, r6
+ mov r2, r5
+ bl MOD04_0220394C
+ mov sb, r0
+ mov sl, r5
+ mov r7, r4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E31B4
+_021E3170:
+ bl MOD04_021E26E4
+ add r0, r0, r7, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp sb, r0
+ bne _021E31A0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r6
+ bl MOD04_02203C50
+ mov sl, r4
+ sub r8, r8, #1
+ b _021E31B4
+_021E31A0:
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E3170
+_021E31B4:
+ cmp sl, #0
+ bne _021E3250
+_021E31BC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x474]
+ cmp r0, #0
+ beq _021E3238
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_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 MOD04_021DE8C8
+ orr r2, r0, r7, lsl #8
+ ldr r1, _021E32DC ; =UNK04_0220D3A0
+ mov r0, r6
+ bl MOD04_02203A48
+ b _021E3250
+_021E321C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, r6
+ bl MOD04_02203C50
+ str r4, [sp, #4]
+ sub r8, r8, #1
+ b _021E3250
+_021E3238:
+ ldr r0, [sp, #8]
+ bl MOD04_021DE8C8
+ mov r2, r0
+ ldr r1, _021E32DC ; =UNK04_0220D3A0
+ mov r0, r6
+ bl MOD04_02203A48
+_021E3250:
+ add r8, r8, #1
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r8, r0
+ blt _021E3120
+_021E3268:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _021E32A0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E32A0
+ bl MOD04_021E26E4
+ mov r1, #0
+ ldr r0, [r0, #0xe4]
+ ldr r2, _021E32DC ; =UNK04_0220D3A0
+ mov r3, r1
+ bl MOD04_02203BD4
+_021E32A0:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _021E32C8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_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 UNK04_0220D3AC
+_021E32D8: .word 0x007FFFFF
+_021E32DC: .word UNK04_0220D3A0
+ arm_func_end MOD04_021E30E0
+
+ arm_func_start MOD04_021E32E0
+MOD04_021E32E0: ; 0x021E32E0
+ bx lr
+ arm_func_end MOD04_021E32E0
+
+ arm_func_start MOD04_021E32E4
+MOD04_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 MOD04_021E32E0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E331C:
+ mov r5, #0
+ bl MOD04_02203BE4
+ cmp r0, #0
+ ble _021E336C
+_021E332C:
+ mov r0, r6
+ mov r1, r5
+ bl MOD04_02203BF4
+ mov r4, r0
+ bl MOD04_021E3F98
+ cmp r0, #0
+ bne _021E3358
+ mov r0, r6
+ mov r1, r4
+ bl MOD04_02203C50
+ sub r5, r5, #1
+_021E3358:
+ mov r0, r6
+ add r5, r5, #1
+ bl MOD04_02203BE4
+ cmp r5, r0
+ blt _021E332C
+_021E336C:
+ bl MOD04_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 MOD04_02203BE4
+ cmp r0, #0
+ ble _021E3424
+_021E33A8:
+ mov r0, r6
+ mov r1, r5
+ bl MOD04_02203BF4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _021E3410
+ bl MOD04_021E26E4
+ mov r7, r0
+ mov r0, r4
+ bl MOD04_02203908
+ ldr r1, [r7, #0x1c]
+ cmp r1, r0
+ bne _021E3410
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0
+ beq _021E3410
+ bl MOD04_021E26E4
+ mov r7, r0
+ mov r0, r4
+ bl MOD04_022038E4
+ ldrh r1, [r7, #0x1a]
+ cmp r1, r0
+ beq _021E3424
+_021E3410:
+ mov r0, r6
+ add r5, r5, #1
+ bl MOD04_02203BE4
+ cmp r5, r0
+ blt _021E33A8
+_021E3424:
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r5, r0
+ bge _021E3464
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3464:
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_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 MOD04_021E30E0
+ bl MOD04_021E2F68
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E34E0
+ mov r0, #0
+ mov r1, r0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E34E0:
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_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 MOD04_02203BE4
+ cmp r0, #0
+ beq _021E3580
+ mov r4, #0
+_021E351C:
+ mov r0, r6
+ mov r1, r4
+ bl MOD04_02203BF4
+ mov r5, r0
+ bl MOD04_02203908
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1b8]
+ cmp r7, r0
+ bne _021E3564
+ mov r0, r5
+ bl MOD04_022038E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb4]
+ cmp r7, r0
+ beq _021E3580
+_021E3564:
+ mov r0, r6
+ mov r1, r5
+ bl MOD04_02203C50
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ bne _021E351C
+_021E3580:
+ mov r0, r6
+ bl MOD04_02203BE4
+ cmp r0, #0
+ beq _021E3684
+ mov r0, r6
+ mov r1, #0
+ bl MOD04_02203BF4
+ ldr r1, _021E36AC ; =UNK04_0220D3AC
+ mov r2, #0
+ bl MOD04_0220394C
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E3650
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r4, r0
+ bne _021E3650
+ mov r0, #0
+ bl MOD04_021E30E0
+ cmp r0, #0
+ beq _021E3604
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E3650
+ bl MOD04_021E5824
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E3650
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3604:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, r0
+ mov r0, #0
+ ldr r2, [r1, #0xf4]
+ mov r1, r0
+ bl MOD04_021E5D30
+ bl MOD04_021E61EC
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3650:
+ mov r0, #6
+ bl MOD04_021E26D0
+ mov r0, r6
+ mov r1, #0
+ bl MOD04_02203BF4
+ mov r2, r0
+ mov r0, #0
+ mov r1, r0
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E3684:
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_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 UNK04_0220D3AC
+ arm_func_end MOD04_021E32E4
+
+ arm_func_start MOD04_021E36B0
+MOD04_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 MOD04_021E8E08
+_021E3748:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E3750: .word 0xFFFEAC28
+ arm_func_end MOD04_021E36B0
+
+ arm_func_start MOD04_021E3754
+MOD04_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 MOD04_021E8E08
+_021E3798:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E37A0: .word 0xFFFEB007
+ arm_func_end MOD04_021E3754
+
+ arm_func_start MOD04_021E37A4
+MOD04_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 MOD04_021E8E08
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E37FC: .word 0xFFFEB010
+ arm_func_end MOD04_021E37A4
+
+ arm_func_start MOD04_021E3800
+MOD04_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 MOD04_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 MOD04_021E0EAC
+ b _021E38D4
+_021E389C:
+ ldr r1, _021E38DC ; =0xFFFEDEF0
+ mov r0, r4
+ add r1, r5, r1
+ bl MOD04_021E2114
+ b _021E38D4
+_021E38B0:
+ ldr r1, _021E38E0 ; =0xFFFEB7E0
+ mov r0, r4
+ add r1, r5, r1
+ bl MOD04_021E8E08
+ b _021E38D4
+_021E38C4:
+ ldr r1, _021E38E4 ; =0xFFFE90D0
+ mov r0, r4
+ add r1, r5, r1
+ bl MOD04_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_end MOD04_021E3800
+
+ arm_func_start MOD04_021E38E8
+MOD04_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 MOD04_021E8E08
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E3978: .word 0xFFFEB3F8
+ arm_func_end MOD04_021E38E8
+
+ arm_func_start MOD04_021E397C
+MOD04_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 MOD04_021E8E08
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E39EC: .word 0xFFFEC398
+ arm_func_end MOD04_021E397C
+
+ arm_func_start MOD04_021E39F0
+MOD04_021E39F0: ; 0x021E39F0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ sub sp, sp, #8
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ 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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x13
+ bne _021E3C58
+ mov r0, #0
+ bl MOD04_021E3EC4
+ ldr r1, _021E3E1C ; =UNK04_022106D4
+ ldr r5, [r1]
+ ldr r1, [r5, #8]
+ cmp r1, r0
+ bne _021E3B2C
+ ldr r1, [r5, #0xc]
+ cmp r1, r0
+ bne _021E3AB8
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x16]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, #0
+ sub r1, r1, #1
+ strb r1, [r4, #0x1a4]
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E3B0C
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_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 MOD04_021E26D0
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_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 MOD04_021E3E28
+ bl MOD04_021E4B40
+ mov r0, #1
+ bl MOD04_021E4CF8
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3B98:
+ mov r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E3C3C
+ ldr r8, _021E3E1C ; =UNK04_022106D4
+ mov r5, #0
+ mov r4, #0x11
+ mov r6, r7
+_021E3BBC:
+ bl MOD04_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 MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3C28:
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E3BBC
+_021E3C3C:
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ beq _021E3C7C
+ bl MOD04_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 ; =UNK04_022106D4
+ ldr r4, [r0]
+ bl MOD04_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 ; =UNK04_022106D4
+ 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 ; =UNK04_022106D4
+ 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 MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r0, #0
+ beq _021E3D74
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E3D74:
+ mov r0, #0x13
+ bl MOD04_021E26D0
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E3DF8
+ mov r6, #0
+ mov r5, #0x11
+_021E3D98:
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E3D98
+_021E3DF8:
+ ldr r0, _021E3E1C ; =UNK04_022106D4
+ 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 UNK04_022106D4
+_021E3E20: .word 0x000082EA
+_021E3E24: .word 0x00001770
+ arm_func_end MOD04_021E39F0
+
+ arm_func_start MOD04_021E3E28
+MOD04_021E3E28: ; 0x021E3E28
+ stmdb sp!, {r4, lr}
+ ldr r1, _021E3E98 ; =UNK04_022106D4
+ 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 ; =UNK04_022106D4
+ cmp r4, #0
+ ldr r2, [r2]
+ str r0, [r2, #0x18]
+ str r1, [r2, #0x1c]
+ ldmneia sp!, {r4, pc}
+ bl OS_GetTick
+ ldr r2, _021E3E98 ; =UNK04_022106D4
+ ldr r2, [r2]
+ str r0, [r2, #0x10]
+ str r1, [r2, #0x14]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E3E98: .word UNK04_022106D4
+ arm_func_end MOD04_021E3E28
+
+ arm_func_start MOD04_021E3E9C
+MOD04_021E3E9C: ; 0x021E3E9C
+ stmdb sp!, {r4, lr}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1f8]
+ str r1, [r4, #0x1fc]
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E3E9C
+
+ arm_func_start MOD04_021E3EC4
+MOD04_021E3EC4: ; 0x021E3EC4
+ stmdb sp!, {r4, r5, r6, lr}
+ cmp r0, #0
+ mov r6, #0
+ beq _021E3EE4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x2f0]
+ bic r0, r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+_021E3EE4:
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E3F20
+ mov r4, r5
+_021E3EFC:
+ bl MOD04_021E26E4
+ add r0, r0, r5
+ ldrb r0, [r0, #0x2d0]
+ add r5, r5, #1
+ orr r6, r6, r4, lsl r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E3EFC
+_021E3F20:
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E3EC4
+
+ arm_func_start MOD04_021E3F28
+MOD04_021E3F28: ; 0x021E3F28
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ cmp r1, #0
+ moveq r4, #1
+ mov r5, r0
+ movne r4, #0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ bgt _021E3F8C
+_021E3F50:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r5, r0
+ bne _021E3F78
+ bl MOD04_021E26E4
+ add r0, r0, r4
+ add sp, sp, #4
+ ldrb r0, [r0, #0x2d0]
+ ldmia sp!, {r4, r5, pc}
+_021E3F78:
+ add r4, r4, #1
+ bl MOD04_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_end MOD04_021E3F28
+
+ arm_func_start MOD04_021E3F98
+MOD04_021E3F98: ; 0x021E3F98
+ stmdb sp!, {r4, lr}
+ ldr r1, _021E405C ; =UNK04_0220D3B4
+ mvn r2, #0
+ mov r4, r0
+ bl MOD04_0220394C
+ mvn r2, #0
+ cmp r0, r2
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4060 ; =UNK04_0220D3C0
+ mov r0, r4
+ bl MOD04_0220394C
+ mvn r2, #0
+ cmp r0, r2
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4064 ; =UNK04_0220D3CC
+ mov r0, r4
+ bl MOD04_0220394C
+ mvn r2, #0
+ cmp r0, r2
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4068 ; =UNK04_0220D3D8
+ mov r0, r4
+ bl MOD04_0220394C
+ mvn r1, #0
+ cmp r0, r1
+ bne _021E4028
+ ldr r1, _021E4068 ; =UNK04_0220D3D8
+ mov r0, r4
+ mov r2, #0
+ bl MOD04_0220394C
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+_021E4028:
+ ldr r1, _021E406C ; =UNK04_0220D3E4
+ mov r0, r4
+ mvn r2, #0
+ bl MOD04_0220394C
+ mvn r1, #0
+ cmp r0, r1
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _021E4070 ; =UNK04_0220D3AC
+ mov r0, r4
+ mov r2, #0
+ bl MOD04_0220394C
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E405C: .word UNK04_0220D3B4
+_021E4060: .word UNK04_0220D3C0
+_021E4064: .word UNK04_0220D3CC
+_021E4068: .word UNK04_0220D3D8
+_021E406C: .word UNK04_0220D3E4
+_021E4070: .word UNK04_0220D3AC
+ arm_func_end MOD04_021E3F98
+
+ arm_func_start MOD04_021E4074
+MOD04_021E4074: ; 0x021E4074
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x2fc]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ mov r4, #0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x344]
+ cmp r0, #0
+ ble _021E40E8
+_021E40AC:
+ bl MOD04_021E26E4
+ add r0, r0, r4
+ ldrb r0, [r0, #0x304]
+ bl MOD04_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 MOD04_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_end MOD04_021E4074
+
+ arm_func_start MOD04_021E40F4
+MOD04_021E40F4: ; 0x021E40F4
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, #0
+ mov r4, r6
+_021E4100:
+ mov r5, r4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ blt _021E413C
+_021E4114:
+ bl MOD04_021E26E4
+ add r0, r0, r5
+ ldrb r0, [r0, #0x2d0]
+ cmp r6, r0
+ beq _021E413C
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r5, r0
+ ble _021E4114
+_021E413C:
+ bl MOD04_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_end MOD04_021E40F4
+
+ arm_func_start MOD04_021E4164
+MOD04_021E4164: ; 0x021E4164
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r6, _021E41BC ; =UNK04_02210704
+ 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 MOD04_021DD904
+_021E4194:
+ add r7, r7, #1
+ cmp r7, #0x9a
+ add r6, r6, #0xc
+ blt _021E417C
+ ldr r1, _021E41BC ; =UNK04_02210704
+ 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 UNK04_02210704
+_021E41C0: .word 0x00000738
+ arm_func_end MOD04_021E4164
+
+ arm_func_start MOD04_021E41C4
+MOD04_021E41C4: ; 0x021E41C4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ beq _021E41FC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xe
+ beq _021E41FC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xf
+ bne _021E4240
+_021E41FC:
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0xe
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x1ac]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ac]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ac]
+ cmp r0, #5
+ bls _021E4330
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d8]
+ bl MOD04_021E4A00
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E4324
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ac]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1e8]
+ str r1, [r4, #0x1ec]
+ b _021E43CC
+_021E4324:
+ mov r0, #2
+ bl MOD04_021E4CF8
+ b _021E43CC
+_021E4330:
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E43CC
+ mov r5, #0xd
+ mov r6, r4
+_021E434C:
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ mov r1, r5
+ bl MOD04_021E4604
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+_021E4394:
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E434C
+ b _021E43CC
+_021E43AC:
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb2]
+ cmp r5, r0, asr #31
+ cmpeq r4, r0
+ bls _021E43CC
+ mov r0, #2
+ bl MOD04_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_end MOD04_021E41C4
+
+ arm_func_start MOD04_021E43E0
+MOD04_021E43E0: ; 0x021E43E0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ beq _021E443C
+ mov r0, #8
+ bl MOD04_021E26D0
+ mov r0, r4
+ bl MOD04_021E4B78
+_021E443C:
+ mov r0, r6
+ mov r1, #0xe
+ bl MOD04_021E4604
+ cmp r0, #0
+ bne _021E45F8
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4458:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xe
+ bne _021E45C4
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb2]
+ cmp r4, r0, asr #31
+ cmpeq r5, r0
+ bls _021E4524
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r5, [r0, #0xb2]
+_021E4524:
+ mov r0, r6
+ mov r1, #0
+ bl MOD04_021E3F28
+ mov r4, r0
+ cmp r4, #0xff
+ beq _021E4550
+ bl MOD04_021E26E4
+ ldr r2, [r0, #0x1d8]
+ mov r1, #1
+ orr r1, r2, r1, lsl r4
+ str r1, [r0, #0x1d8]
+_021E4550:
+ mov r0, #1
+ bl MOD04_021E3EC4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d8]
+ cmp r4, r0
+ bne _021E45F8
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E45B8
+ mov r4, #0xf
+_021E4584:
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ mov r1, r4
+ bl MOD04_021E4604
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E4584
+_021E45B8:
+ mov r0, #0xf
+ bl MOD04_021E26D0
+ b _021E45F8
+_021E45C4:
+ mov r0, r6
+ mov r1, #0xf
+ bl MOD04_021E4604
+ cmp r0, #0
+ bne _021E45F8
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E45E0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #8
+ bne _021E45F8
+ mov r0, #2
+ bl MOD04_021E4CF8
+_021E45F8:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E4600: .word 0x000082EA
+ arm_func_end MOD04_021E43E0
+
+ arm_func_start MOD04_021E4604
+MOD04_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 MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x10
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_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_end MOD04_021E4604
+
+ arm_func_start MOD04_021E4684
+MOD04_021E4684: ; 0x021E4684
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #9
+ beq _021E46BC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x10
+ beq _021E46BC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x11
+ bne _021E4700
+_021E46BC:
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_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 MOD04_021DF88C
+ cmp r0, #5
+ bne _021E477C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ad]
+ cmp r0, #5
+ blo _021E477C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E48FC
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E477C:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ad]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x2d0]
+ mov r1, #3
+ bl MOD04_021E4910
+ b _021E48FC
+_021E47A0:
+ ldr r0, _021E490C ; =0x00001770
+ cmp r5, #0
+ cmpeq r4, r0
+ bls _021E48FC
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ab]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ab]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ab]
+ cmp r0, #5
+ bls _021E4870
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E47F0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E4800
+_021E47F0:
+ bl MOD04_021E4B40
+ mov r0, #1
+ bl MOD04_021E4CF8
+ b _021E48FC
+_021E4800:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d4]
+ bl MOD04_021E4A00
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E4850
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ab]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1e0]
+ str r1, [r4, #0x1e4]
+ b _021E48FC
+_021E4850:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E48FC
+ mov r5, #2
+ mov r6, r4
+_021E488C:
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, r4
+ ldrb r0, [r0, #0x2d0]
+ mov r1, r5
+ bl MOD04_021E4910
+_021E48C4:
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E488C
+ b _021E48FC
+_021E48DC:
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb0]
+ cmp r5, r0, asr #31
+ cmpeq r4, r0
+ bls _021E48FC
+ mov r0, #4
+ bl MOD04_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_end MOD04_021E4684
+
+ arm_func_start MOD04_021E4910
+MOD04_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 MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blo _021E49D0
+_021E4974:
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r6, r0
+ bls _021E4974
+ b _021E49D0
+_021E49AC:
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb0]
+ strb r0, [sp]
+ bl MOD04_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 MOD04_021EAF20
+ bl MOD04_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_end MOD04_021E4910
+
+ arm_func_start MOD04_021E4A00
+MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E4A8C
+ add r4, sp, #8
+ add r5, sp, #0x88
+ mov r6, r7
+_021E4A34:
+ bl MOD04_021E26E4
+ add r0, r0, r7
+ ldrb r0, [r0, #0x2d0]
+ mov r0, r6,lsl r0
+ ands r0, sl, r0
+ beq _021E4A64
+ bl MOD04_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 MOD04_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 MOD04_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 MOD04_021E7884
+ bl MOD04_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 MOD04_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 MOD04_021E3F28
+ cmp r0, #0xff
+ beq _021E4B1C
+ bl MOD04_021DF9D4
+_021E4B1C:
+ add r6, r6, #1
+ cmp r6, sb
+ blt _021E4B04
+_021E4B28:
+ bl MOD04_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_end MOD04_021E4A00
+
+ arm_func_start MOD04_021E4B40
+MOD04_021E4B40: ; 0x021E4B40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ mov r1, #2
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E4B40
+
+ arm_func_start MOD04_021E4B78
+MOD04_021E4B78: ; 0x021E4B78
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD04_021E26E4
+ str r5, [r0, #0x20c]
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, r5
+ add r1, r1, #1
+ bl MOD04_021DF648
+ movs r4, r0
+ beq _021E4BD4
+ bl MOD04_021E26E4
+ mov r1, #2
+ strb r1, [r0, #0x1a8]
+ ldr r0, [r4]
+ bl MOD04_021FD488
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, pc}
+_021E4BD4:
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ mov r0, r5
+ add r1, r1, #1
+ bl MOD04_021E89EC
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E4B78
+
+ arm_func_start MOD04_021E4BF4
+MOD04_021E4BF4: ; 0x021E4BF4
+ stmdb sp!, {r4, lr}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ beq _021E4CA4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E4C64
+ mov r0, #3
+ bl MOD04_021E26D0
+ mov r0, #0
+ bl MOD04_021E7E5C
+ mov r4, r0
+ bl MOD04_021E38E8
+ cmp r0, #0
+ beq _021E4CAC
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+_021E4C64:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E4CAC
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ mov r1, #0
+ bl MOD04_021E6038
+ mov r4, r0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E4CAC
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+_021E4CA4:
+ mov r0, #1
+ bl MOD04_021E4CF8
+_021E4CAC:
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E4BF4
+
+ arm_func_start MOD04_021E4CB4
+MOD04_021E4CB4: ; 0x021E4CB4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E4B40
+ mov r0, #1
+ bl MOD04_021E4CF8
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E4CB4
+
+ arm_func_start MOD04_021E4CF8
+MOD04_021E4CF8: ; 0x021E4CF8
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ movs r4, r0
+ bne _021E4D14
+ bl MOD04_021E4ED4
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4D14:
+ bl MOD04_021E8174
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E4D38
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E4D94
+_021E4D38:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r6, #1
+ movne r6, #0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_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 MOD04_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 MOD04_021E7E5C
+ bl MOD04_021E38E8
+ add sp, sp, #8
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E4DC8:
+ bl MOD04_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 MOD04_021E5D30
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E4CF8
+
+ arm_func_start MOD04_021E4E00
+MOD04_021E4E00: ; 0x021E4E00
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ mov r4, #0
+ str r4, [sp, #8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E4EC8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20]
+ cmp r0, #0
+ beq _021E4EC8
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r1, [r5, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ beq _021E4EC8
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E7884
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_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_end MOD04_021E4E00
+
+ arm_func_start MOD04_021E4ED4
+MOD04_021E4ED4: ; 0x021E4ED4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r1, _021E4F90 ; =UNK04_0220D3F0
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_021E397C
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E8034
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ movne r6, #1
+ bne _021E4F28
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ moveq r6, #1
+ movne r6, #0
+_021E4F28:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r7, #1
+ movne r7, #0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a9]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4F90: .word UNK04_0220D3F0
+ arm_func_end MOD04_021E4ED4
+
+ arm_func_start MOD04_021E4F94
+MOD04_021E4F94: ; 0x021E4F94
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #2
+ bne _021E4FC4
+ bl MOD04_021E4ED4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E4FC4:
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E5038
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E5010
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ b _021E502C
+_021E5010:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_021E502C:
+ bl MOD04_021E4ED4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E5038:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #5
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #7
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ beq _021E5098
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ bne _021E50D8
+_021E5098:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r0, #0
+ beq _021E50C4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_021E50C4:
+ bl MOD04_021E4E00
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_021E50D8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E5100
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E5100:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E512C
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+_021E512C:
+ bl MOD04_021E4ED4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E4F94
+
+ arm_func_start MOD04_021E5138
+MOD04_021E5138: ; 0x021E5138
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ beq _021E5168
+ bl MOD04_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 MOD04_021E4074
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ beq _021E51AC
+ bl MOD04_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_end MOD04_021E5138
+
+ arm_func_start MOD04_021E51C0
+MOD04_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 MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ ldrb r1, [r6, #0x1a4]
+ sub r0, r0, #1
+ cmp r1, r0
+ bge _021E52B0
+ mov r0, #0xd
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ add r0, r0, #1
+ add r0, r5, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ add r0, r0, #1
+ add r0, r5, r0
+ ldrb r0, [r0, #0x2d0]
+ str r0, [sp, #0x10]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a4]
+ add r0, r0, #1
+ add r0, r5, r0, lsl #2
+ ldr r0, [r0, #0x24]
+ str r0, [sp, #0x14]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, r4
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, r4
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E52F0
+ mov r0, r5
+ bl MOD04_021E26D0
+ b _021E5314
+_021E52F0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E530C
+ mov r0, #4
+ bl MOD04_021E26D0
+ b _021E5314
+_021E530C:
+ mov r0, #0xa
+ bl MOD04_021E26D0
+_021E5314:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E534C
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r6, #0xd]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ bne _021E53FC
+_021E534C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E5384
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r6, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [r7, #0x20c]
+ b _021E53A4
+_021E5384:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r6, #0xf4]
+_021E53A4:
+ mov r0, #0x10
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1d4]
+ mov r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E54EC
+ mov r6, #2
+_021E53D0:
+ bl MOD04_021E26E4
+ add r0, r0, r7
+ ldrb r0, [r0, #0x2d0]
+ mov r1, r6
+ bl MOD04_021E4910
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r7, r0
+ ble _021E53D0
+ b _021E54EC
+_021E53FC:
+ mov r0, #0
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r6, r0
+ ldrb r0, [r0, #0x2d0]
+ str r0, [sp, #0x10]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E5460
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl OS_GetTick
+ str r0, [r6, #0xec]
+ str r1, [r6, #0xf0]
+ b _021E54EC
+_021E5460:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E54EC
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ bne _021E54EC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #2
+ blo _021E54EC
+ bl MOD04_021E26E4
+ mov r8, r0
+ mov r0, #0
+ bl MOD04_021E3EC4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_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 MOD04_021E4CB4
+ b _021E57E8
+_021E54EC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ movne r4, #1
+_021E54FC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x10
+ beq _021E57E8
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x3cd]
+ b _021E57E8
+_021E5594:
+ mov r0, #1
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E55D0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E5600
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5620
+_021E5600:
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r5, #0x20]
+_021E5620:
+ bl MOD04_021E3E9C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ bls _021E57E8
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_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 MOD04_021E26D0
+ bl MOD04_021E3E9C
+ bl MOD04_021E26E4
+ mov r1, r4
+ str r1, [r0, #0x20c]
+ mov r4, #1
+ b _021E57E8
+_021E56BC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ beq _021E56DC
+ ldr r1, _021E581C ; =UNK04_0220D3F0
+ mov r0, #2
+ mov r2, r4
+ bl MOD04_021E1E30
+_021E56DC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r7, #1
+ movne r7, #0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r5, r0
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E5750
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5758
+_021E5750:
+ bl MOD04_021E8034
+ b _021E57DC
+_021E5758:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ beq _021E5780
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203E80
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe4]
+_021E5780:
+ bl MOD04_02200D6C
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E57C8
+ bl MOD04_021E85D4
+ bl MOD04_021E397C
+ cmp r0, #0
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldr r0, _021E5820 ; =UNK04_022106DC
+ ldrb r1, [r0]
+ cmp r1, #1
+ moveq r1, #1
+ streqb r1, [r0, #1]
+ mov r0, #0xa
+ bl MOD04_021E26D0
+ b _021E57D0
+_021E57C8:
+ mov r0, #1
+ bl MOD04_021E26D0
+_021E57D0:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+_021E57DC:
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203C04
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_021E581C: .word UNK04_0220D3F0
+_021E5820: .word UNK04_022106DC
+ arm_func_end MOD04_021E51C0
+
+ arm_func_start MOD04_021E5824
+MOD04_021E5824: ; 0x021E5824
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0xc
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E58BC
+ mov r5, #0xa
+_021E5844:
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E7884
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E5844
+_021E58BC:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ bl MOD04_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_end MOD04_021E5824
+
+ arm_func_start MOD04_021E5908
+MOD04_021E5908: ; 0x021E5908
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E5950
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E5938
+ bl MOD04_021E4B40
+_021E5938:
+ ldr r1, _021E59D0 ; =0xFFFEC5D2
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E5950:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r5, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E5998
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E5998:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E59B0
+ bl MOD04_021E4CB4
+ b _021E59C4
+_021E59B0:
+ mov r0, #4
+ bl MOD04_021E26D0
+ mov r0, #0
+ bl MOD04_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_end MOD04_021E5908
+
+ arm_func_start MOD04_021E59D4
+MOD04_021E59D4: ; 0x021E59D4
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E5A0C
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+_021E5A3C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0x1f
+ bhs _021E5A6C
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ mov r1, #0
+ add r0, r0, #1
+ add r0, r6, r0, lsl #2
+ str r1, [r0, #0xf4]
+_021E5A6C:
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E5AA0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E5AA0:
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r6, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ cmp r4, #0
+ bne _021E5AE0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E5BE8
+ bl MOD04_021E4CB4
+ b _021E5BE8
+_021E5AE0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E5B1C
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #2
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ str r1, [r4, #0xf0]
+ b _021E5BE8
+_021E5B1C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5B48
+ mov r0, #4
+ bl MOD04_021E26D0
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ b _021E5BE8
+_021E5B48:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E5BE8
+ mov r0, #0xe
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1d8]
+ bl MOD04_021E26E4
+ add r1, r0, #0x100
+ mov r2, #0
+ mov r0, r5
+ strh r2, [r1, #0xb2]
+ bl MOD04_021E4B78
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E5BD0
+ mov r4, #0xd
+_021E5B9C:
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ mov r1, r4
+ bl MOD04_021E4604
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E5B9C
+_021E5BD0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ bne _021E5BE8
+ mov r0, #2
+ bl MOD04_021E4CF8
+_021E5BE8:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E59D4
+
+ arm_func_start MOD04_021E5BF0
+MOD04_021E5BF0: ; 0x021E5BF0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E7884
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ mov r0, r4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E5BF0
+
+ arm_func_start MOD04_021E5C44
+MOD04_021E5C44: ; 0x021E5C44
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1cc]
+ str r1, [r4, #0x1d0]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E5CC0
+ mov r0, #3
+ bl MOD04_021E26D0
+ mov r0, #0
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ cmp r0, #0
+ beq _021E5D20
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E5CC0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E5CF8
+ mov r0, #0
+ mov r1, r0
+ mov r2, r5
+ bl MOD04_021E5D30
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E5D20
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E5CF8:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E5D20
+ ldr r1, _021E5D2C ; =0xFFFEC5E6
+ mov r0, #6
+ bl MOD04_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_end MOD04_021E5C44
+
+ arm_func_start MOD04_021E5D30
+MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x1a5]
+ str r0, [sp, #0xc]
+ b _021E5D90
+_021E5D58:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x1a5]
+ add r1, r1, #1
+ strb r1, [r0, #0x1a5]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r6, #0x1a5]
+ ldr r0, [r0, #0x344]
+ cmp r1, r0
+ blt _021E5DFC
+ bl MOD04_021E26E4
+ strb r8, [r0, #0x1a5]
+_021E5DFC:
+ cmp sb, #0
+ beq _021E5E50
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1a5]
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ bne _021E5E50
+ bl MOD04_021E26E4
+ ldr r1, _021E6028 ; =0x00000BB8
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1cc]
+ str r1, [r4, #0x1d0]
+ bl MOD04_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 MOD04_021E0F00
+ mov fp, r0
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 DWC_GetGsProfileId
+ movs sl, r0
+ beq _021E5DB4
+ mvn r0, #0
+ cmp sl, r0
+ beq _021E5DB4
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov fp, r0
+ bl MOD04_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 DWCi_Acc_IsValidFriendData
+ cmp r0, #0
+ beq _021E5DB4
+ mov r6, r7
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E5F1C
+_021E5EF4:
+ bl MOD04_021E26E4
+ add r0, r0, r6, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp sl, r0
+ beq _021E5F1C
+ add r6, r6, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r6, r0
+ ble _021E5EF4
+_021E5F1C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r6, r0
+ ble _021E5DB4
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ mov r1, sl
+ add r2, sp, #0x18
+ bl MOD04_021F0664
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x28
+ bl MOD04_021F06E4
+ orrs r0, r6, r0
+ bne _021E5DB4
+ ldr r0, [sp, #0x2c]
+ cmp r0, #4
+ bne _021E5DB4
+ ldr r0, _021E602C ; =UNK04_0220D3F4
+ add r1, sp, #0x1c
+ add r2, sp, #0x30
+ mov r3, r5
+ bl MOD04_021DE9F4
+ mov r6, r0
+ ldr r0, _021E6030 ; =UNK04_0220D3F8
+ add r1, sp, #0x12
+ add r2, sp, #0x30
+ mov r3, r5
+ bl MOD04_021DE9F4
+ mov fp, r0
+ ldr r0, _021E6034 ; =UNK04_0220D3FC
+ add r1, sp, #0x10
+ add r2, sp, #0x30
+ mov r3, r5
+ bl MOD04_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 MOD04_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 MOD04_021E6038
+ add sp, sp, #0x23c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E6028: .word 0x00000BB8
+_021E602C: .word UNK04_0220D3F4
+_021E6030: .word UNK04_0220D3F8
+_021E6034: .word UNK04_0220D3FC
+ arm_func_end MOD04_021E5D30
+
+ arm_func_start MOD04_021E6038
+MOD04_021E6038: ; 0x021E6038
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x14
+ mov r5, r0
+ cmp r1, #0
+ bne _021E606C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ bne _021E60A0
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ cmp r0, #0
+ bne _021E60A0
+_021E606C:
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1c0]
+ str r1, [r4, #0x1c4]
+ bl MOD04_021E26E4
+ str r5, [r0, #0xf4]
+ add sp, sp, #0x14
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E60A0:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6124
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, #0
+ bl MOD04_02203BF4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ ldr r1, _021E61E4 ; =UNK04_0220D3AC
+ mov r0, r6
+ mov r2, #0
+ bl MOD04_0220394C
+ str r0, [r4, #0xf4]
+ bl MOD04_021E26E4
+ mov r4, r0
+ mov r0, r6
+ bl MOD04_02203908
+ str r0, [r4, #0x24]
+ bl MOD04_021E26E4
+ mov r4, r0
+ mov r0, r6
+ bl MOD04_022038E4
+ strh r0, [r4, #0xa4]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r4, #1
+ str r0, [r6, #0x204]
+ b _021E6160
+_021E6124:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E613C
+ bl MOD04_021E26E4
+ str r5, [r0, #0xf4]
+_021E613C:
+ bl MOD04_021E26E4
+ str r5, [r0, #0x204]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ mov r4, #3
+ str r0, [sp, #0x10]
+_021E6160:
+ bl MOD04_021E26E4
+ ldr r1, _021E61E8 ; =0x00001770
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl OS_GetTick
+ str r0, [r6, #0x1cc]
+ str r1, [r6, #0x1d0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ movne r7, #0xb
+ moveq r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E7884
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E61E4: .word UNK04_0220D3AC
+_021E61E8: .word 0x00001770
+ arm_func_end MOD04_021E6038
+
+ arm_func_start MOD04_021E61EC
+MOD04_021E61EC: ; 0x021E61EC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6210
+ mov r0, r4
+ bl MOD04_021E38E8
+ ldmia sp!, {r4, pc}
+_021E6210:
+ mov r0, r4
+ bl MOD04_021E397C
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E61EC
+
+ arm_func_start MOD04_021E621C
+MOD04_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 MOD04_021E26E4
+ sub r2, r4, #2
+ add r1, r0, #0x350
+ add r0, r5, #4
+ mov r2, r2, lsl #2
+ bl MIi_CpuCopy32
+_021E6250:
+ bl MOD04_021E26E4
+ sub r1, r4, #1
+ str r1, [r0, #0x348]
+ bl MOD04_021E26E4
+ str r6, [r0, #0x34c]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E621C
+
+ arm_func_start MOD04_021E6268
+MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E62A4
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ str r6, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r7, r0, lsl #2
+ str r6, [r0, #0xf4]
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r7, r0, lsl #2
+ str r5, [r0, #0x24]
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r7, r0, lsl #1
+ strh r4, [r0, #0xa4]
+ bl MOD04_021E26E4
+ str r5, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r4, [r0, #0xb4]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E40F4
+ ldrb r1, [r4, #0x14]
+ add r1, r1, #1
+ add r1, r5, r1
+ strb r0, [r1, #0x2d0]
+ str r6, [sp, #8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r0, #1
+ blt _021E6414
+ add r6, sp, #8
+ mov r5, #2
+ mov r4, #7
+_021E63B8:
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_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 MOD04_021E7884
+ cmp r0, #0
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r7, r7, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r7, r0
+ ble _021E63B8
+_021E6414:
+ mov r0, #1
+ bl MOD04_021E3E28
+ mov r0, #0
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ arm_func_end MOD04_021E6268
+
+ arm_func_start MOD04_021E6428
+MOD04_021E6428: ; 0x021E6428
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r8, r3
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E6490
+ cmp r0, #1
+ beq _021E6460
+ cmp r0, #2
+ beq _021E6670
+ b _021E6724
+_021E6460:
+ bl MOD04_021E26E4
+ ldr r0, [r0]
+ mov r1, r7
+ bl MOD04_021F05F4
+ cmp r0, #0
+ moveq r4, #0xff
+ beq _021E6724
+ mov r0, r7
+ bl MOD04_021E4074
+ cmp r0, #0
+ moveq r4, #3
+ beq _021E6724
+_021E6490:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r8, r0
+ bne _021E64F8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #0
+ bne _021E64F8
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #0x14]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ beq _021E64F8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E655C
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r4, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ bne _021E655C
+_021E64F8:
+ mov r4, #3
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6724
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r0, [r0, #0xb4]
+ cmp r0, #0
+ bne _021E6724
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E6724
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r1, [r5, #0x20]
+ ldr r0, [r0, #0x200]
+ cmp r1, r0
+ bne _021E6724
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ b _021E6724
+_021E655C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #3
+ beq _021E657C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E65AC
+_021E657C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ bne _021E659C
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r0, #0
+ beq _021E6668
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r7, r0
+ bne _021E6610
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _021E6600
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ cmp r0, r7
+ bge _021E6608
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ cmp r0, r7
+ bge _021E6660
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ bne _021E6660
+_021E663C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E5BF0
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0]
+ mov r1, r7
+ bl MOD04_021F05F4
+ cmp r0, #0
+ moveq r4, #0xff
+ beq _021E6724
+ cmp r8, #3
+ bne _021E66B0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #0x14]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ bne _021E66B8
+_021E66B0:
+ mov r4, #3
+ b _021E6724
+_021E66B8:
+ ldr r0, _021E672C ; =UNK04_022106DC
+ ldrb r1, [r0]
+ cmp r1, #1
+ bne _021E66D8
+ ldrb r0, [r0, #1]
+ cmp r0, #1
+ moveq r4, #0x13
+ beq _021E6724
+_021E66D8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xa
+ bne _021E6718
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ bne _021E6708
+ bl MOD04_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 UNK04_022106DC
+ arm_func_end MOD04_021E6428
+
+ arm_func_start MOD04_021E6730
+MOD04_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 MOD04_021E26E4
+ cmp r0, #0
+ beq _021E6770
+ bl MOD04_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 MOD04_021DF88C
+ cmp r0, #5
+ bne _021E67AC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E67AC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E67AC
+ bl MOD04_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 MOD04_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 MOD04_021E6428
+ mov r5, r0
+ cmp r5, #2
+ bne _021E6994
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1dc]
+ mov r0, r8
+ mov r1, r7
+ mov r2, sl
+ bl MOD04_021E6268
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x118
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E6918
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x46c]
+ cmp r0, #0
+ beq _021E6918
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, r8
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x470]
+ ldr r2, [r6, #0x46c]
+ mov r0, r4
+ blx r2
+_021E6918:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ mov r4, #1
+ str r0, [sp, #0x14]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r0, #1
+ blt _021E6960
+ add r6, sp, #0x14
+_021E693C:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [r6, r4, lsl #2]
+ add r4, r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ cmp r4, r0
+ ble _021E693C
+_021E6960:
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x1c]
+ add r0, sp, #0x14
+ str r1, [r0, r4, lsl #2]
+ bl MOD04_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 MOD04_021E26D0
+ b _021E69E0
+_021E6994:
+ cmp r5, #3
+ bne _021E69E0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021E69E0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r6, #0x14]
+ ldrb r0, [r0, #0x16]
+ cmp r1, r0
+ bne _021E69E0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #4]
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #8]
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #4]
+ str r1, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ ldr r1, [r6]
+ add r0, r0, #0x100
+ add r1, r6, r1, lsl #2
+ ldr r1, [r1, #8]
+ strh r1, [r0, #0xb4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E6B4C
+ ldr r1, [r6]
+ add r0, r6, #4
+ bl MOD04_021E5138
+ cmp r0, #0
+ beq _021E6B08
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E6B4C
+ mov r0, r8
+ mov r1, r6
+ bl MOD04_021E621C
+ b _021E6B4C
+_021E6B08:
+ mov r0, r8
+ bl MOD04_021E5BF0
+ bl MOD04_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 MOD04_021E5D30
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6BD0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E6B90
+ mov r0, r8
+ mov r1, r6
+ bl MOD04_021E621C
+ bl MOD04_021E5824
+ bl MOD04_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 MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ mov r1, #0
+ bl MOD04_02203BF4
+ mov r2, r0
+ mov r0, #0
+ mov r1, r0
+ bl MOD04_021E7B04
+ bl MOD04_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 MOD04_021E26D0
+ mov r0, r8
+ bl MOD04_021E7E5C
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E7608
+ bl MOD04_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 MOD04_021E8E08
+ add sp, sp, #0x118
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6C44:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E5C44
+ add sp, sp, #0x118
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6C58:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #4
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1cc]
+ str r1, [r4, #0x1d0]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ beq _021E6CAC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a7]
+ cmp r0, #0x10
+ blo _021E6CBC
+_021E6CAC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E6D00
+_021E6CBC:
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1c0]
+ str r1, [r4, #0x1c4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E7608
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1a7]
+ add r1, r1, #1
+ strb r1, [r0, #0x1a7]
+ b _021E7608
+_021E6D00:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E6D54
+ mov r0, #3
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0xec]
+ str r1, [r4, #0xf0]
+ b _021E7608
+_021E6D54:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E7608
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E5D30
+ b _021E7608
+_021E6D78:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x17]
+ cmp r0, #0
+ beq _021E7608
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E6DD8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ bne _021E6DD8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf8]
+ cmp r8, r0
+ bne _021E6DD8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+_021E6DD8:
+ mov r0, r8
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E6E20
+ mov r0, #6
+ bl MOD04_021E26D0
+ b _021E6E50
+_021E6E20:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ beq _021E6E40
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ bne _021E7608
+_021E6E40:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20]
+ cmp r8, r0
+ bne _021E7608
+_021E6E50:
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x194]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ mov r4, r0
+ bl MOD04_021E26E4
+ add r3, r0, #0x194
+ mov r1, r4
+ mov r0, #0
+ add r2, sp, #0xc
+ bl MOD04_021E2784
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ b _021E7608
+_021E6F04:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E7608
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E6F98
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ bne _021E6F98
+ ldr r0, [sp, #8]
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x118
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E6F98:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ ldr r1, [sp, #8]
+ add r0, r0, #1
+ add r0, r5, r0, lsl #2
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r0, #1
+ add r0, r5, r0
+ strb r4, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x46c]
+ cmp r0, #0
+ beq _021E7608
+ bl MOD04_021E26E4
+ mov r5, r0
+ ldr r0, [sp, #8]
+ bl MOD04_021E1F18
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x470]
+ ldr r2, [r5, #0x46c]
+ mov r0, r4
+ blx r2
+ b _021E7608
+_021E701C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E7608
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r5, r0
+ strb r4, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r2, [r0, #0x200]
+ add r1, r4, r5, lsl #2
+ mov r0, #3
+ str r2, [r1, #0xf4]
+ bl MOD04_021E51C0
+ b _021E7608
+_021E7084:
+ ldr r0, [r6, #8]
+ ldr r4, [r6, #4]
+ and r5, r0, #0xff
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r1, [sp, #8]
+ ldr r0, [r0, #0xf4]
+ cmp r1, r0
+ bne _021E7104
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ sub r0, r0, #1
+ cmp r4, r0
+ bne _021E7104
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_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 MOD04_021E26E4
+ ldr r1, [sp, #8]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ add r0, r4, r0
+ strb r5, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0xc]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0x10]
+ add r0, r0, r4, lsl #1
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0xc]
+ str r1, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ add r1, r0, #0x100
+ ldr r2, [r6, #0x10]
+ mov r0, #5
+ strh r2, [r1, #0xb4]
+ bl MOD04_021E26D0
+ ldr r0, [sp, #8]
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ cmp r0, #0
+ addne sp, sp, #0x118
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ b _021E7608
+_021E719C:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xd
+ bne _021E7608
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x1a4]
+ add r1, r1, #1
+ strb r1, [r0, #0x1a4]
+ mov r0, #0
+ bl MOD04_021E51C0
+ b _021E7608
+_021E71F0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ beq _021E7210
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x12
+ bne _021E7608
+_021E7210:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E7234
+ ldr r1, [r6]
+ add r0, r6, #4
+ bl MOD04_021E5138
+ cmp r0, #0
+ beq _021E7250
+_021E7234:
+ bl MOD04_021E26E4
+ ldr r1, [r6, #4]
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ b _021E725C
+_021E7250:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+_021E725C:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E7280
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ b _021E7608
+_021E7280:
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ cmp r8, r0
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E72C8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E72E4
+_021E72C8:
+ mov r0, r8
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E7608
+ bl MOD04_021E26E4
+ str r8, [r0, #0x20c]
+ bl MOD04_021E4B40
+ mov r0, #0
+ bl MOD04_021E4CF8
+ b _021E7608
+_021E730C:
+ ldr r2, [r6]
+ mov r0, r8
+ mov r1, sb
+ bl MOD04_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 MOD04_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 MOD04_021E3F28
+ cmp r0, #0xff
+ beq _021E7370
+ bl MOD04_021DF9D4
+_021E7370:
+ add r7, r7, #1
+ cmp r7, r5
+ blt _021E7358
+ b _021E7608
+_021E7380:
+ ldr r0, _021E7614 ; =UNK04_022106D4
+ 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 MOD04_021E7884
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x13
+ bne _021E7608
+ mov r0, r8
+ mov r1, #0
+ bl MOD04_021E3F28
+ cmp r0, #0xff
+ beq _021E7608
+ ldr r1, _021E7614 ; =UNK04_022106D4
+ 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 MOD04_021E8E08
+ add sp, sp, #0x118
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E7498:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E7608
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a6]
+ cmp r0, #0
+ bne _021E7608
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E7608
+_021E74CC:
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ beq _021E750C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ bne _021E7524
+_021E750C:
+ bl MOD04_021E4E00
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0x118
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_021E7524:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E754C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E754C:
+ bl MOD04_021E4CB4
+ b _021E7608
+_021E7554:
+ bl MOD04_021E26E4
+ mov r4, r0
+ mov r0, r8
+ mov r1, #0
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r4, r0
+ ble _021E74CC
+ b _021E7608
+_021E7594:
+ mov r4, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E7608
+_021E75A8:
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_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 MOD04_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 UNK04_022106D4
+_021E7618: .word 0x000082EA
+ arm_func_end MOD04_021E6730
+
+ arm_func_start MOD04_021E761C
+MOD04_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_end MOD04_021E761C
+
+ arm_func_start MOD04_021E76C8
+MOD04_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 ; =UNK04_0220D410
+ ldr r2, _021E7764 ; =UNK04_0220D400
+ ldr r3, _021E7768 ; =UNK04_0220D408
+ 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 MOD04_021F02B8
+ add sp, sp, #0x208
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E7760: .word UNK04_0220D410
+_021E7764: .word UNK04_0220D400
+_021E7768: .word UNK04_0220D408
+ arm_func_end MOD04_021E76C8
+
+ arm_func_start MOD04_021E776C
+MOD04_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 ; =UNK04_0220D398
+ 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 MOD04_021E26E4
+ ldrh r0, [r0, #0x1a]
+ strh r0, [sp, #0xe]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1c]
+ str r0, [sp, #0x10]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ mov r6, #0
+ str r0, [sp, #0x14]
+ mov r4, r6
+_021E781C:
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r8
+ mov r1, r4
+ mov r2, r4
+ bl MOD04_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 MOD04_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 UNK04_0220D398
+ arm_func_end MOD04_021E776C
+
+ arm_func_start MOD04_021E7884
+MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E78E0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ beq _021E78D8
+ bl MOD04_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 MOD04_021E776C
+ mov r4, r0
+ b _021E79A0
+_021E7900:
+ cmp sl, #0
+ beq _021E7978
+ cmp sb, #0
+ beq _021E7978
+ ldr r3, [sl]
+ ldr r2, _021E7A3C ; =UNK04_0220D394
+ 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 ; =UNK04_0220D414
+ 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 MOD04_021E26E4
+ ldr r0, [r0]
+ ldr r2, [sp, #4]
+ add r3, sp, #0x20
+ mov r1, fp
+ bl MOD04_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 MOD04_021E26E4
+ strb fp, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ add r1, r0, #0x300
+ ldr r0, [sp, #0xc]
+ strh r0, [r1, #0xce]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #8]
+ str r1, [r0, #0x3d0]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #4]
+ str r1, [r0, #0x454]
+ bl MOD04_021E26E4
+ str sb, [r0, #0x458]
+ bl MOD04_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 MOD04_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 UNK04_0220D394
+_021E7A40: .word UNK04_0220D414
+ arm_func_end MOD04_021E7884
+
+ arm_func_start MOD04_021E7A44
+MOD04_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 MOD04_021E26E4
+ mov r4, r0
+ mov r1, #0
+ ldr r0, [r7, #4]
+ mov r2, r1
+ bl MOD04_021FFEB0
+ mov r1, r0
+ ldrh r2, [r7, #2]
+ ldr r0, [r4, #0xe4]
+ ldr r3, [r7, #8]
+ bl MOD04_02203C7C
+ bl MOD04_021E38E8
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, #2
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021E7A9C:
+ ldr r5, _021E7AFC ; =MOD04_021E2784
+ ldr r4, _021E7B00 ; =MOD04_021E2B60
+ mov r6, #0
+_021E7AA8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ str r5, [sp]
+ str r7, [sp, #4]
+ ldrb r2, [r7]
+ ldr r1, [r7, #8]
+ mov r3, r4
+ bl MOD04_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 MOD04_021E2784
+_021E7B00: .word MOD04_021E2B60
+ arm_func_end MOD04_021E7A44
+
+ arm_func_start MOD04_021E7B04
+MOD04_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 MOD04_021E26E4
+ cmp r4, #0
+ ldrb r6, [r0, #0x14]
+ mov r4, #0
+ bne _021E7D48
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_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 MOD04_022038C4
+ cmp r0, #0
+ beq _021E7BC0
+ mov r0, r7
+ bl MOD04_02203908
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203BCC
+ cmp r5, r0
+ movne r5, #1
+ bne _021E7C48
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_022038BC
+ add r1, r5, r6, lsl #2
+ str r0, [r1, #0x210]
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_02203898
+ add r1, r5, r6, lsl #1
+ add r1, r1, #0x200
+ strh r0, [r1, #0x90]
+ mov r5, r4
+ b _021E7C48
+_021E7BC0:
+ bl SOC_GetHostID
+ 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 MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_02203908
+ add r1, r5, r6, lsl #2
+ str r0, [r1, #0x210]
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, r7
+ bl MOD04_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 MOD04_021E26E4
+ mov r6, r0
+ mov r0, #0x10000
+ bl MOD04_021DE8C8
+ add r1, r6, #0x100
+ strh r0, [r1, #0x7e]
+ bl MOD04_021E26E4
+ str r8, [r0, #0x19c]
+ b _021E7D00
+_021E7C74:
+ bl SOC_GetHostID
+ str r0, [sp, #8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD454
+ str r0, [sp, #0xc]
+ bl MOD04_021E26E4
+ mov sb, r0
+ mov r0, r7
+ bl MOD04_02203908
+ mov r8, r0
+ mov r0, r7
+ bl MOD04_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 MOD04_021E7884
+ mov r6, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E7D00:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x194]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x195]
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, r7
+ bl MOD04_022038E4
+ add r1, r6, #0x100
+ strh r0, [r1, #0x96]
+ bl MOD04_021E26E4
+ mov r6, r0
+ mov r0, r7
+ bl MOD04_02203908
+ str r0, [r6, #0x198]
+ b _021E7D88
+_021E7D48:
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x194]
+ bl MOD04_021E26E4
+ mov r1, r4
+ strb r1, [r0, #0x195]
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ mov r1, r4
+ strh r1, [r0, #0x96]
+ bl MOD04_021E26E4
+ mov r1, r4
+ str r1, [r0, #0x198]
+ bl MOD04_021E26E4
+ str r8, [r0, #0x19c]
+ mov r5, #1
+_021E7D88:
+ cmp r5, #0
+ beq _021E7DA4
+ bl MOD04_021E26E4
+ add r0, r0, #0x194
+ bl MOD04_021E7A44
+ mov r4, r0
+ b _021E7DE0
+_021E7DA4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ mov r5, r0
+ bl MOD04_021E26E4
+ add r3, r0, #0x194
+ mov r0, #0
+ mov r1, r5
+ mov r2, r0
+ bl MOD04_021E2784
+ bl MOD04_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_end MOD04_021E7B04
+
+ arm_func_start MOD04_021E7DF4
+MOD04_021E7DF4: ; 0x021E7DF4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ mov lr, #3
+ ldr ip, _021E7E48 ; =UNK04_0220D3AC
+ str lr, [sp]
+ str ip, [sp, #4]
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r2, _021E7E4C ; =UNK04_0220D3CC
+ ldr r1, _021E7E50 ; =UNK04_0220D3D8
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ ldr r2, _021E7E54 ; =UNK04_0220D418
+ ldr r3, _021E7E58 ; =UNK04_0220D3E4
+ mov r1, #0x100
+ str ip, [sp, #0x20]
+ bl OS_SNPrintf
+ add sp, sp, #0x24
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E7E48: .word UNK04_0220D3AC
+_021E7E4C: .word UNK04_0220D3CC
+_021E7E50: .word UNK04_0220D3D8
+_021E7E54: .word UNK04_0220D418
+_021E7E58: .word UNK04_0220D3E4
+ arm_func_end MOD04_021E7DF4
+
+ arm_func_start MOD04_021E7E5C
+MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E7EC4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E7EF4
+_021E7EC4:
+ add r1, sp, #0x100
+ ldr r2, _021E8020 ; =UNK04_02210704
+ 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 MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ bne _021E7F84
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldr r1, [r6, #0x200]
+ ldrb r2, [r5, #0x16]
+ ldrb r3, [r0, #0x15]
+ add r0, sp, #0xc
+ bl MOD04_021E7DF4
+ ldr r0, _021E8024 ; =UNK04_022106E0
+ ldr r5, [r0]
+ cmp r5, #0
+ beq _021E7FAC
+ add r0, sp, #0xc
+ ldr r2, _021E8028 ; =UNK04_0220D470
+ mov r3, r0
+ mov r1, #0x100
+ str r5, [sp]
+ bl OS_SNPrintf
+ b _021E7FAC
+_021E7F84:
+ bl MOD04_021E26E4
+ ldr r5, [r0, #0x208]
+_021E7F8C:
+ ldr r2, _021E802C ; =UNK04_0220D47C
+ ldr r3, _021E8030 ; =UNK04_0220D3AC
+ add r0, sp, #0xc
+ mov r1, #0x100
+ str r5, [sp]
+ bl OS_SNPrintf
+ bl MOD04_021E26E4
+ str r5, [r0, #0x204]
+_021E7FAC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203C04
+ mov sl, #0
+ add sb, sp, #0xc
+ add r5, sp, #0x10c
+ mov r6, sl
+ mov r8, #6
+ mov r7, #1
+_021E7FD0:
+ bl MOD04_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 MOD04_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 UNK04_02210704
+_021E8024: .word UNK04_022106E0
+_021E8028: .word UNK04_0220D470
+_021E802C: .word UNK04_0220D47C
+_021E8030: .word UNK04_0220D3AC
+ arm_func_end MOD04_021E7E5C
+
+ arm_func_start MOD04_021E8034
+MOD04_021E8034: ; 0x021E8034
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ beq _021E8074
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203E80
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe4]
+_021E8074:
+ bl MOD04_02200D6C
+ mov r0, #0
+ bl MOD04_021E26D0
+ ldr r0, _021E80C0 ; =UNK04_022106E0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E80A8
+ mov r0, #4
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _021E80C0 ; =UNK04_022106E0
+ mov r1, #0
+ str r1, [r0]
+_021E80A8:
+ bl MOD04_021E4164
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x18]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E80C0: .word UNK04_022106E0
+ arm_func_end MOD04_021E8034
+
+ arm_func_start MOD04_021E80C4
+MOD04_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 MOD04_021E8174
+ bl MOD04_021E26E4
+ strb r7, [r0, #0x15]
+ bl MOD04_021E26E4
+ strb r6, [r0, #0x16]
+ bl MOD04_021E26E4
+ str r5, [r0, #0x464]
+ bl MOD04_021E26E4
+ str r4, [r0, #0x468]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17d]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x2d0]
+ mov r0, #0x32
+ ldr r1, _021E8160 ; =UNK04_0220D3AC
+ bl MOD04_0220277C
+ mov r0, #0x33
+ ldr r1, _021E8164 ; =UNK04_0220D3CC
+ bl MOD04_0220277C
+ mov r0, #0x34
+ ldr r1, _021E8168 ; =UNK04_0220D3D8
+ bl MOD04_0220277C
+ mov r0, #0x35
+ ldr r1, _021E816C ; =UNK04_0220D3E4
+ bl MOD04_0220277C
+ mov r0, #0x36
+ ldr r1, _021E8170 ; =UNK04_0220D3A0
+ bl MOD04_0220277C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E8160: .word UNK04_0220D3AC
+_021E8164: .word UNK04_0220D3CC
+_021E8168: .word UNK04_0220D3D8
+_021E816C: .word UNK04_0220D3E4
+_021E8170: .word UNK04_0220D3A0
+ arm_func_end MOD04_021E80C4
+
+ arm_func_start MOD04_021E8174
+MOD04_021E8174: ; 0x021E8174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17c]
+ bl MOD04_021E26E4
+ mov r5, r0
+ mov r0, #0x10000
+ bl MOD04_021DE8C8
+ add r1, r5, #0x100
+ strh r0, [r1, #0x7e]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x180]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x184]
+ str r1, [r0, #0x188]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a9]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1aa]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ab]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ac]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a7]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb2]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1b8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1e0]
+ str r1, [r0, #0x1e4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1f0]
+ str r1, [r0, #0x1f4]
+ bl MOD04_021E26E4
+ add r1, r0, #0x3cc
+ mov r0, #0
+ mov r2, #0x98
+ bl MIi_CpuClear32
+ cmp r4, #2
+ bne _021E82F0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x14]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E82CC
+ mov r0, #1
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E82CC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0xa
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E82F0:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xd]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xe]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a5]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1bc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c0]
+ str r1, [r0, #0x1c4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1cc]
+ str r1, [r0, #0x1d0]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1d4]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x204]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x208]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x2f0]
+ bl MOD04_021E26E4
+ add r1, r0, #0x24
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0xa4
+ mov r0, #0
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ bl MOD04_021E26E4
+ add r1, r0, #0xf4
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0x194
+ mov r0, #0
+ mov r2, #0xc
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0x210
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ bl MOD04_021E26E4
+ add r1, r0, #0x290
+ mov r0, #0
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ bl MOD04_021E26E4
+ add r0, r0, #0x2d0
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ bl MOD04_021E26E4
+ add r1, r0, #0x348
+ mov r0, #0
+ mov r2, #0x84
+ bl MIi_CpuClear32
+ cmp r4, #1
+ bne _021E84A8
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E8484
+ mov r0, #3
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E8484:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #4
+ bl MOD04_021E26D0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_021E84A8:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x15]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x16]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x18]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1a6]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ae]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ad]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1f8]
+ str r1, [r0, #0x1fc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x46c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x470]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021E8174
+
+ arm_func_start MOD04_021E852C
+MOD04_021E852C: ; 0x021E852C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E852C
+
+ arm_func_start MOD04_021E854C
+MOD04_021E854C: ; 0x021E854C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD04_021E26F4
+ ldr r0, _021E85C8 ; =UNK04_022106E0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E8584
+ mov r0, #4
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _021E85C8 ; =UNK04_022106E0
+ mov r1, #0
+ str r1, [r0]
+_021E8584:
+ bl MOD04_021E4164
+ ldr r0, _021E85CC ; =UNK04_022106D4
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E85B0
+ mov r0, #4
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _021E85CC ; =UNK04_022106D4
+ mov r1, #0
+ str r1, [r0]
+_021E85B0:
+ ldr r0, _021E85D0 ; =UNK04_022106DC
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E85C8: .word UNK04_022106E0
+_021E85CC: .word UNK04_022106D4
+_021E85D0: .word UNK04_022106DC
+ arm_func_end MOD04_021E854C
+
+ arm_func_start MOD04_021E85D4
+MOD04_021E85D4: ; 0x021E85D4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x2c
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addne sp, sp, #0x2c
+ movne r0, #0
+ ldmneia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x16]
+ ldr r2, _021E8694 ; =UNK04_0220D394
+ add r0, sp, #0
+ add r3, r1, #1
+ mov r1, #0xc
+ bl OS_SNPrintf
+ ldr r0, _021E8698 ; =UNK04_0220D484
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DEB54
+ bl MOD04_021E26E4
+ ldrb r2, [r0, #0xd]
+ add r0, sp, #0
+ mov r1, #0xc
+ add r3, r2, #1
+ ldr r2, _021E8694 ; =UNK04_0220D394
+ bl OS_SNPrintf
+ ldr r0, _021E869C ; =UNK04_0220D488
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DEB0C
+ ldr r2, _021E8694 ; =UNK04_0220D394
+ add r0, sp, #0
+ mov r1, #0xc
+ mov r3, #3
+ bl OS_SNPrintf
+ ldr r0, _021E86A0 ; =UNK04_0220D3F4
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DEB0C
+ mov r0, #6
+ add r1, sp, #0xc
+ mov r2, #0
+ bl MOD04_021E1E30
+ add sp, sp, #0x2c
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E8694: .word UNK04_0220D394
+_021E8698: .word UNK04_0220D484
+_021E869C: .word UNK04_0220D488
+_021E86A0: .word UNK04_0220D3F4
+ arm_func_end MOD04_021E85D4
+
+ arm_func_start MOD04_021E86A4
+MOD04_021E86A4: ; 0x021E86A4
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r7, r0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, _021E8748 ; =UNK04_022106E4
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ mov r6, #0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ cmp r0, #0
+ blt _021E8730
+ ldr r5, _021E8748 ; =UNK04_022106E4
+ mov r4, #1
+_021E86E8:
+ bl MOD04_021E26E4
+ mov r8, r0
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, r6
+ ldrb r0, [r0, #0x2d0]
+ add r6, r6, #1
+ strb r0, [r5], #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ cmp r6, r0
+ ble _021E86E8
+_021E8730:
+ ldr r0, _021E8748 ; =UNK04_022106E4
+ str r0, [r7]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ add r0, r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E8748: .word UNK04_022106E4
+ arm_func_end MOD04_021E86A4
+
+ arm_func_start MOD04_021E874C
+MOD04_021E874C: ; 0x021E874C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ add r0, r0, #0x2d0
+ str r0, [r4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E874C
+
+ arm_func_start MOD04_021E8780
+MOD04_021E8780: ; 0x021E8780
+ stmdb sp!, {r4, r5, r6, lr}
+ mvn r6, #0
+ mov r5, #0
+ mov r4, #1
+_021E8790:
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xe]
+ ldmia sp!, {r4, r5, r6, pc}
+_021E87CC:
+ bl MOD04_021E26E4
+ strb r6, [r0, #0xe]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E8780
+
+ arm_func_start MOD04_021E87D8
+MOD04_021E87D8: ; 0x021E87D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xe]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E87D8
+
+ arm_func_start MOD04_021E8804
+MOD04_021E8804: ; 0x021E8804
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E8804
+
+ arm_func_start MOD04_021E8830
+MOD04_021E8830: ; 0x021E8830
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov sb, r0
+ mov r8, r1
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E26E4
+ add r0, r0, sb, lsl #2
+ ldr fp, [r0, #0xf4]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #2
+ ldr r1, [r0, #0x24]
+ add r0, sl, r4, lsl #2
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r0, r0, r5, lsl #1
+ ldrh r1, [r0, #0xa4]
+ add r0, sl, r4, lsl #1
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r1, sl, r4, lsl #2
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xf4]
+ str r0, [r1, #0xf4]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_021E26E4
+ add r1, sl, r4, lsl #2
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x210]
+ str r0, [r1, #0x210]
+ bl MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov sl, r0
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ mov r1, #0
+ str r1, [r0, #0x24]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #1
+ mov r1, #0
+ strh r1, [r0, #0xa4]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ mov r1, #0
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ mov r1, #0
+ str r1, [r0, #0x210]
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #1
+ add r0, r0, #0x200
+ mov r1, #0
+ strh r1, [r0, #0x90]
+ bl MOD04_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_end MOD04_021E8830
+
+ arm_func_start MOD04_021E89EC
+MOD04_021E89EC: ; 0x021E89EC
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ bl MOD04_021E26E4
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r5, #0
+ mov r4, #0
+ ble _021E8A48
+_021E8A14:
+ bl MOD04_021E26E4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r6, r0
+ bne _021E8A3C
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_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_end MOD04_021E89EC
+
+ arm_func_start MOD04_021E8A50
+MOD04_021E8A50: ; 0x021E8A50
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #2
+ ldmeqia sp!, {r4, pc}
+ mov r0, r4
+ bl MOD04_021E59D4
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E8A50
+
+ arm_func_start MOD04_021E8A74
+MOD04_021E8A74: ; 0x021E8A74
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl MOD04_021DF88C
+ cmp r0, #5
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD04_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 MOD04_021E8E08
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, pc}
+_021E8AD4:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #1
+ beq _021E8B10
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #1
+ beq _021E8B10
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ cmp r0, #0
+ beq _021E8B44
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x19c]
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x19c]
+_021E8B44:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0
+ beq _021E8B84
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a8]
+ cmp r0, #0
+ bne _021E8BF4
+ bl MOD04_021E26E4
+ mov r1, #3
+ strb r1, [r0, #0x1a8]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ b _021E8BF4
+_021E8B84:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E8BA4
+ ldr r1, _021E8C04 ; =0xFFFEC5D2
+ mov r0, #6
+ bl MOD04_021E8E08
+ b _021E8BF4
+_021E8BA4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x208]
+ cmp r0, #0
+ beq _021E8BBC
+ bl MOD04_021E4BF4
+ b _021E8BF4
+_021E8BBC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E8BEC
+ mov r0, #0x12
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl OS_GetTick
+ str r0, [r4, #0x1f0]
+ str r1, [r4, #0x1f4]
+ b _021E8BF4
+_021E8BEC:
+ mov r0, #1
+ bl MOD04_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_end MOD04_021E8A74
+
+ arm_func_start MOD04_021E8C08
+MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #1
+ bne _021E8CCC
+ ldrb r0, [r4]
+ cmp r0, #1
+ bne _021E8C58
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x20c]
+_021E8C58:
+ ldrb r6, [r4, #1]
+ bl MOD04_021E26E4
+ ldrb r1, [r4, #2]
+ add r0, r0, r6
+ strb r1, [r0, #0x2d0]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r1, [r0, #0x200]
+ add r0, r4, r6, lsl #2
+ str r1, [r0, #0xf4]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E8CA4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _021E8CB8
+_021E8CA4:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x16]
+_021E8CB8:
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ad]
+ mov r0, #9
+ bl MOD04_021E26D0
+_021E8CCC:
+ mov r0, r5
+ mov r1, #3
+ bl MOD04_021E4910
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8CDC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x10
+ bne _021E8D94
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0xb0]
+ cmp r4, r0
+ ble _021E8D2C
+ bl MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r4, [r0, #0xb0]
+_021E8D2C:
+ mov r0, #0
+ bl MOD04_021E3EC4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1d4]
+ cmp r4, r0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r0, #1
+ blt _021E8D88
+ mov r4, #4
+_021E8D60:
+ bl MOD04_021E26E4
+ add r0, r0, r5
+ ldrb r0, [r0, #0x2d0]
+ mov r1, r4
+ bl MOD04_021E4910
+ add r5, r5, #1
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ cmp r5, r0
+ ble _021E8D60
+_021E8D88:
+ mov r0, #0x11
+ bl MOD04_021E26D0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8D94:
+ mov r0, r5
+ mov r1, #4
+ bl MOD04_021E4910
+ ldmia sp!, {r4, r5, r6, pc}
+_021E8DA4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #9
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #4
+ bl MOD04_021E51C0
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E8C08
+
+ arm_func_start MOD04_021E8DC0
+MOD04_021E8DC0: ; 0x021E8DC0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x14]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x16]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E8DC0
+
+ arm_func_start MOD04_021E8E08
+MOD04_021E8E08: ; 0x021E8E08
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E4B40
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021DD6B0
+ ldr r1, _021E8EC8 ; =UNK04_0220D3F0
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ moveq r7, #1
+ movne r7, #0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ cmp r0, #0
+ moveq r8, #1
+ movne r8, #0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x20c]
+ bl MOD04_021E1F18
+ mov r5, r0
+ bl MOD04_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 MOD04_021E8034
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021E8EC8: .word UNK04_0220D3F0
+ arm_func_end MOD04_021E8E08
+
+ arm_func_start MOD04_021E8ECC
+MOD04_021E8ECC: ; 0x021E8ECC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021E26E4
+ mov r1, #0xff
+ strb r1, [r0, #0x3cc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x3cd]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E8ECC
+
+ arm_func_start MOD04_021E8EF4
+MOD04_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 MOD04_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 MOD04_021E6730
+ add sp, sp, #0x21c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ arm_func_end MOD04_021E8EF4
+
+ arm_func_start MOD04_021E8F80
+MOD04_021E8F80: ; 0x021E8F80
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x1c
+ mov r6, r0
+ mov r4, r1
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #0x1c
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #7
+ beq _021E8FC4
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0xc]
+ add r1, r1, #1
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xc]
+ cmp r0, #5
+ bls _021E9030
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xc]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9030:
+ bl MOD04_021E26E4
+ ldr r3, [r0, #0x200]
+ ldr r2, _021E91F8 ; =UNK04_0220D394
+ add r0, sp, #0x10
+ mov r1, #0xc
+ bl OS_SNPrintf
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_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 MOD04_021FFEB0
+ mov r5, r0
+ bl MOD04_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 MOD04_021FD52C
+ cmp r0, #1
+ bne _021E90E0
+ bl MOD04_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 MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x14]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x1c
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9114:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ add sp, sp, #0x1c
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9140:
+ bl MOD04_021DF704
+ mov r5, r0
+ mvn r1, #0
+ cmp r5, r1
+ bne _021E9168
+ ldr r1, _021E9200 ; =0xFFFEABC4
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9168:
+ bl MOD04_021DF6BC
+ mov r4, r0
+ mov r0, r5
+ bl MOD04_021DF638
+ str r6, [r4]
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ ldrb r2, [r0, #0xd]
+ mov r0, r6
+ mov r1, r4
+ add r2, r5, r2
+ ldrb r2, [r2, #0x2d0]
+ strb r2, [r4, #1]
+ bl MOD04_021FD3F8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xc
+ bne _021E91E8
+ mov r0, #0
+ bl MOD04_021E51C0
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E91E8:
+ mov r0, #1
+ bl MOD04_021E51C0
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E91F8: .word UNK04_0220D394
+_021E91FC: .word 0x00001388
+_021E9200: .word 0xFFFEABC4
+ arm_func_end MOD04_021E8F80
+
+ arm_func_start MOD04_021E9204
+MOD04_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 MOD04_021E26E4
+ cmp r0, #0
+ beq _021E9244
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #7
+ bne _021E9244
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1a9]
+ cmp r0, #0
+ beq _021E925C
+_021E9244:
+ ldr r1, _021E944C ; =UNK04_0220D48C
+ mov r0, r8
+ mvn r2, #0
+ bl MOD04_021FD6B0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E925C:
+ bl MOD04_021DF704
+ mov r5, r0
+ mvn r2, #0
+ cmp r5, r2
+ bne _021E9290
+ ldr r1, _021E9450 ; =UNK04_0220D498
+ mov r0, r8
+ bl MOD04_021FD6B0
+ ldr r1, _021E9454 ; =0xFFFEABC4
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E9290:
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0x210]
+ cmp r7, r0
+ bne _021E92D4
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, sb, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ cmp r4, r0
+ bne _021E934C
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ str r7, [r0, #0x210]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 ; =UNK04_0220D4A4
+ mov r0, r8
+ mvn r2, #0
+ bl MOD04_021FD6B0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E9364:
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ bl MOD04_021E26E4
+ ldr r1, [r0, #8]
+ mov r0, r8
+ bl MOD04_021FD6BC
+ cmp r0, #0
+ bne _021E93A0
+ ldr r1, _021E945C ; =0xFFFEC5E6
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021E93A0:
+ bl MOD04_021E8ECC
+ bl MOD04_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 MOD04_021E26E4
+ add r0, r0, #0x100
+ strh r4, [r0, #0xb0]
+_021E93D4:
+ mov r0, r5
+ bl MOD04_021DF6BC
+ mov r4, r0
+ mov r0, r5
+ bl MOD04_021DF638
+ str r8, [r4]
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ add r1, r1, #1
+ strb r1, [r0, #0xd]
+ strb r5, [r4]
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_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 MOD04_021FD3F8
+ mov r0, #2
+ bl MOD04_021E51C0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021E944C: .word UNK04_0220D48C
+_021E9450: .word UNK04_0220D498
+_021E9454: .word 0xFFFEABC4
+_021E9458: .word UNK04_0220D4A4
+_021E945C: .word 0xFFFEC5E6
+_021E9460: .word 0x0000FFFF
+ arm_func_end MOD04_021E9204
+
+ arm_func_start MOD04_021E9464
+MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _021E9558
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r2, [sp, #0x18]
+ add r3, sp, #0
+ mov r1, r4
+ bl MOD04_022011A8
+ b _021E9558
+_021E9518:
+ ldr r1, _021E9564 ; =UNK04_0220F018
+ 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 MOD04_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 UNK04_0220F018
+ arm_func_end MOD04_021E9464
+
+ arm_func_start MOD04_021E9568
+MOD04_021E9568: ; 0x021E9568
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ mov r4, r0
+ bl MOD04_021E26E4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ cmp r4, #0
+ bne _021E95E4
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _021E95B8
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202534
+_021E95B8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD6D4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E95E4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1c8]
+ cmp r0, #0
+ beq _021E9730
+ bl OS_GetTick
+ mov r6, r0
+ mov r7, r1
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c8]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #3
+ bne _021E971C
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1aa]
+ add r1, r1, #1
+ strb r1, [r0, #0x1aa]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1aa]
+ cmp r0, #5
+ bls _021E96F8
+ ldr r1, _021E9EFC ; =0xFFFEC5D2
+ mov r0, #6
+ bl MOD04_021E8E08
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E96F8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9730
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E971C:
+ mov r0, #0
+ bl MOD04_021E5C44
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+_021E9730:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1bc]
+ cmp r0, #0
+ beq _021E9D04
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ ldr r0, _021E9F00 ; =0x00000BB8
+ mla r5, r1, r0, r0
+ bl OS_GetTick
+ mov r4, r0
+ mov r6, r1
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E97B8:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe8]
+ cmp r0, #0
+ ble _021E9D04
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #3
+ bne _021E97EC
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0xd]
+ ldr r0, _021E9F00 ; =0x00000BB8
+ mla r5, r1, r0, r0
+ b _021E9800
+_021E97EC:
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x204]
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe8]
+ b _021E9D04
+_021E9870:
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x18c]
+ str r1, [r0, #0x190]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9900:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cc]
+ cmp r0, #6
+ bne _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x3cd]
+ add r1, r1, #1
+ strb r1, [r0, #0x3cd]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cd]
+ cmp r0, #5
+ bls _021E9998
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9998:
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E99F8:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cc]
+ cmp r0, #2
+ bne _021E9D04
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _021E9A60
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E8ECC
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r0, #1
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9AEC:
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cc]
+ cmp r0, #8
+ bne _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r1, [r0, #0x3cd]
+ add r1, r1, #1
+ strb r1, [r0, #0x3cd]
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x3cd]
+ cmp r0, #0
+ beq _021E9BAC
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x15]
+ cmp r0, #2
+ bne _021E9BA4
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ add r0, r4, r0, lsl #2
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E59D4
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9BA4:
+ bl MOD04_021E4CB4
+ b _021E9D04
+_021E9BAC:
+ bl MOD04_021E26E4
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ beq _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9C0C:
+ bl MOD04_021DF88C
+ cmp r0, #5
+ bne _021E9D04
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E26E4
+ ldrb r0, [r0, #0x1ad]
+ cmp r0, #5
+ blo _021E9C8C
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ bl MOD04_021E5908
+ cmp r0, #0
+ bne _021E9D04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E9C8C:
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 MOD04_021E7884
+ bl MOD04_021E61EC
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldrb r1, [r0, #0x1ad]
+ add r1, r1, #1
+ strb r1, [r0, #0x1ad]
+ bl MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ beq _021E9D24
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #6
+ bne _021E9DA0
+_021E9D24:
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ add r3, r0, #0x194
+ mov r2, r1
+ mov r0, #1
+ bl MOD04_021E2784
+_021E9DA0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ beq _021E9DBC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ bl MOD04_02203C38
+_021E9DBC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_021E9F1C
+ bl MOD04_02200468
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021E9DEC
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD6D4
+_021E9DEC:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0x12
+ bne _021E9E54
+ bl OS_GetTick
+ mov r4, r0
+ mov r5, r1
+ bl MOD04_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 MOD04_021E4BF4
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021E9E54:
+ bl MOD04_021E4684
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E41C4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E39F0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0x1ae]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xa
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldrb r0, [r0, #0xd]
+ strb r0, [r4, #0x16]
+ bl MOD04_021E85D4
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1ae]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x47c]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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_end MOD04_021E9568
+
+ arm_func_start MOD04_021E9F1C
+MOD04_021E9F1C: ; 0x021E9F1C
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_02202534
+ ldr r0, [r4, #0xb4]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_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 MOD04_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 MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ ldmia sp!, {r4, pc}
+_021E9FB0:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x1a0]
+ cmp r0, #0xb
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021E9F1C
+
+ arm_func_start MOD04_021E9FD0
+MOD04_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 MOD04_021E80C4
+ bl MOD04_021E26E4
+ str r4, [r0, #0x46c]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x28]
+ str r1, [r0, #0x470]
+ bl MOD04_021E26E4
+ mov r1, #1
+ strb r1, [r0, #0x17]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r4, #0x20]
+ bl MOD04_021E26E4
+ str r6, [r0, #0xf4]
+ mov r0, #4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ bne _021EA0A4
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ mov r5, r0
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_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 ; =MOD04_021E32E4
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r0, [r5, #0x2f4]
+ ldr r1, [r4, #0x2f4]
+ ldr r2, [r2, #0x2f8]
+ bl MOD04_02203EA4
+ str r0, [r6, #0xe4]
+_021EA0A4:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xe4]
+ cmp r0, #0
+ bne _021EA0C8
+ mov r0, #5
+ bl MOD04_021E38E8
+ cmp r0, #0
+ addne sp, sp, #0x18
+ ldmneia sp!, {r4, r5, r6, pc}
+_021EA0C8:
+ ldr r1, _021EA134 ; =UNK04_0220D3F0
+ mov r0, #5
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_021E397C
+ cmp r0, #0
+ addne sp, sp, #0x18
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ bne _021EA110
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ bl MOD04_021EA1E0
+ cmp r0, #0
+ addne sp, sp, #0x18
+ ldmneia sp!, {r4, r5, r6, pc}
+_021EA110:
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0xf4]
+ mov r1, #0
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
+ cmp r0, #0
+ add sp, sp, #0x18
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021EA130: .word MOD04_021E32E4
+_021EA134: .word UNK04_0220D3F0
+ arm_func_end MOD04_021E9FD0
+
+ arm_func_start MOD04_021EA138
+MOD04_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 MOD04_021E80C4
+ bl MOD04_021E26E4
+ str r4, [r0, #0x46c]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #8]
+ str r1, [r0, #0x470]
+ bl MOD04_021E26E4
+ mov r4, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ str r0, [r4, #0xf4]
+ bl MOD04_021E26E4
+ mov r1, #1
+ str r1, [r0, #0x2f0]
+ bl MOD04_021E26E4
+ mov r2, #0
+ strb r2, [r0, #0xe]
+ ldr r1, _021EA1DC ; =UNK04_022106DC
+ mov r0, #0xa
+ strb r2, [r1, #1]
+ bl MOD04_021E26D0
+ bl MOD04_021E85D4
+ bl MOD04_021E397C
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x200]
+ bl MOD04_021EA1E0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021EA1DC: .word UNK04_022106DC
+ arm_func_end MOD04_021EA138
+
+ arm_func_start MOD04_021EA1E0
+MOD04_021EA1E0: ; 0x021EA1E0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x2c
+ mov r4, r0
+ bl MOD04_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 MOD04_021E26E4
+ str r4, [r0, #0x200]
+ mov sl, #0
+ ldr fp, _021EA344 ; =MOD04_021E2E18
+ mov r4, sl
+ mov r5, #1
+_021EA21C:
+ bl MOD04_021E26E4
+ mov sb, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD43C
+ mov r8, r0
+ bl MOD04_021E26E4
+ ldr r0, [r0, #4]
+ ldr r0, [r0]
+ bl MOD04_021FD454
+ mov r7, r0
+ bl MOD04_021E26E4
+ mov r6, r0
+ bl MOD04_021E26E4
+ ldr r3, [r0, #0x2f8]
+ mov r1, r8
+ str r3, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ ldr r3, _021EA348 ; =MOD04_021E2E14
+ str fp, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r3, _021EA34C ; =MOD04_021E2E10
+ mov r2, r7
+ str r3, [sp, #0x14]
+ ldr r3, _021EA350 ; =MOD04_021E2D68
+ add r0, sb, #0x10
+ str r3, [sp, #0x18]
+ ldr r3, _021EA354 ; =MOD04_021E2D60
+ str r3, [sp, #0x1c]
+ ldr r3, _021EA358 ; =MOD04_021E2D54
+ str r3, [sp, #0x20]
+ str r4, [sp, #0x24]
+ ldr r3, [r6, #0x2f4]
+ bl MOD04_022025B0
+ movs r6, r0
+ beq _021EA2E4
+ cmp r6, #3
+ bne _021EA2C4
+ cmp sl, #4
+ bne _021EA2D8
+_021EA2C4:
+ mov r0, r6
+ bl MOD04_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 MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strh r1, [r0, #0x1a]
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r1, _021EA35C ; =MOD04_021E2D2C
+ bl MOD04_02202568
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r1, _021EA360 ; =MOD04_021E2C78
+ bl MOD04_02202598
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ ldr r1, _021EA364 ; =MOD04_021E2B64
+ bl MOD04_02202580
+ bl MOD04_021E26E4
+ ldr r0, [r0, #0x10]
+ bl MOD04_02202308
+ mov r0, r6
+ add sp, sp, #0x2c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021EA344: .word MOD04_021E2E18
+_021EA348: .word MOD04_021E2E14
+_021EA34C: .word MOD04_021E2E10
+_021EA350: .word MOD04_021E2D68
+_021EA354: .word MOD04_021E2D60
+_021EA358: .word MOD04_021E2D54
+_021EA35C: .word MOD04_021E2D2C
+_021EA360: .word MOD04_021E2C78
+_021EA364: .word MOD04_021E2B64
+ arm_func_end MOD04_021EA1E0
+
+ arm_func_start MOD04_021EA368
+MOD04_021EA368: ; 0x021EA368
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021E26F4
+ bl MOD04_021E26E4
+ str r6, [r0]
+ bl MOD04_021E26E4
+ str r5, [r0, #4]
+ bl MOD04_021E26E4
+ str r4, [r0, #8]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x10]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strh r1, [r0, #0x1a]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0xe4]
+ mov r0, r1
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0xf]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x19]
+ bl MOD04_021E26E4
+ mov r1, #0
+ strb r1, [r0, #0x1af]
+ bl MOD04_021E26E4
+ mov r1, #0
+ add r0, r0, #0x100
+ strh r1, [r0, #0xb6]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x1dc]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x200]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x10]
+ str r1, [r0, #0x2f4]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x14]
+ str r1, [r0, #0x2f8]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x18]
+ str r1, [r0, #0x2fc]
+ bl MOD04_021E26E4
+ ldr r1, [sp, #0x1c]
+ str r1, [r0, #0x300]
+ bl MOD04_021E26E4
+ add r0, r0, #0x304
+ mov r1, #0
+ mov r2, #0x40
+ bl MI_CpuFill8
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x344]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x464]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x468]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x474]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x478]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x47c]
+ bl MOD04_021E26E4
+ mov r1, #0
+ str r1, [r0, #0x480]
+ bl MOD04_021E4164
+ ldr r1, _021EA4D0 ; =UNK04_022106DC
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ strh r0, [r1, #2]
+ bl MOD04_021E8174
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021EA4D0: .word UNK04_022106DC
+ arm_func_end MOD04_021EA368
+
+ arm_func_start MOD04_021EA4D4
+MOD04_021EA4D4: ; 0x021EA4D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ bl MOD04_021E26E4
+ cmp r0, #0
+ beq _021EA518
+ bl MOD04_021DF88C
+ cmp r0, #5
+ bne _021EA518
+ bl MOD04_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_end MOD04_021EA4D4
+
+ arm_func_start MOD04_021EA530
+MOD04_021EA530: ; 0x021EA530
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021EA4D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021E4F94
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021EA530
+
+ .section .rodata
+
+ .global UNK04_0220BAC4
+UNK04_0220BAC4: ; 0x0220BAC4
+ .word 0x00000003, 0x00000003, 0x00000002, 0x00000002
+ .word 0x00000001, 0x00000001
+
+ .section .data
+
+ .global UNK04_0220D394
+UNK04_0220D394: ; 0x0220D394
+ .asciz "%u"
+
+ .balign 4, 0
+ .global UNK04_0220D398
+UNK04_0220D398: ; 0x0220D398
+ .asciz "SBCM"
+
+ .balign 4, 0
+ .global UNK04_0220D3A0
+UNK04_0220D3A0: ; 0x0220D3A0
+ .asciz "dwc_eval"
+
+ .balign 4, 0
+ .global UNK04_0220D3AC
+UNK04_0220D3AC: ; 0x0220D3AC
+ .asciz "dwc_pid"
+
+ .balign 4, 0
+ .global UNK04_0220D3B4
+UNK04_0220D3B4: ; 0x0220D3B4
+ .asciz "numplayers"
+
+ .balign 4, 0
+ .global UNK04_0220D3C0
+UNK04_0220D3C0: ; 0x0220D3C0
+ .asciz "maxplayers"
+
+ .balign 4, 0
+ .global UNK04_0220D3CC
+UNK04_0220D3CC: ; 0x0220D3CC
+ .asciz "dwc_mtype"
+
+ .balign 4, 0
+ .global UNK04_0220D3D8
+UNK04_0220D3D8: ; 0x0220D3D8
+ .asciz "dwc_mresv"
+
+ .balign 4, 0
+ .global UNK04_0220D3E4
+UNK04_0220D3E4: ; 0x0220D3E4
+ .asciz "dwc_mver"
+
+ .balign 4, 0
+ .global UNK04_0220D3F0
+UNK04_0220D3F0: ; 0x0220D3F0
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D3F4
+UNK04_0220D3F4: ; 0x0220D3F4
+ .asciz "VER"
+
+ .balign 4, 0
+ .global UNK04_0220D3F8
+UNK04_0220D3F8: ; 0x0220D3F8
+ .asciz "FME"
+
+ .balign 4, 0
+ .global UNK04_0220D3FC
+UNK04_0220D3FC: ; 0x0220D3FC
+ .asciz "MDF"
+
+ .balign 4, 0
+ .global UNK04_0220D400
+UNK04_0220D400: ; 0x0220D400
+ .asciz "%s%dv%s"
+
+ .balign 4, 0
+ .global UNK04_0220D408
+UNK04_0220D408: ; 0x0220D408
+ .asciz "GPCM"
+
+ .balign 4, 0
+ .global UNK04_0220D410
+UNK04_0220D410: ; 0x0220D410
+ .asciz "MAT"
+
+ .balign 4, 0
+ .global UNK04_0220D414
+UNK04_0220D414: ; 0x0220D414
+ .asciz "/%u"
+
+ .balign 4, 0
+ .global UNK04_0220D418
+UNK04_0220D418: ; 0x0220D418
+ .asciz "%s = %d and %s != %u and maxplayers = %d and numplayers < %d and %s = %d and %s != %s"
+
+ .balign 4, 0
+ .global UNK04_0220D470
+UNK04_0220D470: ; 0x0220D470
+ .asciz "%s and (%s)"
+
+ .balign 4, 0
+ .global UNK04_0220D47C
+UNK04_0220D47C: ; 0x0220D47C
+ .asciz "%s = %u"
+
+ .balign 4, 0
+ .global UNK04_0220D484
+UNK04_0220D484: ; 0x0220D484
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D488
+UNK04_0220D488: ; 0x0220D488
+ .asciz "SCN"
+
+ .balign 4, 0
+ .global UNK04_0220D48C
+UNK04_0220D48C: ; 0x0220D48C
+ .asciz "Init state"
+
+ .balign 4, 0
+ .global UNK04_0220D498
+UNK04_0220D498: ; 0x0220D498
+ .asciz "Server full"
+
+ .balign 4, 0
+ .global UNK04_0220D4A4
+UNK04_0220D4A4: ; 0x0220D4A4
+ .asciz "Unknown connect attempt"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022106D4
+UNK04_022106D4: ; 0x022106D4
+ .space 0x4
+
+ .global UNK04_022106D8
+UNK04_022106D8: ; 0x022106D8
+ .space 0x4
+
+ .global UNK04_022106DC
+UNK04_022106DC: ; 0x022106DC
+ .space 0x4
+
+ .global UNK04_022106E0
+UNK04_022106E0: ; 0x022106E0
+ .space 0x4
+
+ .global UNK04_022106E4
+UNK04_022106E4: ; 0x022106E4
+ .space 0x20
+
+ .global UNK04_02210704
+UNK04_02210704: ; 0x02210704
+ .space 0x1
+
+ .global UNK04_02210705
+UNK04_02210705: ; 0x02210705
+ .space 0x7
+
+ .global UNK04_0221070C
+UNK04_0221070C: ; 0x0221070C
+ .space 0x730