summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf19
-rw-r--r--arm9/asm/scrcmd_asm.s26
-rw-r--r--arm9/global.inc153
-rw-r--r--arm9/modules/04/asm/arm_04.s10802
-rw-r--r--arm9/modules/04/asm/mod04_021D74E0.s (renamed from arm9/modules/04/asm/thumb_04.s)850
-rw-r--r--arm9/modules/04/asm/mod04_021D868C.s845
-rw-r--r--arm9/modules/04/asm/mod04_021D8D18.s1233
-rw-r--r--arm9/modules/04/asm/mod04_021D9C2C.s549
-rw-r--r--arm9/modules/04/asm/mod04_021DA260.s1689
-rw-r--r--arm9/modules/04/asm/mod04_021DB730.s1512
-rw-r--r--arm9/modules/04/asm/mod04_021DC8A4.s240
-rw-r--r--arm9/modules/04/asm/mod04_021DCCC8.s545
-rw-r--r--arm9/modules/04/asm/mod04_021DD36C.s248
-rw-r--r--arm9/modules/04/asm/mod04_021DD6B0.s145
-rw-r--r--arm9/modules/04/asm/mod04_021DD82C.s145
-rw-r--r--arm9/modules/04/asm/mod04_021DD984.s469
-rw-r--r--arm9/modules/04/asm/mod04_021DDF40.s291
-rw-r--r--arm9/modules/04/asm/mod04_021DE2D0.s482
-rw-r--r--arm9/modules/04/asm/mod04_021DE89C.s236
-rw-r--r--arm9/modules/04/asm/mod04_021DEB90.s2044
-rw-r--r--arm9/modules/04/asm/mod04_021E05FC.s830
-rw-r--r--arm9/modules/04/asm/mod04_0220C680_certs.s325
-rw-r--r--arm9/src/scrcmd.c22
-rw-r--r--include/scrcmd.h8
24 files changed, 12037 insertions, 11671 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index e8f534d0..31f43a15 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -656,7 +656,24 @@ Overlay MODULE_03
Overlay MODULE_04
{
After arm9
- Object thumb_04.o
+ Object mod04_021D74E0.o
+ Object mod04_021D868C.o
+ Object mod04_021D8D18.o
+ Object mod04_021D9C2C.o
+ Object mod04_021DA260.o
+ Object mod04_021DB730.o
+ Object mod04_021DC8A4.o
+ Object mod04_021DCCC8.o
+ Object mod04_021DD36C.o
+ Object mod04_0220C680_certs.o
+ Object mod04_021DD6B0.o
+ Object mod04_021DD82C.o
+ Object mod04_021DD984.o
+ Object mod04_021DDF40.o
+ Object mod04_021DE2D0.o
+ Object mod04_021DE89C.o
+ Object mod04_021DEB90.o
+ Object mod04_021E05FC.o
Object arm_04.o
}
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index 8dcbdf20..29106585 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -14,32 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- thumb_func_start FUN_0203B174
-FUN_0203B174: ; 0x0203B174
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- mov r0, #0x4
- mov r1, #0x10
- add r7, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _0203B18E
- bl GF_AssertFail
- pop {r3-r7, pc}
-_0203B18E:
- str r5, [r4, #0xc]
- str r6, [r4, #0x4]
- ldr r0, _0203B1A4 ; =FUN_0203B1A8
- add r1, r4, #0x0
- mov r2, #0x0
- str r7, [r4, #0x8]
- bl FUN_0200CA44
- str r0, [r4, #0x0]
- pop {r3-r7, pc}
- nop
-_0203B1A4: .word FUN_0203B1A8
-
thumb_func_start FUN_0203B1A8
FUN_0203B1A8: ; 0x0203B1A8
push {r3-r5, lr}
diff --git a/arm9/global.inc b/arm9/global.inc
index 2cf762ee..59162090 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6109,14 +6109,42 @@
.extern MOD04_021D8CF0
.extern MOD04_021D8D04
.extern MOD04_021D8F08
+.extern MOD04_021D97F8
+.extern MOD04_021D988C
+.extern MOD04_021D98DC
+.extern MOD04_021D991C
+.extern MOD04_021D9974
+.extern MOD04_021D9ACC
+.extern MOD04_021D9C1C
.extern MOD04_021D9C2C
.extern MOD04_021D9F78
+.extern MOD04_021DA238
.extern MOD04_021DA2F4
.extern MOD04_021DA334
.extern MOD04_021DA388
.extern MOD04_021DA3DC
+.extern MOD04_021DAACC
.extern MOD04_021DAB68
+.extern MOD04_021DAC98
+.extern MOD04_021DAE4C
+.extern MOD04_021DB440
+.extern MOD04_021DB4A4
+.extern MOD04_021DB570
+.extern MOD04_021DB608
+.extern MOD04_021DC794
+.extern MOD04_021DC7AC
+.extern MOD04_021DC7F0
+.extern MOD04_021DC870
+.extern MOD04_021DC970
.extern MOD04_021DCA84
+.extern MOD04_021DCF00
+.extern MOD04_021DCFFC
+.extern MOD04_021DD26C
+.extern MOD04_021DD2C4
+.extern MOD04_021DD36C
+.extern MOD04_021DD4FC
+.extern MOD04_021DD6B0
+.extern MOD04_021DD6D4
.extern MOD04_021DD6F0
.extern MOD04_021DD718
.extern MOD04_021DD808
@@ -6124,6 +6152,7 @@
.extern MOD04_021DD844
.extern MOD04_021DD860
.extern MOD04_021DD904
+.extern MOD04_021DD924
.extern MOD04_021DD944
.extern MOD04_021DD968
.extern MOD04_021DD984
@@ -6140,6 +6169,8 @@
.extern MOD04_021DDF40
.extern MOD04_021DDF4C
.extern MOD04_021DE05C
+.extern MOD04_021DE150
+.extern MOD04_021DE174
.extern MOD04_021DE1F8
.extern MOD04_021DE2D0
.extern MOD04_021DE308
@@ -6149,8 +6180,25 @@
.extern MOD04_021DE3D0
.extern MOD04_021DE404
.extern MOD04_021DE45C
+.extern MOD04_021DE89C
+.extern MOD04_021DE8C8
+.extern MOD04_021DE9F4
+.extern MOD04_021DEB0C
+.extern MOD04_021DEB54
+.extern MOD04_021DF5F0
+.extern MOD04_021DF638
+.extern MOD04_021DF648
+.extern MOD04_021DF6BC
+.extern MOD04_021DF704
+.extern MOD04_021DF748
+.extern MOD04_021DF760
+.extern MOD04_021DF7C4
+.extern MOD04_021DF88C
+.extern MOD04_021DF8A8
+.extern MOD04_021DF8F4
.extern MOD04_021DF95C
.extern MOD04_021DF978
+.extern MOD04_021DF9D4
.extern MOD04_021DFA40
.extern MOD04_021DFAF8
.extern MOD04_021DFB20
@@ -6160,10 +6208,57 @@
.extern MOD04_021DFF74
.extern MOD04_021E0200
.extern MOD04_021E0374
+.extern MOD04_021E05FC
+.extern MOD04_021E0E48
+.extern MOD04_021E0EAC
+.extern MOD04_021E0F00
+.extern MOD04_021E0F1C
+.extern MOD04_021E1034
+.extern MOD04_021E1074
+.extern MOD04_021E1D90
+.extern MOD04_021E1E30
+.extern MOD04_021E1ED4
+.extern MOD04_021E1F18
+.extern MOD04_021E1F84
+.extern MOD04_021E1FE4
+.extern MOD04_021E2068
+.extern MOD04_021E20C8
+.extern MOD04_021E2114
+.extern MOD04_021E2174
+.extern MOD04_021E2228
+.extern MOD04_021E234C
.extern MOD04_021E242C
.extern MOD04_021E2454
.extern MOD04_021E2578
+.extern MOD04_021E852C
+.extern MOD04_021E854C
+.extern MOD04_021E85D4
+.extern MOD04_021E86A4
+.extern MOD04_021E874C
+.extern MOD04_021E8780
+.extern MOD04_021E87D8
+.extern MOD04_021E8804
+.extern MOD04_021E8830
+.extern MOD04_021E8A50
+.extern MOD04_021E8A74
+.extern MOD04_021E8DC0
+.extern MOD04_021E8E08
+.extern MOD04_021E8EF4
+.extern MOD04_021E8F80
+.extern MOD04_021E9204
+.extern MOD04_021E9464
+.extern MOD04_021E9568
+.extern MOD04_021E9FD0
+.extern MOD04_021EA138
+.extern MOD04_021EA1E0
+.extern MOD04_021EA368
.extern MOD04_021EA530
+.extern MOD04_021EA9C4
+.extern MOD04_021EA9D8
+.extern MOD04_021EAA64
+.extern MOD04_021EAC1C
+.extern MOD04_021EAC5C
+.extern MOD04_021EACB4
.extern MOD04_021EACF8
.extern MOD04_021EADD8
.extern MOD04_021EADF8
@@ -6178,9 +6273,14 @@
.extern MOD04_021EB59C
.extern MOD04_021EB9A4
.extern MOD04_021EB9D8
+.extern MOD04_021EBA28
+.extern MOD04_021EBAB8
.extern MOD04_021EBAE8
.extern MOD04_021EBB80
.extern MOD04_021EBC60
+.extern MOD04_021EE5F4
+.extern MOD04_021EE6A0
+.extern MOD04_021EE898
.extern MOD04_021EEFA8
.extern MOD04_021EEFFC
.extern MOD04_021EF06C
@@ -6202,6 +6302,39 @@
.extern MOD04_021F024C
.extern MOD04_021F0250
.extern MOD04_021F025C
+.extern MOD04_021F05F4
+.extern MOD04_021F0664
+.extern MOD04_021F06E4
+.extern MOD04_021F0B30
+.extern MOD04_021F0B9C
+.extern MOD04_021F0D54
+.extern MOD04_021F0D8C
+.extern MOD04_021F0EB0
+.extern MOD04_021F0F18
+.extern MOD04_021F0F64
+.extern MOD04_021F0F94
+.extern MOD04_021FBE7C
+.extern MOD04_021FD3C4
+.extern MOD04_021FD434
+.extern MOD04_021FD43C
+.extern MOD04_021FD45C
+.extern MOD04_021FD488
+.extern MOD04_021FD6C8
+.extern MOD04_021FD704
+.extern MOD04_021FD71C
+.extern MOD04_021FFEB0
+.extern MOD04_02200D6C
+.extern MOD04_02202280
+.extern MOD04_02202308
+.extern MOD04_02203E80
+.extern MOD04_022069DC
+.extern MOD04_02206E6C
+.extern MOD04_02206EFC
+.extern MOD04_02207158
+.extern MOD04_02207330
+.extern MOD04_0220733C
+.extern MOD04_022074EC
+.extern MOD04_022077A8
.extern MOD05_021D74E0
.extern MOD05_021D7A20
.extern MOD05_021D7A28
@@ -8251,6 +8384,26 @@
.extern TP_SetCalibrateParam
.extern TP_WaitBusy
.extern TP_WaitRawResult
+.extern UNK04_0220BEB4
+.extern UNK04_0220C684
+.extern UNK04_0220C7D0
+.extern UNK04_0220C920
+.extern UNK04_0220CA08
+.extern UNK04_0220CACC
+.extern UNK04_0220CBB4
+.extern UNK04_0220CCD4
+.extern UNK04_0220CDEC
+.extern UNK04_0220CF18
+.extern UNK04_0220D0CC
+.extern UNK04_0220D1A8
+.extern UNK04_02210480
+.extern UNK04_02210484
+.extern UNK04_02210488
+.extern UNK04_0221048C
+.extern UNK04_022104F8
+.extern UNK04_022104FC
+.extern UNK04_02210F94
+.extern UNK04_02211094
.extern UNK05_021F64C8
.extern UNK05_021F8B84
.extern UNK05_021F8B88
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 259f9f52..696e0b3b 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,9668 +3,6 @@
.section .text
.balign 4, 0
- arm_func_start MOD04_021D8D18
-MOD04_021D8D18: ; 0x021D8D18
- stmdb sp!, {r4, lr}
- ldr r2, _021D8D58 ; =UNK04_02210468
- ldr r1, _021D8D5C ; =0x000013D8
- ldr r2, [r2]
- mov r4, r0
- add r0, r2, r1
- bl OS_LockMutex
- ldr r2, _021D8D58 ; =UNK04_02210468
- ldr r1, _021D8D5C ; =0x000013D8
- ldr r0, [r2]
- add r0, r0, #0x1000
- str r4, [r0, #4]
- ldr r0, [r2]
- add r0, r0, r1
- bl OS_UnlockMutex
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D8D58: .word UNK04_02210468
-_021D8D5C: .word 0x000013D8
- arm_func_end MOD04_021D8D18
-
- arm_func_start MOD04_021D8D60
-MOD04_021D8D60: ; 0x021D8D60
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x98
- ldr r4, _021D8EE0 ; =UNK04_0221046C
- mov r3, #0
- ldr r5, [r4, #4]
- ldr ip, [r4]
- cmp r5, r3
- mov r5, r0
- mov r6, r1
- mov r4, r2
- cmpeq ip, r3
- bne _021D8DC0
- ldr r0, _021D8EE4 ; =UNK04_0220BEF8
- bl strlen
- mov r3, r0
- ldr r1, _021D8EE8 ; =UNK04_0220BF04
- ldr r2, _021D8EE4 ; =UNK04_0220BEF8
- mov r0, r5
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021D8E18
- add sp, sp, #0x98
- mov r0, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021D8DC0:
- ldr r0, _021D8EEC ; =UNK04_0220BF0C
- bl strlen
- mov r3, r0
- ldr r1, _021D8EE8 ; =UNK04_0220BF04
- ldr r2, _021D8EEC ; =UNK04_0220BF0C
- mov r0, r5
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, r6
- bl strlen
- mov r3, r0
- ldr r1, _021D8EF0 ; =UNK04_0220BF14
- mov r0, r5
- mov r2, r6
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
-_021D8E18:
- ldr r1, _021D8EE0 ; =UNK04_0221046C
- add r0, sp, #0
- bl MOD04_021D9F78
- cmp r0, #0
- addeq sp, sp, #0x98
- moveq r0, #5
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _021D8EF4 ; =UNK04_0221048C
- add r1, sp, #0
- ldr r2, [r0]
- mov r0, r5
- bl MOD04_021D9C2C
- cmp r0, #0
- addeq sp, sp, #0x98
- moveq r0, #8
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _021D8EF8 ; =UNK04_02210460
- ldr r0, [r0]
- cmp r0, #1
- bne _021D8E94
- ldr r0, _021D8EFC ; =UNK04_0220BF1C
- bl strlen
- mov r3, r0
- ldr r1, _021D8F00 ; =UNK04_0220BF20
- ldr r2, _021D8EFC ; =UNK04_0220BF1C
- mov r0, r5
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
-_021D8E94:
- mov r0, r4
- bl wcslen
- cmp r0, #0
- beq _021D8ED4
- mov r0, r4
- bl wcslen
- mov r3, r0
- ldr r1, _021D8F04 ; =UNK04_0220BF28
- mov r0, r5
- mov r2, r4
- mov r3, r3, lsl #1
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x98
- movne r0, #8
- ldmneia sp!, {r4, r5, r6, pc}
-_021D8ED4:
- mov r0, #0
- add sp, sp, #0x98
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021D8EE0: .word UNK04_0221046C
-_021D8EE4: .word UNK04_0220BEF8
-_021D8EE8: .word UNK04_0220BF04
-_021D8EEC: .word UNK04_0220BF0C
-_021D8EF0: .word UNK04_0220BF14
-_021D8EF4: .word UNK04_0221048C
-_021D8EF8: .word UNK04_02210460
-_021D8EFC: .word UNK04_0220BF1C
-_021D8F00: .word UNK04_0220BF20
-_021D8F04: .word UNK04_0220BF28
- arm_func_end MOD04_021D8D60
-
- arm_func_start MOD04_021D8F08
-MOD04_021D8F08: ; 0x021D8F08
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021D91BC ; =UNK04_02210468
- mov r1, #0
- ldr r0, [r0]
- str r1, [sp]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- ldr r1, _021D91C0 ; =UNK04_0220BF34
- bl MOD04_021DA388
- str r0, [sp]
- cmp r0, #0
- beq _021D8F40
- bl MOD04_021DCA84
-_021D8F40:
- ldr r0, _021D91BC ; =UNK04_02210468
- mov r2, #0
- ldr r1, [r0]
- ldr r0, _021D91C4 ; =errno
- str r2, [sp]
- str r2, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x314]
- ldr r1, _021D91C8 ; =UNK04_0220BF3C
- bl MOD04_021DA388
- bl atol
- ldr r1, _021D91C4 ; =errno
- ldr r1, [r1]
- cmp r1, #0x22
- bne _021D8F9C
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91CC ; =0x00004E85
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xc
- ldmia sp!, {r4, r5, pc}
-_021D8F9C:
- cmp r0, #0xc8
- beq _021D8FC8
- ldr r2, _021D91BC ; =UNK04_02210468
- ldr r1, _021D91D0 ; =0x000059D8
- ldr r2, [r2]
- add r1, r0, r1
- add r0, r2, #0x1000
- str r1, [r0, #8]
- add sp, sp, #4
- mov r0, #0x12
- ldmia sp!, {r4, r5, pc}
-_021D8FC8:
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91D4 ; =0x0000100C
- ldr r3, [r0]
- ldr r1, _021D91D8 ; =UNK04_0220BF48
- add r0, r3, #0x1000
- ldr r0, [r0, #0x314]
- add r2, r3, r2
- mov r3, #4
- bl MOD04_021DA334
- cmp r0, #0
- bgt _021D9014
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91CC ; =0x00004E85
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xe
- ldmia sp!, {r4, r5, pc}
-_021D9014:
- ldr r1, _021D91BC ; =UNK04_02210468
- ldr r0, _021D91D4 ; =0x0000100C
- ldr r2, [r1]
- add r1, sp, #0
- add r0, r2, r0
- mov r2, #0xa
- bl strtol
- ldr r2, _021D91BC ; =UNK04_02210468
- ldr r1, _021D91D4 ; =0x0000100C
- ldr r5, [r2]
- mov r4, r0
- add r0, r5, r1
- bl strlen
- ldr r1, _021D91D4 ; =0x0000100C
- ldr r2, [sp]
- add r1, r5, r1
- add r0, r1, r0
- cmp r2, r0
- ldrne r1, _021D91CC ; =0x00004E85
- addne r0, r5, #0x1000
- strne r1, [r0, #8]
- addne sp, sp, #4
- movne r0, #0xc
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D91DC ; =0x00004E20
- add r1, r5, #0x1000
- add r0, r4, r0
- str r0, [r1, #8]
- cmp r4, #0x64
- bge _021D91B0
- ldr ip, _021D91BC ; =UNK04_02210468
- mov r0, #0
- ldr r1, [ip]
- ldr r5, _021D91E0 ; =0x00001052
- add r1, r1, #0x1000
- strb r0, [r1, #0x52]
- ldr r2, [ip]
- ldr r1, _021D91E4 ; =UNK04_0220BF54
- add r2, r2, #0x1000
- strb r0, [r2, #0x1f]
- ldr r2, [ip]
- ldr r3, _021D91E8 ; =0x0000012D
- add r2, r2, #0x1000
- strb r0, [r2, #0x17f]
- ldr r2, [ip]
- add r2, r2, #0x1000
- strb r0, [r2, #0x10]
- ldr r2, [ip]
- add r2, r2, #0x1000
- strb r0, [r2, #0x188]
- ldr r2, [ip]
- add r0, r2, #0x1000
- ldr r0, [r0, #0x314]
- add r2, r2, r5
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91EC ; =0x0000101F
- ldr r3, [r0]
- ldr r1, _021D91F0 ; =UNK04_0220BF5C
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #0x33
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91F4 ; =0x0000117F
- ldr r3, [r0]
- ldr r1, _021D91F8 ; =UNK04_0220BF64
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #9
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D91FC ; =0x00001010
- ldr r3, [r0]
- ldr r1, _021D9200 ; =UNK04_0220BF70
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #0xf
- bl MOD04_021DA334
- ldr r0, _021D91BC ; =UNK04_02210468
- ldr r2, _021D9204 ; =0x00001188
- ldr r3, [r0]
- ldr r1, _021D9208 ; =UNK04_0220BF7C
- add r0, r3, #0x1000
- add r2, r3, r2
- ldr r0, [r0, #0x314]
- mov r3, #0x41
- bl MOD04_021DA2F4
- ldr r0, _021D91BC ; =UNK04_02210468
- mov r1, #0
- ldr r0, [r0]
- cmp r4, #0x28
- add r0, r0, #0x1000
- strb r1, [r0, #0x1b3]
- ldrne r0, _021D920C ; =UNK04_02210464
- movne r1, #1
- strne r1, [r0]
- ldreq r0, _021D920C ; =UNK04_02210464
- moveq r1, #2
- streq r1, [r0]
-_021D91B0:
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021D91BC: .word UNK04_02210468
-_021D91C0: .word UNK04_0220BF34
-_021D91C4: .word errno
-_021D91C8: .word UNK04_0220BF3C
-_021D91CC: .word 0x00004E85
-_021D91D0: .word 0x000059D8
-_021D91D4: .word 0x0000100C
-_021D91D8: .word UNK04_0220BF48
-_021D91DC: .word 0x00004E20
-_021D91E0: .word 0x00001052
-_021D91E4: .word UNK04_0220BF54
-_021D91E8: .word 0x0000012D
-_021D91EC: .word 0x0000101F
-_021D91F0: .word UNK04_0220BF5C
-_021D91F4: .word 0x0000117F
-_021D91F8: .word UNK04_0220BF64
-_021D91FC: .word 0x00001010
-_021D9200: .word UNK04_0220BF70
-_021D9204: .word 0x00001188
-_021D9208: .word UNK04_0220BF7C
-_021D920C: .word UNK04_02210464
- arm_func_end MOD04_021D8F08
-
- arm_func_start MOD04_021D9210
-MOD04_021D9210: ; 0x021D9210
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r0, _021D93F4 ; =UNK04_02210468
- mov r1, #0
- ldr r0, [r0]
- add r2, r0, #0x1000
- ldr r0, [r2, #0x314]
- ldr r5, [r2, #0x20c]
- ldr r4, [r2, #0x210]
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021D9260
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D93F8 ; =0x00004E84
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xe
- ldmia sp!, {r4, r5, pc}
-_021D9260:
- bl MOD04_021D8F08
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0xe
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r1, _021D93F8 ; =0x00004E84
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r2, [r0, #8]
- cmp r2, r1
- bge _021D9334
- ldr r0, _021D93FC ; =0x00004E22
- cmp r2, r0
- bne _021D9328
- ldr r0, _021D9400 ; =UNK04_0220BF88
- ldr r1, _021D9404 ; =0x0000071F
- blx r5
- movs r5, r0
- bne _021D92D0
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D93F8 ; =0x00004E84
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #2
- ldmia sp!, {r4, r5, pc}
-_021D92D0:
- add r1, r5, #0x1f
- ldr r0, _021D9408 ; =UNK04_0221046C
- bic r1, r1, #0x1f
- bl FUN_02096710
- cmp r0, #1
- beq _021D9318
- ldr r0, _021D940C ; =UNK04_0220BF98
- mov r1, r5
- mov r2, #0
- blx r4
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D93F8 ; =0x00004E84
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0xf
- ldmia sp!, {r4, r5, pc}
-_021D9318:
- ldr r0, _021D940C ; =UNK04_0220BF98
- mov r1, r5
- mov r2, #0
- blx r4
-_021D9328:
- add sp, sp, #4
- mov r0, #0x15
- ldmia sp!, {r4, r5, pc}
-_021D9334:
- ldr r0, _021D9410 ; =0x00004E88
- cmp r2, r0
- beq _021D9350
- ldr r0, _021D9414 ; =0x00004E8C
- cmp r2, r0
- beq _021D9378
- b _021D93E8
-_021D9350:
- ldr r0, _021D9408 ; =UNK04_0221046C
- bl FUN_02096570
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D9410 ; =0x00004E88
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0x10
- ldmia sp!, {r4, r5, pc}
-_021D9378:
- ldr r0, _021D9400 ; =UNK04_0220BF88
- mov r1, #0x700
- blx r5
- movs r5, r0
- bne _021D93AC
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D9414 ; =0x00004E8C
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0x11
- ldmia sp!, {r4, r5, pc}
-_021D93AC:
- add r0, r5, #0x1f
- bic r0, r0, #0x1f
- bl DWCi_AUTH_MakeWiFiID
- ldr r0, _021D940C ; =UNK04_0220BF98
- mov r1, r5
- mov r2, #0
- blx r4
- ldr r0, _021D93F4 ; =UNK04_02210468
- ldr r2, _021D9414 ; =0x00004E8C
- ldr r1, [r0]
- add sp, sp, #4
- add r1, r1, #0x1000
- str r2, [r1, #8]
- mov r0, #0x11
- ldmia sp!, {r4, r5, pc}
-_021D93E8:
- mov r0, #0x12
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021D93F4: .word UNK04_02210468
-_021D93F8: .word 0x00004E84
-_021D93FC: .word 0x00004E22
-_021D9400: .word UNK04_0220BF88
-_021D9404: .word 0x0000071F
-_021D9408: .word UNK04_0221046C
-_021D940C: .word UNK04_0220BF98
-_021D9410: .word 0x00004E88
-_021D9414: .word 0x00004E8C
- arm_func_end MOD04_021D9210
-
- arm_func_start MOD04_021D9418
-MOD04_021D9418: ; 0x021D9418
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0x14
- mov sb, #0
- mov r0, #1
- ldr r7, _021D96D4 ; =0x00001388
- ldr fp, _021D96D8 ; =0x000082EA
- ldr r5, _021D96DC ; =UNK04_02210468
- ldr r4, _021D96E0 ; =0x000013D8
- mov r6, sb
- str sb, [sp, #8]
- str sb, [sp, #0xc]
- str r0, [sp, #4]
-_021D9448:
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r1, [r0, #0x314]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021D9470
- ldr r0, _021D96E4 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021D9470:
- ldr r0, [r5]
- add r1, r0, #0x1000
- ldr r0, [r1, #0x314]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x20]
- cmp r0, #8
- beq _021D9518
- ldr r0, _021D96E8 ; =0x00004E84
- str r0, [r1, #8]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x20]
- cmp r0, #7
- bne _021D94C0
- mov r0, #0x14
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D94C0:
- cmp sb, #2
- ble _021D9508
- cmp r0, #2
- bne _021D94E0
- mov r0, #9
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D94E0:
- cmp r0, #3
- bne _021D94F8
- mov r0, #0xb
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D94F8:
- mov r0, #0xd
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D9508:
- ldr r0, [sp, #4]
- add sb, sb, #1
- str r0, [sp]
- b _021D9598
-_021D9518:
- bl MOD04_021D9210
- cmp r0, #0x10
- beq _021D9544
- cmp r0, #0x11
- beq _021D956C
- cmp r0, #0x15
- bne _021D9578
- mov r0, #0x15
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D9544:
- cmp sb, #2
- ble _021D955C
- mov r0, #0x10
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D955C:
- ldr r0, [sp, #8]
- add sb, sb, #1
- str r0, [sp]
- b _021D9598
-_021D956C:
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D9578:
- cmp sb, #2
- blt _021D958C
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D958C:
- ldr r0, [sp, #4]
- add sb, sb, #1
- str r0, [sp]
-_021D9598:
- bl OS_GetTick
- mov r8, r0
- mov sl, r1
- bl OS_GetTick
- subs r2, r0, r8
- sbc r0, r1, sl
- mov r1, r0, lsl #6
- ldr r3, [sp, #0xc]
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- mov r2, fp
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, r7
- bhs _021D965C
-_021D95D4:
- ldr r0, [r5]
- add r0, r0, r4
- bl OS_LockMutex
- ldr r2, [r5]
- add r1, r2, #0x1000
- ldr r0, [r1, #0x3f0]
- cmp r0, #1
- bne _021D961C
- ldr r2, _021D96E8 ; =0x00004E84
- ldr r0, _021D96E0 ; =0x000013D8
- str r2, [r1, #8]
- ldr r1, [r5]
- add r0, r1, r0
- bl OS_UnlockMutex
- mov r0, #0x14
- bl MOD04_021D8D18
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D961C:
- add r0, r2, r4
- bl OS_UnlockMutex
- mov r0, r7
- bl OS_Sleep
- bl OS_GetTick
- subs r2, r0, r8
- sbc r0, r1, sl
- mov r1, r0, lsl #6
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- mov r2, fp
- mov r3, r6
- bl _ll_udiv
- cmp r1, #0
- cmpeq r0, r7
- blo _021D95D4
-_021D965C:
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- bl MOD04_021DAE4C
- ldr r0, [r5]
- add r0, r0, r4
- bl OS_LockMutex
- ldr r0, [sp]
- bl MOD04_021D96EC
- ldr r1, [r5]
- add r1, r1, #0x1000
- str r0, [r1, #4]
- ldr r2, [r5]
- add r1, r2, #0x1000
- ldr r0, [r1, #4]
- cmp r0, #0
- beq _021D96C0
- ldr r2, _021D96E8 ; =0x00004E84
- ldr r0, _021D96E0 ; =0x000013D8
- str r2, [r1, #8]
- ldr r1, [r5]
- add r0, r1, r0
- bl OS_UnlockMutex
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021D96C0:
- add r0, r2, r4
- bl OS_UnlockMutex
- b _021D9448
- arm_func_end MOD04_021D9418
-
- arm_func_start MOD04_021D96CC
-MOD04_021D96CC: ; 0x021D96CC
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021D96D4: .word 0x00001388
-_021D96D8: .word 0x000082EA
-_021D96DC: .word UNK04_02210468
-_021D96E0: .word 0x000013D8
-_021D96E4: .word 0x00001B34
-_021D96E8: .word 0x00004E84
- arm_func_end MOD04_021D96CC
-
- arm_func_start MOD04_021D96EC
-MOD04_021D96EC: ; 0x021D96EC
- stmdb sp!, {r4, lr}
- ldr r1, _021D97E0 ; =UNK04_0220BEB4
- mov r4, r0
- ldr r0, [r1]
- ldr r1, _021D97E4 ; =UNK04_0220BFA4
- bl strcmp
- cmp r0, #0
- ldrne r0, _021D97E0 ; =UNK04_0220BEB4
- movne r1, #1
- strne r1, [r0, #0x14]
- ldr r0, _021D97E8 ; =UNK04_02210468
- ldr r1, _021D97E0 ; =UNK04_0220BEB4
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r2, [r0, #0x20c]
- str r2, [r1, #0xc]
- ldr r2, [r0, #0x210]
- str r2, [r1, #0x10]
- ldr r0, [r0, #0x314]
- bl MOD04_021DB608
- cmp r0, #0
- movne r0, #4
- ldmneia sp!, {r4, pc}
- cmp r4, #1
- bne _021D9758
- ldr r0, _021D97EC ; =UNK04_0221046C
- bl DWCi_BM_GetWiFiInfo
-_021D9758:
- ldr r0, _021D97E8 ; =UNK04_02210468
- ldr r2, _021D97F0 ; =0x000011CC
- ldr r3, [r0]
- add r0, r3, #0x1000
- ldr r0, [r0, #0x314]
- add r1, r3, #0x1200
- add r2, r3, r2
- bl MOD04_021D8D60
- ldr r2, _021D97E8 ; =UNK04_02210468
- ldr r1, [r2]
- add r1, r1, #0x1000
- str r0, [r1, #4]
- ldr r0, [r2]
- add r0, r0, #0x1000
- ldr r1, [r0, #4]
- cmp r1, #0
- movne r0, #4
- ldmneia sp!, {r4, pc}
- ldr r0, [r0, #0x314]
- bl MOD04_021DB570
- cmp r0, #0
- movne r0, #4
- ldmneia sp!, {r4, pc}
- ldr r0, _021D97F4 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- ldr r1, _021D97E8 ; =UNK04_02210468
- ldr r2, [r1]
- sub r1, r0, #1
- add r0, r2, #0x1000
- ldr r0, [r0, #0x314]
- bl MOD04_021DB4A4
- mov r0, #0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D97E0: .word UNK04_0220BEB4
-_021D97E4: .word UNK04_0220BFA4
-_021D97E8: .word UNK04_02210468
-_021D97EC: .word UNK04_0221046C
-_021D97F0: .word 0x000011CC
-_021D97F4: .word OSi_ThreadInfo
- arm_func_end MOD04_021D96EC
-
- arm_func_start MOD04_021D97F8
-MOD04_021D97F8: ; 0x021D97F8
- stmdb sp!, {r4, lr}
- ldr r1, _021D9874 ; =UNK04_02210468
- mov r4, r0
- ldr r1, [r1]
- cmp r1, #0
- bne _021D981C
- mov r1, #0
- mov r2, #0x1c4
- bl MI_CpuFill8
-_021D981C:
- ldr r1, _021D9874 ; =UNK04_02210468
- ldr r0, _021D9878 ; =0x00001008
- ldr r2, [r1]
- mov r1, r4
- add r0, r2, r0
- mov r2, #0x1c4
- bl MI_CpuCopy8
- ldr r1, [r4]
- ldr r0, _021D987C ; =0x00004E20
- cmp r1, r0
- blt _021D9854
- ldr r0, _021D9880 ; =0x00007530
- cmp r1, r0
- blt _021D985C
-_021D9854:
- ldr r0, _021D9884 ; =0x00005206
- str r0, [r4]
-_021D985C:
- ldr r1, [r4]
- ldr r0, _021D9888 ; =0x00004E84
- cmp r1, r0
- rsbge r0, r1, #0
- strge r0, [r4]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D9874: .word UNK04_02210468
-_021D9878: .word 0x00001008
-_021D987C: .word 0x00004E20
-_021D9880: .word 0x00007530
-_021D9884: .word 0x00005206
-_021D9888: .word 0x00004E84
- arm_func_end MOD04_021D97F8
-
- arm_func_start MOD04_021D988C
-MOD04_021D988C: ; 0x021D988C
- stmdb sp!, {r4, lr}
- ldr r0, _021D98D4 ; =UNK04_02210468
- ldr r1, [r0]
- cmp r1, #0
- moveq r0, #0x16
- ldmeqia sp!, {r4, pc}
- ldr r0, _021D98D8 ; =0x000013D8
- add r0, r1, r0
- bl OS_LockMutex
- ldr r1, _021D98D4 ; =UNK04_02210468
- ldr r0, _021D98D8 ; =0x000013D8
- ldr r2, [r1]
- add r1, r2, #0x1000
- add r0, r2, r0
- ldr r4, [r1, #4]
- bl OS_UnlockMutex
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D98D4: .word UNK04_02210468
-_021D98D8: .word 0x000013D8
- arm_func_end MOD04_021D988C
-
- arm_func_start MOD04_021D98DC
-MOD04_021D98DC: ; 0x021D98DC
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021D9914 ; =UNK04_02210468
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x384]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021D9918 ; =0x00001318
- add r0, r1, r0
- bl OS_JoinThread
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021D9914: .word UNK04_02210468
-_021D9918: .word 0x00001318
- arm_func_end MOD04_021D98DC
-
- arm_func_start MOD04_021D991C
-MOD04_021D991C: ; 0x021D991C
- stmdb sp!, {r4, lr}
- ldr r0, _021D996C ; =UNK04_02210468
- ldr r0, [r0]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- add r1, r0, #0x1000
- ldr r0, [r1, #0x314]
- ldr r4, [r1, #0x210]
- cmp r0, #0
- beq _021D9948
- bl MOD04_021DAE4C
-_021D9948:
- ldr r1, _021D996C ; =UNK04_02210468
- ldr r0, _021D9970 ; =UNK04_0220BFC4
- ldr r1, [r1]
- mov r2, #0
- blx r4
- ldr r0, _021D996C ; =UNK04_02210468
- mov r1, #0
- str r1, [r0]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021D996C: .word UNK04_02210468
-_021D9970: .word UNK04_0220BFC4
- arm_func_end MOD04_021D991C
-
- arm_func_start MOD04_021D9974
-MOD04_021D9974: ; 0x021D9974
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021D9A0C ; =UNK04_02210468
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021D9A10 ; =0x000013D8
- add r0, r1, r0
- bl OS_LockMutex
- ldr r2, _021D9A0C ; =UNK04_02210468
- mov r3, #1
- ldr r0, [r2]
- ldr r1, _021D9A10 ; =0x000013D8
- add r0, r0, #0x1000
- str r3, [r0, #0x3f0]
- ldr r0, [r2]
- add r0, r0, r1
- bl OS_UnlockMutex
- ldr r0, _021D9A0C ; =UNK04_02210468
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x314]
- cmp r0, #0
- beq _021D99DC
- bl MOD04_021DB440
-_021D99DC:
- ldr r0, _021D9A0C ; =UNK04_02210468
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x384]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021D9A14 ; =0x00001318
- add r0, r1, r0
- bl OS_JoinThread
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021D9A0C: .word UNK04_02210468
-_021D9A10: .word 0x000013D8
-_021D9A14: .word 0x00001318
- arm_func_end MOD04_021D9974
-
- arm_func_start MOD04_021D9A18
-MOD04_021D9A18: ; 0x021D9A18
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r1, _021D9ABC ; =UNK04_02210468
- ldr r0, _021D9AC0 ; =0x000013D8
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_InitMutex
- ldr r1, _021D9ABC ; =UNK04_02210468
- mov r2, #0
- ldr r0, [r1]
- add r0, r0, #0x1000
- str r2, [r0, #0x3f0]
- ldr r1, [r1]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x384]
- cmp r0, #0
- beq _021D9A74
- ldr r0, _021D9AC4 ; =0x00001318
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {pc}
-_021D9A74:
- ldr r2, _021D9ABC ; =UNK04_02210468
- ldr r0, _021D9AC4 ; =0x00001318
- ldr lr, [r2]
- mov r3, #0x1000
- ldr r1, _021D9AC8 ; =MOD04_021D9418
- str r3, [sp]
- mov ip, #0x10
- add r0, lr, r0
- add r3, lr, #0x1000
- str ip, [sp, #4]
- bl OS_CreateThread
- ldr r1, _021D9ABC ; =UNK04_02210468
- ldr r0, _021D9AC4 ; =0x00001318
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_WakeupThreadDirect
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021D9ABC: .word UNK04_02210468
-_021D9AC0: .word 0x000013D8
-_021D9AC4: .word 0x00001318
-_021D9AC8: .word MOD04_021D9418
- arm_func_end MOD04_021D9A18
-
- arm_func_start MOD04_021D9ACC
-MOD04_021D9ACC: ; 0x021D9ACC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021D9BFC ; =UNK04_02210468
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- cmp r0, #0
- addne sp, sp, #4
- ldr r2, [r5, #0x40]
- movne r0, #2
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D9C00 ; =UNK04_0220BFD4
- ldr r1, _021D9C04 ; =0x000013F4
- blx r2
- ldr r1, _021D9BFC ; =UNK04_02210468
- cmp r0, #0
- str r0, [r1]
- addeq sp, sp, #4
- moveq r0, #2
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, _021D9C04 ; =0x000013F4
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021D9BFC ; =UNK04_02210468
- ldr r2, _021D9C08 ; =0x00001008
- ldr r0, [r1]
- ldr r3, _021D9C0C ; =UNK04_02210464
- add r0, r0, #0x1000
- str r4, [r0, #0x314]
- ldr r0, [r1]
- mov r1, #0
- add r0, r0, r2
- mov r2, #0x1c4
- str r1, [r3]
- bl MI_CpuFill8
- ldr r2, _021D9BFC ; =UNK04_02210468
- ldr r3, _021D9C10 ; =0x00004E84
- ldr r0, [r2]
- ldr r1, _021D9C14 ; =0x000011CC
- add r0, r0, #0x1000
- str r3, [r0, #8]
- ldr lr, [r2]
- mov r4, #4
- add ip, lr, r1
-_021D9B7C:
- ldmia r5!, {r0, r1, r2, r3}
- stmia ip!, {r0, r1, r2, r3}
- subs r4, r4, #1
- bne _021D9B7C
- ldmia r5, {r0, r1}
- stmia ip, {r0, r1}
- add r0, lr, #0x1100
- mov r2, #0
- strh r2, [r0, #0xfe]
- ldr r1, _021D9BFC ; =UNK04_02210468
- mov r0, #1
- ldr r1, [r1]
- add r1, r1, #0x1000
- strb r2, [r1, #0x20b]
- bl MOD04_021D96EC
- ldr r2, _021D9BFC ; =UNK04_02210468
- ldr r1, [r2]
- add r1, r1, #0x1000
- str r0, [r1, #4]
- ldr r0, [r2]
- add r0, r0, #0x1000
- ldr r0, [r0, #4]
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021D9C18 ; =UNK04_02210460
- mov r1, #0
- str r1, [r0]
- bl MOD04_021D9A18
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021D9BFC: .word UNK04_02210468
-_021D9C00: .word UNK04_0220BFD4
-_021D9C04: .word 0x000013F4
-_021D9C08: .word 0x00001008
-_021D9C0C: .word UNK04_02210464
-_021D9C10: .word 0x00004E84
-_021D9C14: .word 0x000011CC
-_021D9C18: .word UNK04_02210460
- arm_func_end MOD04_021D9ACC
-
- arm_func_start MOD04_021D9C1C
-MOD04_021D9C1C: ; 0x021D9C1C
- ldr r1, _021D9C28 ; =UNK04_0220BEB4
- str r0, [r1]
- bx lr
- .align 2, 0
-_021D9C28: .word UNK04_0220BEB4
- arm_func_end MOD04_021D9C1C
-
- arm_func_start MOD04_021D9C2C
-MOD04_021D9C2C: ; 0x021D9C2C
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x28
- mov r4, r2
- mov r6, r0
- mov r5, r1
- mov ip, #2
- ldr r2, _021D9F30 ; =UNK04_0220BFE4
- add r0, sp, #4
- mov r1, #0x21
- mov r3, #1
- str ip, [sp]
- bl OS_SNPrintf
- add r0, sp, #4
- bl strlen
- mov r3, r0
- ldr r1, _021D9F34 ; =UNK04_0220BFF0
- mov r0, r6
- add r2, sp, #4
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, r5
- bl strlen
- mov r3, r0
- ldr r1, _021D9F38 ; =UNK04_0220BFF8
- mov r0, r6
- mov r2, r5
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0xe
- bl strlen
- mov r3, r0
- ldr r1, _021D9F3C ; =UNK04_0220C000
- mov r0, r6
- add r2, r5, #0xe
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x41
- bl strlen
- mov r3, r0
- ldr r1, _021D9F40 ; =UNK04_0220C008
- mov r0, r6
- add r2, r5, #0x41
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x6f
- bl strlen
- mov r3, r0
- ldr r1, _021D9F44 ; =UNK04_0220C010
- mov r0, r6
- add r2, r5, #0x6f
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x15
- bl strlen
- mov r3, r0
- ldr r1, _021D9F48 ; =UNK04_0220C018
- mov r0, r6
- add r2, r5, #0x15
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x1a
- bl strlen
- mov r3, r0
- ldr r1, _021D9F4C ; =UNK04_0220C020
- mov r0, r6
- add r2, r5, #0x1a
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x1d
- bl strlen
- mov r3, r0
- ldr r1, _021D9F50 ; =UNK04_0220C028
- mov r0, r6
- add r2, r5, #0x1d
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x1f
- bl strlen
- mov r3, r0
- ldr r1, _021D9F54 ; =UNK04_0220C030
- mov r0, r6
- add r2, r5, #0x1f
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x2c
- bl strlen
- mov r3, r0
- ldr r1, _021D9F58 ; =UNK04_0220C038
- mov r0, r6
- add r2, r5, #0x2c
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x2f
- bl strlen
- mov r3, r0
- ldr r1, _021D9F5C ; =UNK04_0220C040
- mov r0, r6
- add r2, r5, #0x2f
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x34
- bl strlen
- mov r3, r0
- ldr r1, _021D9F60 ; =UNK04_0220C048
- mov r0, r6
- add r2, r5, #0x34
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- add r0, r5, #0x7e
- bl wcslen
- mov r3, r0
- ldr r1, _021D9F64 ; =UNK04_0220C050
- mov r0, r6
- add r2, r5, #0x7e
- mov r3, r3, lsl #1
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- cmp r4, #1
- bne _021D9ED0
- add r0, r5, #0x4e
- bl strlen
- mov r3, r0
- ldr r1, _021D9F68 ; =UNK04_0220C058
- mov r0, r6
- add r2, r5, #0x4e
- bl MOD04_021DAB68
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
-_021D9ED0:
- ldr r2, _021D9F6C ; =UNK04_0220C060
- mov ip, #2
- add r0, sp, #4
- mov r1, #0x21
- mov r3, #1
- str ip, [sp]
- bl OS_SNPrintf
- ldr r1, _021D9F70 ; =UNK04_0220C078
- add r2, sp, #4
- mov r0, r6
- bl MOD04_021DAC98
- cmp r0, #0
- addne sp, sp, #0x28
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- ldr r1, _021D9F74 ; =UNK04_0220C084
- mov r0, r6
- add r2, r5, #0x15
- bl MOD04_021DAC98
- cmp r0, #0
- moveq r0, #1
- movne r0, #0
- add sp, sp, #0x28
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021D9F30: .word UNK04_0220BFE4
-_021D9F34: .word UNK04_0220BFF0
-_021D9F38: .word UNK04_0220BFF8
-_021D9F3C: .word UNK04_0220C000
-_021D9F40: .word UNK04_0220C008
-_021D9F44: .word UNK04_0220C010
-_021D9F48: .word UNK04_0220C018
-_021D9F4C: .word UNK04_0220C020
-_021D9F50: .word UNK04_0220C028
-_021D9F54: .word UNK04_0220C030
-_021D9F58: .word UNK04_0220C038
-_021D9F5C: .word UNK04_0220C040
-_021D9F60: .word UNK04_0220C048
-_021D9F64: .word UNK04_0220C050
-_021D9F68: .word UNK04_0220C058
-_021D9F6C: .word UNK04_0220C060
-_021D9F70: .word UNK04_0220C078
-_021D9F74: .word UNK04_0220C084
- arm_func_end MOD04_021D9C2C
-
- arm_func_start MOD04_021D9F78
-MOD04_021D9F78: ; 0x021D9F78
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #0x8c
- mov r6, r1
- mov r1, #0
- mov r2, #0x94
- mov r4, r0
- bl MI_CpuFill8
- ldr r3, [r6]
- ldr r5, [r6, #4]
- mov r0, #0
- cmp r5, r0
- cmpeq r3, r0
- beq _021D9FC4
- ldr r2, _021DA218 ; =UNK04_0220C094
- mov r0, r4
- mov r1, #0xe
- str r5, [sp]
- bl OS_SNPrintf
- b _021D9FE0
-_021D9FC4:
- ldr r3, [r6, #8]
- ldr r5, [r6, #0xc]
- ldr r2, _021DA218 ; =UNK04_0220C094
- mov r0, r4
- mov r1, #0xe
- str r5, [sp]
- bl OS_SNPrintf
-_021D9FE0:
- ldrh r3, [r6, #0x10]
- ldr r2, _021DA21C ; =UNK04_0220C09C
- add r0, r4, #0xe
- mov r1, #7
- bl OS_SNPrintf
- ldr r0, _021DA220 ; =0x027FFE0C
- ldrb r0, [r0]
- cmp r0, #0
- bne _021DA008
- bl OS_Terminate
-_021DA008:
- ldr r0, _021DA220 ; =0x027FFE0C
- add r1, r4, #0x15
- mov r2, #4
- bl MI_CpuCopy8
- ldr r0, _021DA224 ; =0x027FFE10
- ldrb r0, [r0]
- cmp r0, #0
- bne _021DA02C
- bl OS_Terminate
-_021DA02C:
- ldr r0, _021DA224 ; =0x027FFE10
- add r1, r4, #0x1a
- mov r2, #2
- bl MI_CpuCopy8
- mov r1, #0x30
- add r0, sp, #0x16
- strb r1, [r4, #0x1d]
- bl OS_GetMacAddress
- ldr r5, _021DA228 ; =UNK04_0220C0A4
- add r7, sp, #0x16
- add r6, r4, #0x1f
- mov r8, #0
-_021DA05C:
- ldrb r2, [r7]
- mov r0, r6
- mov r1, r5
- bl OS_SPrintf
- add r8, r8, #1
- cmp r8, #6
- add r7, r7, #1
- add r6, r6, #2
- blt _021DA05C
- add r0, sp, #0x38
- bl OS_GetOwnerInfo
- ldrb r0, [sp, #0x38]
- ldr r2, _021DA228 ; =UNK04_0220C0A4
- mov r1, #3
- cmp r0, #6
- movhi r0, #1
- strhib r0, [sp, #0x38]
- ldrb r3, [sp, #0x38]
- add r0, r4, #0x2c
- bl OS_SNPrintf
- add r0, sp, #0x3c
- add r1, r4, #0x7e
- mov r2, #0x14
- bl MI_CpuCopy8
- ldrb r1, [sp, #0x3b]
- ldr r2, _021DA22C ; =UNK04_0220C0AC
- add r0, r4, #0x2f
- str r1, [sp]
- ldrb r3, [sp, #0x3a]
- mov r1, #5
- bl OS_SNPrintf
- add r0, sp, #0x1c
- bl RTC_GetDate
- cmp r0, #0
- bne _021DA0F8
- add r0, sp, #0x2c
- bl RTC_GetTime
- cmp r0, #0
- beq _021DA104
-_021DA0F8:
- add sp, sp, #0x8c
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DA104:
- ldr r0, [sp, #0x20]
- ldr r2, _021DA230 ; =UNK04_0220C0B8
- str r0, [sp]
- ldr r1, [sp, #0x24]
- add r0, r4, #0x34
- str r1, [sp, #4]
- ldr r3, [sp, #0x2c]
- mov r1, #0xd
- str r3, [sp, #8]
- ldr r3, [sp, #0x30]
- str r3, [sp, #0xc]
- ldr r3, [sp, #0x34]
- str r3, [sp, #0x10]
- ldr r3, [sp, #0x1c]
- bl OS_SNPrintf
- bl OS_DisableInterrupts
- mov sb, r0
- bl WCM_GetApMacAddress
- mov r8, r0
- mov r1, #6
- bl DC_InvalidateRange
- cmp r8, #0
- bne _021DA174
- mov r0, sb
- bl OS_RestoreInterrupts
- add sp, sp, #0x8c
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DA174:
- add r7, r4, #0x41
- mov r6, #0
- ldr r5, _021DA228 ; =UNK04_0220C0A4
-_021DA180:
- ldrb r2, [r8, r6]
- mov r0, r7
- mov r1, r5
- bl OS_SPrintf
- add r6, r6, #1
- cmp r6, #6
- add r7, r7, #2
- blt _021DA180
- bl MOD04_021EBAB8
- mov r3, r0
- ldr r2, _021DA234 ; =UNK04_0220C0D4
- add r0, r4, #0x6f
- mov r1, #0xe
- bl OS_SNPrintf
- add r0, sp, #0x14
- bl WCM_GetApEssid
- mov r5, r0
- mov r1, #0x20
- bl DC_InvalidateRange
- cmp r5, #0
- bne _021DA1E8
- mov r0, sb
- bl OS_RestoreInterrupts
- add sp, sp, #0x8c
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DA1E8:
- mov r0, r5
- add r1, r4, #0x72
- bl MOD04_021EE5F4
- mov r0, r5
- add r1, r4, #0x4e
- mov r2, #0x20
- bl MI_CpuCopy8
- mov r0, sb
- bl OS_RestoreInterrupts
- mov r0, #1
- add sp, sp, #0x8c
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021DA218: .word UNK04_0220C094
-_021DA21C: .word UNK04_0220C09C
-_021DA220: .word 0x027FFE0C
-_021DA224: .word 0x027FFE10
-_021DA228: .word UNK04_0220C0A4
-_021DA22C: .word UNK04_0220C0AC
-_021DA230: .word UNK04_0220C0B8
-_021DA234: .word UNK04_0220C0D4
- arm_func_end MOD04_021D9F78
-
- arm_func_start MOD04_021DA238
-MOD04_021DA238: ; 0x021DA238
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x18
- mov r4, r0
- add r0, sp, #0
- bl DWCi_BM_GetWiFiInfo
- add r1, sp, #0
- mov r0, r4
- bl MOD04_021D9F78
- add sp, sp, #0x18
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DA238
-
- arm_func_start MOD04_021DA260
-MOD04_021DA260: ; 0x021DA260
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #4
- add r0, r0, #0x1000
- mov sb, r2
- cmp sb, #0
- ldr r8, [r0, #0x14]
- mov sl, r1
- mov r7, #0
- addle sp, sp, #4
- ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- mov r6, r7
- mov r5, r7
- mov fp, r7
- mov r4, r7
-_021DA298:
- ldr r1, [sl, r7, lsl #3]
- cmp r1, #0
- beq _021DA2B4
- ldr r0, _021DA2EC ; =UNK04_0220C110
- mov r2, r6
- blx r8
- str r5, [sl, r7, lsl #3]
-_021DA2B4:
- add r0, sl, r7, lsl #3
- ldr r1, [r0, #4]
- cmp r1, #0
- beq _021DA2D8
- ldr r0, _021DA2F0 ; =UNK04_0220C12C
- mov r2, fp
- blx r8
- add r0, sl, r7, lsl #3
- str r4, [r0, #4]
-_021DA2D8:
- add r7, r7, #1
- cmp r7, sb
- blt _021DA298
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DA2EC: .word UNK04_0220C110
-_021DA2F0: .word UNK04_0220C12C
- arm_func_end MOD04_021DA260
-
- arm_func_start MOD04_021DA2F4
-MOD04_021DA2F4: ; 0x021DA2F4
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r2
- mov r5, r3
- bl MOD04_021DA388
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl strlen
- cmp r0, r5
- movge r0, #0
- ldmgeia sp!, {r4, r5, r6, pc}
- mov r0, r6
- mov r1, r4
- bl strcpy
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DA2F4
-
- arm_func_start MOD04_021DA334
-MOD04_021DA334: ; 0x021DA334
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r2
- mov r5, r3
- bl MOD04_021DA388
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl strlen
- mov r1, r0
- mov r0, r4
- mov r2, r6
- mov r3, r5
- bl MOD04_021DD36C
- mvn r1, #0
- cmp r0, r1
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r0, r5
- ldmhsia sp!, {r4, r5, r6, pc}
- mov r1, #0
- strb r1, [r6, r0]
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DA334
-
- arm_func_start MOD04_021DA388
-MOD04_021DA388: ; 0x021DA388
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, #0
-_021DA398:
- add r0, r6, r4, lsl #3
- add r0, r0, #0x1000
- ldr r1, [r0, #0xa34]
- cmp r1, #0
- beq _021DA3D4
- mov r0, r5
- bl strcmp
- cmp r0, #0
- addeq r0, r6, r4, lsl #3
- addeq r0, r0, #0x1000
- ldreq r0, [r0, #0xa38]
- ldmeqia sp!, {r4, r5, r6, pc}
- add r4, r4, #1
- cmp r4, #0x20
- blt _021DA398
-_021DA3D4:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DA388
-
- arm_func_start MOD04_021DA3DC
-MOD04_021DA3DC: ; 0x021DA3DC
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0x14
- ldr r2, _021DA668 ; =0x00001A34
- mov fp, r0
- add r0, fp, r2
- mov r6, r1
- mov r3, #0x20
- mov r1, #0
- mov r2, #0x100
- str r0, [sp, #8]
- str r3, [sp, #0xc]
- str r1, [sp, #0x10]
- bl MI_CpuFill8
- add r0, fp, #0x1000
- ldr r5, [r0, #0xa04]
- ldr r1, _021DA66C ; =UNK04_0220C148
- mov r0, r5
- bl strstr
- str r0, [sp]
- cmp r0, #0
- addeq sp, sp, #0x14
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r0, r0, #4
- bl strlen
- ldr r1, [sp]
- add r1, r1, #4
- add r0, r1, r0
- str r0, [sp, #4]
- ldr r1, _021DA670 ; =UNK04_0220C150
- mov r0, r5
- bl strstr
- cmp r0, #0
- addeq sp, sp, #0x14
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r8, r0, #1
- ldrsb r7, [r8, #3]
- ldr r2, _021DA674 ; =UNK04_0220C154
- mov r5, #0
- add r1, sp, #8
- mov r0, fp
- mov r3, r8
- strb r5, [r8, #3]
- bl MOD04_021DA68C
- cmp r0, #1
- addne sp, sp, #0x14
- strneb r7, [r8, #3]
- movne r0, r5
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- strb r7, [r8, #3]
- cmp r6, #1
- beq _021DA4C8
- ldr r1, _021DA678 ; =UNK04_0220C160
- mov r0, r8
- mov r2, #3
- bl strncmp
- cmp r0, #0
- beq _021DA4D4
-_021DA4C8:
- add sp, sp, #0x14
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DA4D4:
- ldr r1, _021DA67C ; =UNK04_0220C164
- add r0, r8, #4
- bl strstr
- cmp r0, #0
- addeq sp, sp, #0x14
- moveq r0, r5
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add sb, r0, #2
- mov r6, r5
- b _021DA580
-_021DA4FC:
- ldr r1, _021DA680 ; =UNK04_0220C168
- mov r0, sb
- bl strstr
- movs r7, r0
- beq _021DA598
- ldrsb sl, [r7]
- add r8, r7, #2
- ldr r1, _021DA67C ; =UNK04_0220C164
- mov r0, r8
- strb r6, [r7]
- bl strstr
- movs r5, r0
- streqb sl, [r7]
- beq _021DA598
- ldrsb r4, [r5]
- mov r0, fp
- mov r2, sb
- strb r6, [r5]
- add r1, sp, #8
- mov r3, r8
- bl MOD04_021DA68C
- cmp r0, #1
- strneb sl, [r7]
- addne sp, sp, #0x14
- strneb r4, [r5]
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- mov r0, r8
- bl strlen
- strb sl, [r7]
- add r0, r8, r0
- strb r4, [r5]
- add sb, r0, #2
-_021DA580:
- ldrsb r0, [sb]
- cmp r0, #0xd
- beq _021DA598
- ldrsb r0, [sb, #1]
- cmp r0, #0xa
- bne _021DA4FC
-_021DA598:
- ldr r0, [sp]
- add r8, r0, #4
- ldr r0, [sp, #4]
- cmp r8, r0
- bhs _021DA65C
- mov r5, #0
-_021DA5B0:
- ldr r1, _021DA684 ; =UNK04_0220C16C
- mov r0, r8
- bl strstr
- movs sl, r0
- beq _021DA65C
- ldrsb r7, [sl]
- add sb, sl, #1
- ldr r1, _021DA688 ; =UNK04_0220C170
- mov r0, sb
- strb r5, [sl]
- bl strstr
- movs r6, r0
- bne _021DA5F4
- ldr r1, _021DA67C ; =UNK04_0220C164
- mov r0, sb
- bl strstr
- mov r6, r0
-_021DA5F4:
- cmp r6, #0
- ldrnesb r4, [r6]
- mov r0, fp
- mov r2, r8
- add r1, sp, #8
- mov r3, sb
- strneb r5, [r6]
- bl MOD04_021DA68C
- cmp r0, #1
- beq _021DA634
- strb r7, [sl]
- cmp r6, #0
- add sp, sp, #0x14
- strneb r4, [r6]
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DA634:
- mov r0, sb
- bl strlen
- add r0, sb, r0
- add r8, r0, #1
- ldr r0, [sp, #4]
- strb r7, [sl]
- cmp r6, #0
- strneb r4, [r6]
- cmp r8, r0
- blo _021DA5B0
-_021DA65C:
- mov r0, #1
- add sp, sp, #0x14
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DA668: .word 0x00001A34
-_021DA66C: .word UNK04_0220C148
-_021DA670: .word UNK04_0220C150
-_021DA674: .word UNK04_0220C154
-_021DA678: .word UNK04_0220C160
-_021DA67C: .word UNK04_0220C164
-_021DA680: .word UNK04_0220C168
-_021DA684: .word UNK04_0220C16C
-_021DA688: .word UNK04_0220C170
- arm_func_end MOD04_021DA3DC
-
- arm_func_start MOD04_021DA68C
-MOD04_021DA68C: ; 0x021DA68C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r1
- ldr r4, [r8, #8]
- ldr r1, [r8, #4]
- add r0, r0, #0x1000
- cmp r4, r1
- ldr r5, [r0, #0x10]
- ldr r4, [r0, #0x14]
- mov r7, r2
- mov r6, r3
- movgt r0, #0
- ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
- mov r0, r7
- bl strlen
- mov r1, r0
- ldr r0, _021DA7D8 ; =UNK04_0220C174
- add r1, r1, #1
- blx r5
- ldr r2, [r8]
- ldr r1, [r8, #8]
- str r0, [r2, r1, lsl #3]
- ldr r3, [r8, #8]
- ldr r2, [r8]
- ldr r0, [r2, r3, lsl #3]
- cmp r0, #0
- beq _021DA770
- mov r0, r6
- bl strlen
- mov r1, r0
- ldr r0, _021DA7DC ; =UNK04_0220C194
- add r1, r1, #1
- blx r5
- ldr r2, [r8]
- ldr r1, [r8, #8]
- add r1, r2, r1, lsl #3
- str r0, [r1, #4]
- ldr r3, [r8, #8]
- ldr r2, [r8]
- mov r1, r3, lsl #3
- add r0, r2, r3, lsl #3
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021DA770
- ldr r0, [r2, r1]
- mov r1, r7
- bl strcpy
- ldr r2, [r8]
- ldr r0, [r8, #8]
- mov r1, r6
- add r0, r2, r0, lsl #3
- ldr r0, [r0, #4]
- bl strcpy
- ldr r1, [r8, #8]
- mov r0, #1
- add r1, r1, #1
- str r1, [r8, #8]
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
-_021DA770:
- ldr r1, [r2, r3, lsl #3]
- cmp r1, #0
- beq _021DA798
- ldr r0, _021DA7E0 ; =UNK04_0220C1B4
- mov r2, #0
- blx r4
- ldr r1, [r8]
- ldr r0, [r8, #8]
- mov r2, #0
- str r2, [r1, r0, lsl #3]
-_021DA798:
- ldr r1, [r8]
- ldr r0, [r8, #8]
- add r0, r1, r0, lsl #3
- ldr r1, [r0, #4]
- cmp r1, #0
- beq _021DA7D0
- ldr r0, _021DA7E4 ; =UNK04_0220C1D0
- mov r2, #0
- blx r4
- ldr r1, [r8]
- ldr r0, [r8, #8]
- mov r2, #0
- add r0, r1, r0, lsl #3
- str r2, [r0, #4]
-_021DA7D0:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DA7D8: .word UNK04_0220C174
-_021DA7DC: .word UNK04_0220C194
-_021DA7E0: .word UNK04_0220C1B4
-_021DA7E4: .word UNK04_0220C1D0
- arm_func_end MOD04_021DA68C
-
- arm_func_start MOD04_021DA7E8
-MOD04_021DA7E8: ; 0x021DA7E8
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r1
- mov r5, r0
- mov r0, r6
- mov r4, #0
- bl strlen
- cmp r0, #0x100
- movhs r0, r4
- ldmhsia sp!, {r4, r5, r6, pc}
- ldr r0, _021DA934 ; =0x00001024
- mov r1, r6
- add r0, r5, r0
- mov r2, #0x100
- bl strncpy
- mov r0, r6
- bl strlen
- ldr r1, _021DA934 ; =0x00001024
- mov r6, r0
- add r0, r5, r1
- bl strlen
- cmp r6, r0
- movne r0, r4
- ldmneia sp!, {r4, r5, r6, pc}
- ldr r0, _021DA934 ; =0x00001024
- ldr r1, _021DA938 ; =UNK04_0220C1EC
- add r0, r5, r0
- bl strstr
- cmp r0, #0
- beq _021DA884
- ldr r0, _021DA93C ; =0x0000102B
- add r1, r5, #0x1000
- add r0, r5, r0
- str r0, [r1, #0x124]
- mov r0, r4
- str r0, [r1, #0x12c]
- add r0, r5, #0x1100
- mov r1, #0x50
- strh r1, [r0, #0x30]
- b _021DA8C0
-_021DA884:
- ldr r0, _021DA934 ; =0x00001024
- ldr r1, _021DA940 ; =UNK04_0220C1F4
- add r0, r5, r0
- bl strstr
- cmp r0, #0
- moveq r0, r4
- ldmeqia sp!, {r4, r5, r6, pc}
- add r1, r0, #8
- add r0, r5, #0x1000
- str r1, [r0, #0x124]
- mov r2, #1
- ldr r1, _021DA944 ; =0x000001BB
- str r2, [r0, #0x12c]
- add r0, r5, #0x1100
- strh r1, [r0, #0x30]
-_021DA8C0:
- add r0, r5, #0x1000
- ldr r0, [r0, #0x124]
- ldr r1, _021DA948 ; =UNK04_0220C200
- bl strstr
- cmp r0, #0
- movne r1, #0
- strneb r1, [r0]
- addne r4, r0, #1
- add r0, r5, #0x1000
- ldr r0, [r0, #0x124]
- ldr r1, _021DA94C ; =UNK04_0220C204
- bl strstr
- cmp r0, #0
- addeq r0, r5, #0x1000
- moveq r1, #0
- streq r1, [r0, #0x128]
- movne r1, #0
- strneb r1, [r0]
- addne r1, r0, #1
- addne r0, r5, #0x1000
- strne r1, [r0, #0x128]
- cmp r4, #0
- beq _021DA92C
- mov r0, r4
- bl atol
- add r1, r5, #0x1100
- strh r0, [r1, #0x30]
-_021DA92C:
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DA934: .word 0x00001024
-_021DA938: .word UNK04_0220C1EC
-_021DA93C: .word 0x0000102B
-_021DA940: .word UNK04_0220C1F4
-_021DA944: .word 0x000001BB
-_021DA948: .word UNK04_0220C200
-_021DA94C: .word UNK04_0220C204
- arm_func_end MOD04_021DA7E8
-
- arm_func_start MOD04_021DA950
-MOD04_021DA950: ; 0x021DA950
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- add r0, r0, #0x1000
- mov r5, r2
- cmp r5, #0
- ldr r7, [r0, #0x14]
- ldr r2, [r0, #0x10]
- mov r6, r1
- addle sp, sp, #4
- movle r0, #0
- ldmleia sp!, {r4, r5, r6, r7, pc}
- ldr r1, [r6, #0xc]
- ldr r0, _021DAA08 ; =UNK04_0220C208
- add r1, r1, r5
- blx r2
- movs r4, r0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r6]
- ldr r2, [r6, #0xc]
- mov r1, r4
- bl MI_CpuCopy8
- ldr r1, [r6]
- ldr r0, _021DAA0C ; =UNK04_0220C218
- mov r2, #0
- blx r7
- cmp r4, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r6]
- ldr r1, [r6, #4]
- sub r0, r4, r0
- add r0, r1, r0
- str r0, [r6, #4]
- ldr r1, [r6, #0xc]
- mov r0, #1
- add r1, r1, r5
- str r1, [r6, #0xc]
- str r4, [r6]
- ldr r1, [r6, #0xc]
- add r1, r4, r1
- str r1, [r6, #8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DAA08: .word UNK04_0220C208
-_021DAA0C: .word UNK04_0220C218
- arm_func_end MOD04_021DA950
-
- arm_func_start MOD04_021DAA10
-MOD04_021DAA10: ; 0x021DAA10
- stmdb sp!, {r4, lr}
- mov r4, r1
- ldr r1, [r4]
- add r0, r0, #0x1000
- cmp r1, #0
- ldr r3, [r0, #0x14]
- beq _021DAA38
- ldr r0, _021DAA4C ; =UNK04_0220C218
- mov r2, #0
- blx r3
-_021DAA38:
- mov r0, r4
- mov r1, #0
- mov r2, #0x10
- bl MI_CpuFill8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DAA4C: .word UNK04_0220C218
- arm_func_end MOD04_021DAA10
-
- arm_func_start MOD04_021DAA50
-MOD04_021DAA50: ; 0x021DAA50
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r2
- add r0, r0, #0x1000
- ldr r2, [r0, #0x10]
- mov r4, r1
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- ldr r0, _021DAABC ; =UNK04_0220C22C
- mov r1, r5
- blx r2
- str r0, [r4]
- ldr r0, [r4]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- str r0, [r4, #4]
- str r5, [r4, #0xc]
- ldr r2, [r4]
- ldr r1, [r4, #0xc]
- mov r0, #1
- add r1, r2, r1
- str r1, [r4, #8]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DAABC: .word UNK04_0220C22C
- arm_func_end MOD04_021DAA50
-
- arm_func_start MOD04_021DAAC0
-MOD04_021DAAC0: ; 0x021DAAC0
- ands r1, r0, #0x8000
- bicne r0, r0, #0x8000
- bx lr
- arm_func_end MOD04_021DAAC0
-
- arm_func_start MOD04_021DAACC
-MOD04_021DAACC: ; 0x021DAACC
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r2, _021DAB60 ; =0x000019F4
- mov r7, r0
- mov r6, r1
- mov r0, r6
- add r4, r7, r2
- bl strlen
- mov r5, r0
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- sub r1, r1, r0
- cmp r5, r1
- ble _021DAB34
- sub r2, r5, r1
- mov r0, r7
- mov r1, r4
- add r2, r2, #1
- bl MOD04_021DA950
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- sub r1, r1, r0
-_021DAB34:
- ldr r2, _021DAB64 ; =UNK04_0220C240
- mov r3, r6
- bl OS_SNPrintf
- cmp r0, r5
- ldreq r1, [r4, #4]
- movne r0, #1
- addeq r0, r1, r0
- streq r0, [r4, #4]
- moveq r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DAB60: .word 0x000019F4
-_021DAB64: .word UNK04_0220C240
- arm_func_end MOD04_021DAACC
-
- arm_func_start MOD04_021DAB68
-MOD04_021DAB68: ; 0x021DAB68
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- add r0, sl, #0x1000
- ldr r4, [r0, #0x9f0]
- ldr r0, _021DAC8C ; =0x000019F4
- cmp r4, #0
- ldreq r6, _021DAC90 ; =UNK04_0220C244
- mov r8, r2
- add r5, sl, #0x1000
- add r4, sl, r0
- ldr r0, [r5, #0x9f0]
- mov r7, r3
- add fp, r0, #1
- mov r2, #0
- mov sb, r1
- ldrne r6, _021DAC94 ; =UNK04_0220C248
- mov r0, r8
- mov r1, r7
- mov r3, r2
- str fp, [r5, #0x9f0]
- bl MOD04_021DD4FC
- mov r5, r0
- mov r0, r6
- bl strlen
- mov fp, r0
- mov r0, sb
- bl strlen
- sub r1, fp, #2
- add r2, r1, r0
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- add r2, r5, r2
- sub r1, r1, r0
- cmp r2, r1
- ble _021DAC28
- sub r2, r2, r1
- mov r0, sl
- mov r1, r4
- add r2, r2, #1
- bl MOD04_021DA950
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, [r4, #4]
- ldr r1, [r4, #8]
- sub r1, r1, r0
-_021DAC28:
- mov r2, r6
- mov r3, sb
- bl OS_SNPrintf
- ldr r2, [r4, #4]
- mov r1, r7
- add r0, r2, r0
- str r0, [r4, #4]
- ldr r2, [r4, #4]
- ldr r3, [r4, #8]
- mov r0, r8
- sub r3, r3, r2
- sub r3, r3, #1
- bl MOD04_021DD4FC
- cmp r0, #0
- addlt sp, sp, #4
- movlt r0, #1
- ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r1, [r4, #4]
- mov r0, #0
- add r1, r1, r5
- str r1, [r4, #4]
- ldr r1, [r4, #4]
- strb r0, [r1]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DAC8C: .word 0x000019F4
-_021DAC90: .word UNK04_0220C244
-_021DAC94: .word UNK04_0220C248
- arm_func_end MOD04_021DAB68
-
- arm_func_start MOD04_021DAC98
-MOD04_021DAC98: ; 0x021DAC98
- stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
- sub sp, sp, #4
- mov r6, r2
- mov r8, r0
- ldr r2, _021DAD7C ; =0x000019F4
- mov r0, r6
- mov r7, r1
- add r5, r8, r2
- bl strlen
- mov r4, r0
- ldr r0, _021DAD80 ; =UNK04_0220C250
- bl strlen
- mov sb, r0
- mov r0, r7
- bl strlen
- sub r1, sb, #4
- add r0, r1, r0
- add r4, r4, r0
- ldr r2, [r5, #8]
- ldr r1, [r5, #4]
- add r0, r4, #1
- sub r1, r2, r1
- cmp r0, r1
- ble _021DAD1C
- sub r2, r4, r1
- mov r0, r8
- mov r1, r5
- add r2, r2, #1
- bl MOD04_021DA950
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
-_021DAD1C:
- ldr r0, [r5]
- ldr r1, _021DAD84 ; =UNK04_0220C148
- bl strstr
- add r8, r0, #2
- ldrsb sb, [r0, #2]
- mov r0, r8
- bl strlen
- add r2, r0, #1
- add r0, r8, r4
- mov r1, r8
- bl memmove
- ldr r2, _021DAD80 ; =UNK04_0220C250
- str r6, [sp]
- mov r3, r7
- mov r0, r8
- add r1, r4, #1
- bl OS_SNPrintf
- strb sb, [r8, r0]
- ldr r1, [r5, #4]
- mov r0, #0
- add r1, r1, r4
- str r1, [r5, #4]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- .align 2, 0
-_021DAD7C: .word 0x000019F4
-_021DAD80: .word UNK04_0220C250
-_021DAD84: .word UNK04_0220C148
- arm_func_end MOD04_021DAC98
-
- arm_func_start MOD04_021DAD88
-MOD04_021DAD88: ; 0x021DAD88
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #8
- mov r7, r0
- add r0, r7, #0x1000
- ldr r1, [r0, #8]
- ldr r0, _021DAE40 ; =0x000019F4
- cmp r1, #0
- ldreq r6, _021DAE44 ; =UNK04_0220C25C
- add r5, r7, r0
- add r0, r7, #0x1000
- ldrne r6, _021DAE48 ; =UNK04_0220C2B0
- ldr r0, [r0, #0x124]
- bl strlen
- mov r4, r0
- mov r0, r6
- bl strlen
- add r1, r7, #0x1000
- mov r8, r0
- ldr r0, [r1, #0x128]
- bl strlen
- sub r1, r8, #4
- add r0, r1, r0
- add r1, r4, r0
- ldr r0, _021DAE40 ; =0x000019F4
- add r2, r1, #0x400
- add r1, r7, r0
- mov r0, r7
- bl MOD04_021DAA50
- cmp r0, #1
- addne sp, sp, #8
- movne r0, #1
- ldmneia sp!, {r4, r5, r6, r7, r8, pc}
- add r3, r7, #0x1000
- ldr r0, [r3, #0x124]
- mov r2, r6
- str r0, [sp]
- ldr r0, [r5, #4]
- ldr r1, [r5, #0xc]
- ldr r3, [r3, #0x128]
- bl OS_SNPrintf
- ldr r1, [r5, #4]
- add r0, r1, r0
- str r0, [r5, #4]
- mov r0, #0
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DAE40: .word 0x000019F4
-_021DAE44: .word UNK04_0220C25C
-_021DAE48: .word UNK04_0220C2B0
- arm_func_end MOD04_021DAD88
-
- arm_func_start MOD04_021DAE4C
-MOD04_021DAE4C: ; 0x021DAE4C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r0
- add r1, r5, #0x1000
- ldr r4, [r1, #0x14]
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r1, _021DAF00 ; =0x00001A34
- mov r2, #0x20
- add r1, r5, r1
- bl MOD04_021DA260
- ldr r1, _021DAF04 ; =0x00001A04
- mov r0, r5
- add r1, r5, r1
- bl MOD04_021DAA10
- ldr r1, _021DAF08 ; =0x000019F4
- mov r0, r5
- add r1, r5, r1
- bl MOD04_021DAA10
- add r0, r5, #0x1000
- ldr r1, [r0, #0x9c8]
- cmp r1, #0
- beq _021DAEC0
- ldr r0, _021DAF0C ; =UNK04_0220C2D0
- mov r2, #0
- blx r4
- add r0, r5, #0x1000
- mov r1, #0
- str r1, [r0, #0x9c8]
-_021DAEC0:
- add r0, r5, #0x1000
- ldr r1, [r0, #0x9cc]
- cmp r1, #0
- beq _021DAEE8
- ldr r0, _021DAF10 ; =UNK04_0220C2E8
- mov r2, #0
- blx r4
- add r0, r5, #0x1000
- mov r1, #0
- str r1, [r0, #0x9cc]
-_021DAEE8:
- ldr r2, _021DAF14 ; =0x00001C10
- mov r0, r5
- mov r1, #0
- bl MI_CpuFill8
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DAF00: .word 0x00001A34
-_021DAF04: .word 0x00001A04
-_021DAF08: .word 0x000019F4
-_021DAF0C: .word UNK04_0220C2D0
-_021DAF10: .word UNK04_0220C2E8
-_021DAF14: .word 0x00001C10
- arm_func_end MOD04_021DAE4C
-
- arm_func_start MOD04_021DAF18
-MOD04_021DAF18: ; 0x021DAF18
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0xc
- mov sl, r0
- add r0, sl, #0x1000
- ldr fp, [r0, #0x1c]
- ldr r0, _021DB224 ; =0x00001134
- ldr r1, _021DB228 ; =0x00001198
- ldr r2, _021DB22C ; =0x00001A04
- add r8, sl, r0
- cmp fp, #0
- mov r0, sl
- add r6, sl, r1
- add r7, sl, r2
- mov r5, #0
- ldrle fp, _021DB230 ; =0x0000EA60
- bl MOD04_021DB35C
- mov r0, sl
- bl MOD04_021DB348
- movs r4, r0
- addeq r0, sl, #0x1000
- moveq r1, #2
- streq r1, [r0, #0x20]
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl CPS_SocUse
- add r0, sl, #0x1000
- ldr r0, [r0, #0x12c]
- cmp r0, #1
- bne _021DAFC8
- mov r0, r6
- mov r1, #0
- mov r2, #0x830
- bl MI_CpuFill8
- ldr r1, _021DB234 ; =MOD04_021DAAC0
- add r0, sl, #0x1000
- str r1, [r6, #0x810]
- ldr r1, [r0, #0x124]
- ldr r0, _021DB238 ; =UNK04_0220C0E4
- str r1, [r6, #0x800]
- mov r1, #0xb
- str r6, [r8, #0xc]
- bl CPS_SetRootCa
- mov r0, #1
- bl CPS_SetSsl
-_021DAFC8:
- add r0, sl, #0x1100
- ldrh r1, [r0, #0x30]
- mov r2, r4
- mov r0, #0
- bl CPS_SocPingMode
- bl CPS_TcpConnect
- cmp r0, #0
- beq _021DB004
- add r0, sl, #0x1000
- mov r1, #3
- str r1, [r0, #0x20]
- bl CPS_SocRelease
- bl CPS_SocUnRegister
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DB004:
- add r0, sl, #0x1000
- ldr r4, [r0, #0x9f4]
- mov r0, r4
- bl strlen
- mov r1, r0
- mov r0, r4
- bl CPS_SocWrite
- cmp r0, #0
- str r0, [sp, #8]
- addle r0, sl, #0x1000
- movle r1, #5
- strle r1, [r0, #0x20]
- ble _021DB20C
- bl CPS_SocGetChar
- mov r0, sl
- bl MOD04_021DB3B8
- cmp r0, #0
- addeq r0, sl, #0x1000
- moveq r1, #7
- streq r1, [r0, #0x20]
- beq _021DB20C
- ldr r0, [r7]
- str r0, [r7, #4]
- ldr r1, [r7]
- ldr r0, [r7, #0xc]
- add r0, r1, r0
- str r0, [r7, #8]
- bl OS_GetTick
- mov r6, r0
- mov r0, fp, asr #0x1f
- mov r8, r1
- str r0, [sp, #4]
- mov r4, #0
-_021DB088:
- ldr r0, _021DB23C ; =CPSMyIp
- ldr r0, [r0]
- cmp r0, #0
- addeq r0, sl, #0x1000
- moveq r1, #5
- streq r1, [r0, #0x20]
- beq _021DB20C
- bl CPS_SocGetLength
- str r0, [sp, #8]
- cmp r0, #0
- blt _021DB1E8
- cmp r0, #0
- ble _021DB16C
- bl OS_GetTick
- mov r6, r0
- add r0, sp, #8
- mov r8, r1
- bl CPS_SocRead
- cmp r0, #0
- beq _021DB1E8
- ldr r2, [r7, #8]
- ldr r1, [r7, #4]
- sub r2, r2, #1
- ldr sb, [sp, #8]
- sub r2, r2, r1
- cmp sb, r2
- movge sb, r2
- mov r2, sb
- bl MI_CpuCopy8
- ldr r0, [r7, #4]
- cmp r5, #1
- add r0, r0, sb
- str r0, [r7, #4]
- ldr r0, [r7, #4]
- strb r4, [r0]
- bne _021DB144
- ldr r0, _021DB240 ; =0x00001A14
- add r0, sl, r0
- bl OS_LockMutex
- add r1, sl, #0x1000
- ldr r2, [r1, #0xa30]
- ldr r0, _021DB240 ; =0x00001A14
- add r2, r2, sb
- add r0, sl, r0
- str r2, [r1, #0xa30]
- bl OS_UnlockMutex
- b _021DB150
-_021DB144:
- mov r0, sl
- bl MOD04_021DB248
- mov r5, r0
-_021DB150:
- ldr r0, [sp, #8]
- cmp r0, sb
- bls _021DB164
- bl CPS_SocConsume
- b _021DB1E8
-_021DB164:
- mov r0, sb
- bl CPS_SocConsume
-_021DB16C:
- add r0, sl, #0x1000
- ldr r1, [r0, #0xa2c]
- cmp r1, #0
- blt _021DB188
- ldr r0, [r0, #0xa30]
- cmp r0, r1
- bge _021DB1E8
-_021DB188:
- bl OS_GetTick
- subs r2, r0, r6
- sbc r0, r1, r8
- mov r1, r0, lsl #6
- orr r1, r1, r2, lsr #26
- mov r0, r2, lsl #6
- ldr r2, _021DB244 ; =0x000082EA
- mov r3, r4
- bl _ll_udiv
- ldr r2, [sp, #4]
- cmp r1, r2
- cmpeq r0, fp
- addhi r0, sl, #0x1000
- movhi r1, #6
- strhi r1, [r0, #0x20]
- bhi _021DB20C
- mov r0, sl
- bl MOD04_021DB3B8
- cmp r0, #0
- bne _021DB088
- add r0, sl, #0x1000
- mov r1, #7
- str r1, [r0, #0x20]
- b _021DB20C
-_021DB1E8:
- bl CPS_TcpShutdown
- bl CPS_TcpClose
- bl CPS_SocRelease
- bl CPS_SocUnRegister
- add r0, sl, #0x1000
- mov r1, #8
- str r1, [r0, #0x20]
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DB20C:
- bl CPS_TcpShutdown
- bl CPS_TcpClose
- bl CPS_SocRelease
- bl CPS_SocUnRegister
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DB224: .word 0x00001134
-_021DB228: .word 0x00001198
-_021DB22C: .word 0x00001A04
-_021DB230: .word 0x0000EA60
-_021DB234: .word MOD04_021DAAC0
-_021DB238: .word UNK04_0220C0E4
-_021DB23C: .word CPSMyIp
-_021DB240: .word 0x00001A14
-_021DB244: .word 0x000082EA
- arm_func_end MOD04_021DAF18
-
- arm_func_start MOD04_021DB248
-MOD04_021DB248: ; 0x021DB248
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r0
- add r0, r5, #0x1000
- ldr r6, [r0, #0xa04]
- ldr r2, _021DB334 ; =0x00001A04
- ldr r1, _021DB338 ; =UNK04_0220C148
- mov r0, r6
- add r4, r5, r2
- bl strstr
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r1, _021DB338 ; =UNK04_0220C148
- mov r0, r6
- bl strstr
- ldr r1, _021DB33C ; =0x00001A14
- add r6, r0, #4
- add r0, r5, r1
- bl OS_LockMutex
- ldr r0, [r4, #4]
- ldr r1, _021DB33C ; =0x00001A14
- sub r2, r0, r6
- add r0, r5, #0x1000
- str r2, [r0, #0xa30]
- add r0, r5, r1
- bl OS_UnlockMutex
- ldr r0, [r4]
- ldr r1, _021DB340 ; =UNK04_0220C300
- bl strstr
- movs r4, r0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DB340 ; =UNK04_0220C300
- bl strlen
- add r7, r4, r0
- ldr r1, _021DB344 ; =UNK04_0220C164
- mov r0, r7
- bl strstr
- mov r4, r0
- ldr r0, _021DB33C ; =0x00001A14
- ldrsb r6, [r4]
- mov r1, #0
- add r0, r5, r0
- strb r1, [r4]
- bl OS_LockMutex
- mov r0, r7
- bl atol
- add r1, r5, #0x1000
- ldr r2, _021DB33C ; =0x00001A14
- str r0, [r1, #0xa2c]
- add r0, r5, r2
- bl OS_UnlockMutex
- strb r6, [r4]
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DB334: .word 0x00001A04
-_021DB338: .word UNK04_0220C148
-_021DB33C: .word 0x00001A14
-_021DB340: .word UNK04_0220C300
-_021DB344: .word UNK04_0220C164
- arm_func_end MOD04_021DB248
-
- arm_func_start MOD04_021DB348
-MOD04_021DB348: ; 0x021DB348
- ldr ip, _021DB358 ; =CPS_Resolve
- add r0, r0, #0x1000
- ldr r0, [r0, #0x124]
- bx ip
- .align 2, 0
-_021DB358: .word CPS_Resolve
- arm_func_end MOD04_021DB348
-
- arm_func_start MOD04_021DB35C
-MOD04_021DB35C: ; 0x021DB35C
- stmdb sp!, {r4, lr}
- ldr r1, _021DB3AC ; =0x00001134
- mov r4, r0
- add r0, r4, r1
- mov r1, #0
- mov r2, #0x64
- bl MI_CpuFill8
- ldr r0, _021DB3B0 ; =0x00000B68
- add r1, r4, #0x1000
- str r0, [r1, #0x170]
- ldr r3, [r1, #0x9c8]
- ldr r0, _021DB3AC ; =0x00001134
- ldr r2, _021DB3B4 ; =0x000005EA
- str r3, [r1, #0x174]
- str r2, [r1, #0x17c]
- ldr r2, [r1, #0x9cc]
- add r0, r4, r0
- str r2, [r1, #0x180]
- bl CPS_SocRegister
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB3AC: .word 0x00001134
-_021DB3B0: .word 0x00000B68
-_021DB3B4: .word 0x000005EA
- arm_func_end MOD04_021DB35C
-
- arm_func_start MOD04_021DB3B8
-MOD04_021DB3B8: ; 0x021DB3B8
- stmdb sp!, {r4, lr}
- mov r4, r0
- add r0, r4, #0x1000
- ldr r0, [r0, #0x12c]
- cmp r0, #1
- bne _021DB3EC
- ldr r0, _021DB438 ; =0x000019D0
- add r0, r4, r0
- bl OS_GetLowEntropyData
- ldr r0, _021DB438 ; =0x000019D0
- mov r1, #0x20
- add r0, r4, r0
- bl CPS_SslAddRandomSeed
-_021DB3EC:
- ldr r0, _021DB43C ; =0x00001BF4
- add r0, r4, r0
- bl OS_LockMutex
- add r0, r4, #0x1000
- ldr r0, [r0, #0xc0c]
- cmp r0, #1
- bne _021DB41C
- ldr r0, _021DB43C ; =0x00001BF4
- add r0, r4, r0
- bl OS_UnlockMutex
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DB41C:
- ldr r0, _021DB43C ; =0x00001BF4
- add r0, r4, r0
- bl OS_UnlockMutex
- mov r0, #0xa
- bl OS_Sleep
- mov r0, #1
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB438: .word 0x000019D0
-_021DB43C: .word 0x00001BF4
- arm_func_end MOD04_021DB3B8
-
- arm_func_start MOD04_021DB440
-MOD04_021DB440: ; 0x021DB440
- stmdb sp!, {r4, lr}
- mov r4, r0
- add r0, r4, #0x1000
- ldrb r0, [r0]
- cmp r0, #0xff
- ldmneia sp!, {r4, pc}
- ldr r0, _021DB49C ; =0x00001BF4
- add r0, r4, r0
- bl OS_LockMutex
- ldr r0, _021DB49C ; =0x00001BF4
- add r1, r4, #0x1000
- mov r2, #1
- add r0, r4, r0
- str r2, [r1, #0xc0c]
- bl OS_UnlockMutex
- add r0, r4, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- ldr r0, _021DB4A0 ; =0x00001B34
- add r0, r4, r0
- bl OS_JoinThread
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB49C: .word 0x00001BF4
-_021DB4A0: .word 0x00001B34
- arm_func_end MOD04_021DB440
-
- arm_func_start MOD04_021DB4A4
-MOD04_021DB4A4: ; 0x021DB4A4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xc
- ldr r3, _021DB55C ; =0x00001BF4
- mov r5, r0
- add r2, r5, #0x1000
- mov ip, #0
- add r0, r5, r3
- mov r4, r1
- str ip, [r2, #0xc0c]
- bl OS_InitMutex
- ldr r0, _021DB560 ; =0x00001A14
- add r0, r5, r0
- bl OS_InitMutex
- add r0, r5, #0x1000
- ldr r0, [r0, #0x18]
- cmp r0, #1
- ldreq r0, _021DB564 ; =UNK04_02210480
- moveq r1, #1
- streq r1, [r0]
- ldrne r0, _021DB564 ; =UNK04_02210480
- movne r1, #0
- strne r1, [r0]
- add r0, r5, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DB524
- ldr r0, _021DB568 ; =0x00001B34
- add r0, r5, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, pc}
-_021DB524:
- ldr r0, _021DB568 ; =0x00001B34
- mov r1, #0x1000
- str r1, [sp]
- ldr r1, _021DB56C ; =MOD04_021DAF18
- mov r2, r5
- add r0, r5, r0
- add r3, r5, #0x1000
- str r4, [sp, #4]
- bl OS_CreateThread
- ldr r0, _021DB568 ; =0x00001B34
- add r0, r5, r0
- bl OS_WakeupThreadDirect
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DB55C: .word 0x00001BF4
-_021DB560: .word 0x00001A14
-_021DB564: .word UNK04_02210480
-_021DB568: .word 0x00001B34
-_021DB56C: .word MOD04_021DAF18
- arm_func_end MOD04_021DB4A4
-
- arm_func_start MOD04_021DB570
-MOD04_021DB570: ; 0x021DB570
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r1, _021DB5F4 ; =UNK04_0220C314
- ldr r2, _021DB5F8 ; =UNK04_0220C320
- mov r4, r0
- bl MOD04_021DAC98
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #1
- ldmneia sp!, {r4, pc}
- add r0, r4, #0x1000
- ldr r0, [r0, #0x9f4]
- ldr r1, _021DB5FC ; =UNK04_0220C148
- bl strstr
- add r0, r0, #4
- bl strlen
- movs r3, r0
- beq _021DB5E8
- ldr r2, _021DB600 ; =UNK04_0220C328
- add r0, sp, #0
- mov r1, #7
- bl OS_SNPrintf
- ldr r1, _021DB604 ; =UNK04_0220C32C
- add r2, sp, #0
- mov r0, r4
- bl MOD04_021DAC98
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #1
- ldmneia sp!, {r4, pc}
-_021DB5E8:
- mov r0, #0
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB5F4: .word UNK04_0220C314
-_021DB5F8: .word UNK04_0220C320
-_021DB5FC: .word UNK04_0220C148
-_021DB600: .word UNK04_0220C328
-_021DB604: .word UNK04_0220C32C
- arm_func_end MOD04_021DB570
-
- arm_func_start MOD04_021DB608
-MOD04_021DB608: ; 0x021DB608
- stmdb sp!, {r4, r5, r6, lr}
- mov r5, r1
- ldr r2, _021DB714 ; =0x00001C10
- mov r6, r0
- ldr r4, [r5, #0xc]
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021DB718 ; =0x00001004
- add r0, r6, #0x1000
- mvn r2, #0
- str r2, [r0, #0xa2c]
- mov lr, r5
- str r2, [r0, #0xa30]
- add ip, r6, r1
- ldmia lr!, {r0, r1, r2, r3}
- stmia ip!, {r0, r1, r2, r3}
- ldmia lr, {r0, r1, r2}
- stmia ip, {r0, r1, r2}
- ldr r0, _021DB71C ; =UNK04_0220C33C
- ldr r1, _021DB720 ; =0x00000B68
- blx r4
- add r1, r6, #0x1000
- str r0, [r1, #0x9c8]
- ldr r0, [r1, #0x9c8]
- cmp r0, #0
- moveq r0, #1
- streq r0, [r1, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _021DB724 ; =UNK04_0220C354
- ldr r1, _021DB728 ; =0x000005EA
- blx r4
- add r2, r6, #0x1000
- str r0, [r2, #0x9cc]
- ldr r0, [r2, #0x9cc]
- cmp r0, #0
- moveq r0, #1
- streq r0, [r2, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r1, _021DB72C ; =0x00001A04
- ldr r2, [r2, #0xc]
- mov r0, r6
- add r1, r6, r1
- bl MOD04_021DAA50
- cmp r0, #0
- addeq r1, r6, #0x1000
- moveq r0, #1
- streq r0, [r1, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r1, [r5]
- mov r0, r6
- bl MOD04_021DA7E8
- cmp r0, #0
- addeq r1, r6, #0x1000
- moveq r0, #1
- streq r0, [r1, #0x20]
- ldmeqia sp!, {r4, r5, r6, pc}
- mov r0, r6
- bl MOD04_021DAD88
- add r1, r6, #0x1000
- str r0, [r1, #0x20]
- ldr r0, [r1, #0x20]
- cmp r0, #0
- moveq r0, #0xff
- streqb r0, [r1]
- add r0, r6, #0x1000
- ldr r0, [r0, #0x20]
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DB714: .word 0x00001C10
-_021DB718: .word 0x00001004
-_021DB71C: .word UNK04_0220C33C
-_021DB720: .word 0x00000B68
-_021DB724: .word UNK04_0220C354
-_021DB728: .word 0x000005EA
-_021DB72C: .word 0x00001A04
- arm_func_end MOD04_021DB608
-
- arm_func_start MOD04_021DB730
-MOD04_021DB730: ; 0x021DB730
- stmdb sp!, {r4, lr}
- ldr r2, _021DB770 ; =UNK04_02210484
- ldr r1, _021DB774 ; =0x000011DC
- ldr r2, [r2]
- mov r4, r0
- add r0, r2, r1
- bl OS_LockMutex
- ldr r2, _021DB770 ; =UNK04_02210484
- ldr r1, _021DB774 ; =0x000011DC
- ldr r0, [r2]
- add r0, r0, #0x1000
- str r4, [r0]
- ldr r0, [r2]
- add r0, r0, r1
- bl OS_UnlockMutex
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DB770: .word UNK04_02210484
-_021DB774: .word 0x000011DC
- arm_func_end MOD04_021DB730
-
- arm_func_start MOD04_021DB778
-MOD04_021DB778: ; 0x021DB778
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0x2d4
- ldr r5, _021DC670 ; =UNK04_02210484
- mov r0, #0
- str r0, [sp]
- ldr r0, [r5]
- ldr r7, [sp]
- add r0, r0, #0x1000
- ldr sb, [r0, #0x108]
- ldr r8, [r0, #0x10c]
- mov r0, r7
- str r0, [sp, #8]
- str r0, [sp, #0x1c]
- mvn r0, #2
- str r0, [sp, #0x20]
- mov r0, r7
- str r0, [sp, #0x24]
- mvn r0, #3
- str r0, [sp, #0x28]
- mov r0, r7
- str r0, [sp, #0x2c]
- mov r0, #0x1000
- str r0, [sp, #0x14]
- mov r0, #5
- str r0, [sp, #0x30]
- mov r0, r7
- str r0, [sp, #0x34]
- str r0, [sp, #0x38]
- str r0, [sp, #0x3c]
- mov r0, #4
- str r0, [sp, #0x40]
- mov r0, r7
- str r0, [sp, #0x44]
- str r0, [sp, #0x48]
- str r0, [sp, #0x4c]
- str r0, [sp, #0x50]
- str r0, [sp, #0x58]
- str r0, [sp, #0x54]
- mvn r0, #4
- str r0, [sp, #0x5c]
- mov r0, r7
- str r0, [sp, #0x60]
- mvn r0, #1
- ldr r4, _021DC674 ; =UNK04_02210490
- mov r6, #1
- str r0, [sp, #0x18]
-_021DB830:
- ldr r0, _021DC678 ; =UNK04_02210494
- ldr r1, [sp, #0x14]
- str r6, [r0, #4]
- str r1, [r0, #8]
- ldr r1, _021DC67C ; =0x00004E20
- str sb, [r0, #0xc]
- str r1, [r0, #0x18]
- str r8, [r0, #0x10]
- ldr r0, _021DC680 ; =UNK04_0220C36C
- ldr r1, [r5]
- ldr r2, [r0]
- ldr r0, _021DC678 ; =UNK04_02210494
- add r1, r1, #0x1000
- str r2, [r0]
- ldr r0, [sp, #0x18]
- str r0, [r1, #4]
- ldr r0, [r4]
- ldr r1, _021DC678 ; =UNK04_02210494
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DB89C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DB89C:
- ldr r0, [r4]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DB8C4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DB8C4:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- sub r1, r0, #1
- ldr r0, [r4]
- bl MOD04_021DB4A4
- ldr r1, [r4]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DB8FC
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DB8FC:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DB91C
- cmp r1, #8
- beq _021DB948
- b _021DB930
-_021DB91C:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DB930:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DB948:
- ldr r1, [sp, #0x1c]
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021DB970
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DB970:
- ldr r0, [r4]
- ldr r1, _021DC68C ; =UNK04_0220C418
- bl MOD04_021DA388
- bl atol
- mov sl, r0
- ldr r0, _021DC690 ; =errno
- ldr r0, [r0]
- cmp r0, #0x22
- bne _021DB9A0
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DB9A0:
- cmp sl, #0xc8
- beq _021DBCB4
- ldr r0, _021DC694 ; =0x0000012E
- cmp sl, r0
- bne _021DBC9C
- ldr r0, _021DC698 ; =UNK04_0221048C
- str r6, [r0]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r1, [r0, #0x118]
- cmp r1, #0
- beq _021DBC0C
- ldr r1, _021DC674 ; =UNK04_02210490
- mvn r2, #5
- str r2, [r0, #4]
- ldr r0, [r1]
- bl MOD04_021DAE4C
- ldr r2, _021DC678 ; =UNK04_02210494
- ldr r0, _021DC69C ; =UNK04_0220BEB4
- ldr r3, _021DC67C ; =0x00004E20
- ldr r0, [r0]
- mov r5, #0
- mov r4, #0x200
- ldr r1, _021DC6A0 ; =UNK04_0220C424
- str r0, [r2]
- str r5, [r2, #4]
- str r4, [r2, #8]
- str sb, [r2, #0xc]
- str r8, [r2, #0x10]
- str r3, [r2, #0x18]
- bl strcmp
- cmp r0, #0
- ldrne r0, _021DC678 ; =UNK04_02210494
- movne r1, #1
- strne r1, [r0, #0x14]
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r1, _021DC678 ; =UNK04_02210494
- ldr r0, [r0]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DBA5C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBA5C:
- add r0, sp, #0x240
- bl MOD04_021DA238
- cmp r0, #0
- beq _021DBA88
- ldr r0, _021DC674 ; =UNK04_02210490
- add r1, sp, #0x240
- ldr r0, [r0]
- mov r2, #1
- bl MOD04_021D9C2C
- cmp r0, #0
- bne _021DBAA0
-_021DBA88:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBAA0:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r1, _021DC6A4 ; =UNK04_0220C444
- ldr r0, [r0]
- ldr r2, _021DC6A8 ; =UNK04_0220C44C
- mov r3, #7
- bl MOD04_021DAB68
- cmp r0, #0
- bne _021DBAF8
- ldr r0, _021DC670 ; =UNK04_02210484
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r4, [r0, #0x118]
- mov r0, r4
- bl strlen
- ldr r1, _021DC674 ; =UNK04_02210490
- mov r3, r0
- ldr r0, [r1]
- ldr r1, _021DC6AC ; =UNK04_0220C454
- mov r2, r4
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021DBB10
-_021DBAF8:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBB10:
- ldr r1, _021DC670 ; =UNK04_02210484
- ldr r0, _021DC6B0 ; =UNK04_0220C464
- ldr r1, [r1]
- mov r2, #0
- add r1, r1, #0x1000
- ldr r1, [r1, #0x118]
- blx r8
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r0, [r0]
- ldr r1, _021DC674 ; =UNK04_02210490
- add r0, r0, #0x1000
- str r2, [r0, #0x118]
- ldr r0, [r1]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DBB6C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBB6C:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- ldr r2, _021DC674 ; =UNK04_02210490
- sub r1, r0, #1
- ldr r0, [r2]
- bl MOD04_021DB4A4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DBBAC
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DBBAC:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DBBD0
- cmp r1, #8
- beq _021DBBFC
- b _021DBBE4
-_021DBBD0:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DBBE4:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DBBFC:
- bl MOD04_021DAE4C
- mov r0, #7
- bl MOD04_021DB730
- b _021DC614
-_021DBC0C:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr fp, [r1, #0xa04]
- cmp fp, #0
- bne _021DBC30
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DBC30:
- mov r0, fp
- bl strlen
- add r1, r0, #1
- ldr r0, _021DC6B4 ; =UNK04_0220C394
- blx sb
- ldr r1, [r5]
- add r1, r1, #0x1000
- str r0, [r1, #0x114]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x114]
- str r0, [sp, #0xc]
- cmp r0, #0
- bne _021DBC80
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DBC80:
- mov r0, fp
- bl strlen
- mov r2, r0
- ldr r0, [sp, #0xc]
- mov r1, fp
- bl strncpy
- b _021DBCB4
-_021DBC9C:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #0xa
- bl MOD04_021DB730
- b _021DC614
-_021DBCB4:
- ldr r0, [r4]
- bl MOD04_021DAE4C
- add r0, sp, #0x68
- bl DWCi_BM_GetWiFiInfo
- ldr r2, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- mov r0, #0
- cmp r1, r0
- cmpeq r2, r0
- bne _021DBDEC
- ldr r1, [r5]
- ldr r0, _021DC6B8 ; =UNK04_022104B0
- add r2, r1, #0x1000
- ldr r1, [sp, #0x20]
- str r1, [r2, #4]
- ldr r2, [sp, #0x24]
- mov r1, r0
- strh r2, [r1]
- strb r2, [r1, #0x34]
- ldr r2, [r5]
- ldr r1, [r4]
- add r3, r2, #0x1000
- ldr fp, [r3, #0x108]
- mov r2, r0
- str fp, [r2, #0x40]
- ldr r3, [r3, #0x10c]
- str r3, [r2, #0x44]
- bl MOD04_021D9ACC
- cmp r0, #0
- beq _021DBD38
- mov r0, #5
- bl MOD04_021DB730
- b _021DC614
-_021DBD38:
- bl MOD04_021D98DC
- bl MOD04_021D988C
- cmp r0, #0x15
- beq _021DBDE8
- bl MOD04_021D988C
- cmp r0, #9
- bne _021DBD6C
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
- b _021DBDD8
-_021DBD6C:
- add r0, sp, #0x7c
- bl MOD04_021D97F8
- ldr r0, _021DC6BC ; =UNK04_02210488
- ldr r0, [r0]
- cmp r0, #1
- bne _021DBDC4
- ldr r1, [sp, #0x7c]
- ldr r0, _021DC6C0 ; =0xFFFFA4FA
- cmp r1, r0
- beq _021DBDA0
- bl MOD04_021D988C
- cmp r0, #0xb
- bne _021DBDC4
-_021DBDA0:
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
- bl MOD04_021D991C
- mov r0, #0xb
- bl MOD04_021DB730
- b _021DC614
-_021DBDC4:
- ldr r0, _021DC670 ; =UNK04_02210484
- ldr r1, [sp, #0x7c]
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DBDD8:
- bl MOD04_021D991C
- mov r0, #6
- bl MOD04_021DB730
- b _021DC614
-_021DBDE8:
- bl MOD04_021D991C
-_021DBDEC:
- cmp sl, #0xc8
- bne _021DBE14
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DBE14:
- ldr r0, [r5]
- ldr r1, _021DC6A0 ; =UNK04_0220C424
- add r2, r0, #0x1000
- ldr r0, [sp, #0x28]
- str r0, [r2, #4]
- ldr r0, _021DC678 ; =UNK04_02210494
- ldr r2, [sp, #0x2c]
- str sb, [r0, #0xc]
- str r2, [r0, #4]
- ldr r2, [sp, #0x14]
- str r8, [r0, #0x10]
- str r2, [r0, #8]
- ldr r2, _021DC6C4 ; =0x00009C40
- str r2, [r0, #0x18]
- ldr r0, _021DC69C ; =UNK04_0220BEB4
- ldr r2, _021DC678 ; =UNK04_02210494
- ldr r0, [r0]
- str r0, [r2]
- bl strcmp
- cmp r0, #0
- ldrne r0, _021DC678 ; =UNK04_02210494
- ldr r1, _021DC678 ; =UNK04_02210494
- strne r6, [r0, #0x14]
- ldr r0, [r4]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DBE98
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBE98:
- add r0, sp, #0x240
- bl MOD04_021DA238
- cmp r0, #0
- beq _021DBEC0
- ldr r0, [r4]
- add r1, sp, #0x240
- mov r2, r6
- bl MOD04_021D9C2C
- cmp r0, #0
- bne _021DBED8
-_021DBEC0:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBED8:
- ldr r0, [r4]
- ldr r1, _021DC6A4 ; =UNK04_0220C444
- ldr r2, _021DC6C8 ; =UNK04_0220C484
- ldr r3, [sp, #0x30]
- bl MOD04_021DAB68
- cmp r0, #0
- bne _021DBF24
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr sl, [r0, #0x114]
- mov r0, sl
- bl strlen
- mov r3, r0
- ldr r0, [r4]
- ldr r1, _021DC6CC ; =UNK04_0220C48C
- mov r2, sl
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021DBF3C
-_021DBF24:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DBF3C:
- ldr r1, [r5]
- ldr r0, _021DC6D0 ; =UNK04_0220C3B0
- add r1, r1, #0x1000
- ldr r2, [sp, #0x34]
- ldr r1, [r1, #0x114]
- blx r8
- ldr r0, [r5]
- add r1, r0, #0x1000
- ldr r0, [sp, #0x38]
- str r0, [r1, #0x114]
- ldr r0, [r4]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DBF8C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DBF8C:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- sub r1, r0, #1
- ldr r0, [r4]
- bl MOD04_021DB4A4
- ldr r1, [r4]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DBFC4
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DBFC4:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DC02C
- cmp r1, #3
- beq _021DBFEC
- cmp r1, #8
- beq _021DC058
- b _021DC040
-_021DBFEC:
- bl MOD04_021DAE4C
- ldr r0, _021DC6BC ; =UNK04_02210488
- ldr r0, [r0]
- cmp r0, #1
- bne _021DC020
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DC020:
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DC02C:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DC040:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DC058:
- ldr r1, [sp, #0x3c]
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021DC080
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC080:
- ldr r0, [r4]
- ldr r1, _021DC68C ; =UNK04_0220C418
- bl MOD04_021DA388
- bl atol
- mov sl, r0
- ldr r0, _021DC690 ; =errno
- ldr r0, [r0]
- cmp r0, #0x22
- bne _021DC0BC
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC0BC:
- cmp sl, #0xc8
- beq _021DC118
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- ldr r0, _021DC6BC ; =UNK04_02210488
- ldr r0, [r0]
- cmp r0, #1
- bne _021DC10C
- ldr r0, _021DC694 ; =0x0000012E
- cmp sl, r0
- bne _021DC10C
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DC10C:
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC118:
- ldr r0, [r4]
- ldr r1, _021DC6D4 ; =UNK04_0220C494
- ldr r3, [sp, #0x40]
- add r2, sp, #0x64
- bl MOD04_021DA334
- cmp r0, #0
- bgt _021DC14C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC14C:
- add r0, sp, #0x64
- bl atol
- ldr r1, _021DC690 ; =errno
- ldr r1, [r1]
- cmp r1, #0x22
- bne _021DC17C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC17C:
- ldr r1, _021DC6BC ; =UNK04_02210488
- ldr r1, [r1]
- cmp r1, #1
- bne _021DC1B4
- cmp r0, #0x72
- bne _021DC1B4
- ldr r0, _021DC670 ; =UNK04_02210484
- mov r2, #0
- ldr r1, [r0]
- mov r0, #0xb
- add r1, r1, #0x1000
- str r2, [r1, #4]
- bl MOD04_021DB730
- b _021DC614
-_021DC1B4:
- cmp r0, #0x64
- blt _021DC1D4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #6
- bl MOD04_021DB730
- b _021DC614
-_021DC1D4:
- ldr r2, [sp, #0x44]
- ldr r0, [r4]
- ldr r1, _021DC6D8 ; =UNK04_0220C4A0
- mov r3, r2
- bl MOD04_021DA334
- mov fp, r0
- cmp fp, #0
- bgt _021DC20C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC20C:
- ldr r2, [sp, #0x48]
- ldr r0, [r4]
- ldr r1, _021DC6DC ; =UNK04_0220C4A4
- mov r3, r2
- bl MOD04_021DA334
- str r0, [sp, #4]
- cmp r0, #0
- bgt _021DC244
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC244:
- ldr r2, [sp, #0x4c]
- ldr r0, [r4]
- ldr r1, _021DC6E0 ; =UNK04_0220C4AC
- mov r3, r2
- bl MOD04_021DA334
- mov sl, r0
- ldr r0, _021DC6E4 ; =UNK04_0220C3CC
- add r1, fp, #1
- blx sb
- str r0, [sp]
- cmp r0, #0
- bne _021DC28C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC28C:
- ldr r1, [sp, #4]
- ldr r0, _021DC6E8 ; =UNK04_0220C3D8
- add r1, r1, #1
- blx sb
- movs r7, r0
- bne _021DC2BC
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC2BC:
- cmp sl, #0
- ble _021DC2F4
- ldr r0, _021DC6EC ; =UNK04_0220C3E8
- add r1, sl, #1
- blx sb
- str r0, [sp, #8]
- cmp r0, #0
- bne _021DC2F4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC2F4:
- ldr r0, [r4]
- ldr r1, _021DC6D8 ; =UNK04_0220C4A0
- ldr r2, [sp]
- add r3, fp, #1
- bl MOD04_021DA334
- cmp r0, #0
- bge _021DC328
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC328:
- ldr r1, [sp, #4]
- ldr r2, [sp, #0x50]
- add r3, r1, #1
- ldr r1, [sp]
- strb r2, [r1, r0]
- ldr r0, [r4]
- ldr r1, _021DC6DC ; =UNK04_0220C4A4
- mov r2, r7
- bl MOD04_021DA334
- cmp r0, #0
- bge _021DC36C
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC36C:
- ldr r1, [sp, #0x54]
- cmp sl, #0
- strb r1, [r7, r0]
- mov fp, r1
- ble _021DC404
- ldr r0, [r4]
- ldr r1, _021DC6E0 ; =UNK04_0220C4AC
- ldr r2, [sp, #8]
- add r3, sl, #1
- bl MOD04_021DA334
- cmp r0, #0
- bge _021DC3B4
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC3B4:
- ldr r2, [sp, #0x58]
- ldr r1, [sp, #8]
- strb r2, [r1, r0]
- mov r0, r1
- bl atol
- ldr r1, _021DC690 ; =errno
- ldr r1, [r1]
- cmp r1, #0x22
- bne _021DC3F0
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #9
- bl MOD04_021DB730
- b _021DC614
-_021DC3F0:
- mov r1, #0x3e8
- mul fp, r0, r1
- ldr r0, _021DC6F0 ; =0x0002BF20
- cmp fp, r0
- movgt fp, r0
-_021DC404:
- ldr r0, [r4]
- bl MOD04_021DAE4C
- ldr r0, [r5]
- ldr r1, _021DC678 ; =UNK04_02210494
- add r2, r0, #0x1000
- ldr r0, [sp, #0x5c]
- str r0, [r2, #4]
- mov r0, r1
- ldr r2, [sp]
- str sb, [r0, #0xc]
- str r2, [r0]
- ldr r2, [sp, #0x60]
- str r8, [r0, #0x10]
- str r2, [r0, #4]
- ldr r2, [sp, #0x14]
- str r2, [r0, #8]
- ldr r2, _021DC6F4 ; =0x0001D4C0
- str r2, [r0, #0x18]
- ldr r0, [r4]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DC474
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DC474:
- ldr r0, [r4]
- mov r1, r7
- bl MOD04_021DAACC
- cmp r0, #0
- beq _021DC4A0
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #8
- bl MOD04_021DB730
- b _021DC614
-_021DC4A0:
- ldr r0, [r4]
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DC4C8
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #1
- bl MOD04_021DB730
- b _021DC614
-_021DC4C8:
- ldr r0, _021DC684 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- sub r1, r0, #1
- ldr r0, [r4]
- bl MOD04_021DB4A4
- ldr r1, [r4]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- beq _021DC500
- ldr r0, _021DC688 ; =0x00001B34
- add r0, r1, r0
- bl OS_JoinThread
-_021DC500:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr r1, [r1, #0x20]
- cmp r1, #2
- beq _021DC520
- cmp r1, #8
- beq _021DC54C
- b _021DC534
-_021DC520:
- ldr r0, _021DC670 ; =UNK04_02210484
- mvn r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
-_021DC534:
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #3
- bl MOD04_021DB730
- b _021DC614
-_021DC54C:
- mov r1, r6
- bl MOD04_021DA3DC
- cmp r0, #1
- beq _021DC574
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC574:
- ldr r0, [r4]
- add r1, r0, #0x1000
- ldr sl, [r1, #0xa04]
- cmp sl, #0
- bne _021DC598
- bl MOD04_021DAE4C
- mov r0, #2
- bl MOD04_021DB730
- b _021DC614
-_021DC598:
- mov r0, sl
- bl strlen
- add r1, r0, #1
- ldr r0, _021DC6F8 ; =UNK04_0220C3F8
- blx sb
- ldr r1, [r5]
- add r1, r1, #0x1000
- str r0, [r1, #0x118]
- ldr r0, [r5]
- add r0, r0, #0x1000
- ldr r0, [r0, #0x118]
- str r0, [sp, #0x10]
- cmp r0, #0
- bne _021DC5E8
- ldr r0, _021DC674 ; =UNK04_02210490
- ldr r0, [r0]
- bl MOD04_021DAE4C
- mov r0, #4
- bl MOD04_021DB730
- b _021DC614
-_021DC5E8:
- mov r0, sl
- bl strlen
- mov r2, r0
- ldr r0, [sp, #0x10]
- mov r1, sl
- bl strncpy
- ldr r0, [r4]
- bl MOD04_021DAE4C
- mov r0, fp
- bl OS_Sleep
- b _021DB830
-_021DC614:
- ldr r0, [sp]
- cmp r0, #0
- beq _021DC630
- ldr r0, _021DC6FC ; =UNK04_0220C4B4
- ldr r1, [sp]
- mov r2, #0
- blx r8
-_021DC630:
- cmp r7, #0
- beq _021DC648
- ldr r0, _021DC700 ; =UNK04_0220C4C0
- mov r1, r7
- mov r2, #0
- blx r8
-_021DC648:
- ldr r0, [sp, #8]
- cmp r0, #0
- addeq sp, sp, #0x2d4
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, _021DC704 ; =UNK04_0220C4CC
- ldr r1, [sp, #8]
- mov r2, #0
- blx r8
- add sp, sp, #0x2d4
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DC670: .word UNK04_02210484
-_021DC674: .word UNK04_02210490
-_021DC678: .word UNK04_02210494
-_021DC67C: .word 0x00004E20
-_021DC680: .word UNK04_0220C36C
-_021DC684: .word OSi_ThreadInfo
-_021DC688: .word 0x00001B34
-_021DC68C: .word UNK04_0220C418
-_021DC690: .word errno
-_021DC694: .word 0x0000012E
-_021DC698: .word UNK04_0221048C
-_021DC69C: .word UNK04_0220BEB4
-_021DC6A0: .word UNK04_0220C424
-_021DC6A4: .word UNK04_0220C444
-_021DC6A8: .word UNK04_0220C44C
-_021DC6AC: .word UNK04_0220C454
-_021DC6B0: .word UNK04_0220C464
-_021DC6B4: .word UNK04_0220C394
-_021DC6B8: .word UNK04_022104B0
-_021DC6BC: .word UNK04_02210488
-_021DC6C0: .word 0xFFFFA4FA
-_021DC6C4: .word 0x00009C40
-_021DC6C8: .word UNK04_0220C484
-_021DC6CC: .word UNK04_0220C48C
-_021DC6D0: .word UNK04_0220C3B0
-_021DC6D4: .word UNK04_0220C494
-_021DC6D8: .word UNK04_0220C4A0
-_021DC6DC: .word UNK04_0220C4A4
-_021DC6E0: .word UNK04_0220C4AC
-_021DC6E4: .word UNK04_0220C3CC
-_021DC6E8: .word UNK04_0220C3D8
-_021DC6EC: .word UNK04_0220C3E8
-_021DC6F0: .word 0x0002BF20
-_021DC6F4: .word 0x0001D4C0
-_021DC6F8: .word UNK04_0220C3F8
-_021DC6FC: .word UNK04_0220C4B4
-_021DC700: .word UNK04_0220C4C0
-_021DC704: .word UNK04_0220C4CC
- arm_func_end MOD04_021DB778
-
- arm_func_start MOD04_021DC708
-MOD04_021DC708: ; 0x021DC708
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r0, _021DC788 ; =UNK04_02210484
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x188]
- cmp r0, #0
- beq _021DC740
- ldr r0, _021DC78C ; =0x0000111C
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {pc}
-_021DC740:
- ldr r1, _021DC788 ; =UNK04_02210484
- ldr r0, _021DC78C ; =0x0000111C
- ldr r2, [r1]
- mov r3, #0x1000
- ldr r1, _021DC790 ; =MOD04_021DB778
- str r3, [sp]
- mov ip, #0x10
- add r0, r2, r0
- add r3, r2, #0x1000
- str ip, [sp, #4]
- bl OS_CreateThread
- ldr r1, _021DC788 ; =UNK04_02210484
- ldr r0, _021DC78C ; =0x0000111C
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_WakeupThreadDirect
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021DC788: .word UNK04_02210484
-_021DC78C: .word 0x0000111C
-_021DC790: .word MOD04_021DB778
- arm_func_end MOD04_021DC708
-
- arm_func_start MOD04_021DC794
-MOD04_021DC794: ; 0x021DC794
- ldr r0, _021DC7A8 ; =UNK04_02210484
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #4]
- bx lr
- .align 2, 0
-_021DC7A8: .word UNK04_02210484
- arm_func_end MOD04_021DC794
-
- arm_func_start MOD04_021DC7AC
-MOD04_021DC7AC: ; 0x021DC7AC
- stmdb sp!, {r4, lr}
- ldr r1, _021DC7E8 ; =UNK04_02210484
- ldr r0, _021DC7EC ; =0x000011DC
- ldr r1, [r1]
- add r0, r1, r0
- bl OS_LockMutex
- ldr r1, _021DC7E8 ; =UNK04_02210484
- ldr r0, _021DC7EC ; =0x000011DC
- ldr r2, [r1]
- add r1, r2, #0x1000
- add r0, r2, r0
- ldr r4, [r1]
- bl OS_UnlockMutex
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DC7E8: .word UNK04_02210484
-_021DC7EC: .word 0x000011DC
- arm_func_end MOD04_021DC7AC
-
- arm_func_start MOD04_021DC7F0
-MOD04_021DC7F0: ; 0x021DC7F0
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DC864 ; =UNK04_02210484
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DC868 ; =UNK04_02210490
- ldr r0, [r0]
- cmp r0, #0
- beq _021DC820
- bl MOD04_021DB440
-_021DC820:
- bl MOD04_021D9974
- ldr r0, _021DC864 ; =UNK04_02210484
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x188]
- cmp r0, #0
- beq _021DC848
- ldr r0, _021DC86C ; =0x0000111C
- add r0, r1, r0
- bl OS_JoinThread
-_021DC848:
- ldr r0, _021DC864 ; =UNK04_02210484
- mvn r1, #6
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #4]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DC864: .word UNK04_02210484
-_021DC868: .word UNK04_02210490
-_021DC86C: .word 0x0000111C
- arm_func_end MOD04_021DC7F0
-
- arm_func_start MOD04_021DC870
-MOD04_021DC870: ; 0x021DC870
- stmdb sp!, {r4, lr}
- ldr r1, _021DC958 ; =UNK04_02210484
- ldr r0, _021DC95C ; =UNK04_02210490
- ldr r1, [r1]
- ldr r0, [r0]
- add r1, r1, #0x1000
- cmp r0, #0
- ldr r4, [r1, #0x10c]
- beq _021DC8B8
- bl MOD04_021DAE4C
- ldr r1, _021DC95C ; =UNK04_02210490
- ldr r0, _021DC960 ; =UNK04_0220C4D8
- ldr r1, [r1]
- mov r2, #0
- blx r4
- ldr r0, _021DC95C ; =UNK04_02210490
- mov r1, #0
- str r1, [r0]
-_021DC8B8:
- bl MOD04_021D991C
- ldr r0, _021DC958 ; =UNK04_02210484
- ldr r0, [r0]
- cmp r0, #0
- ldmeqia sp!, {r4, pc}
- add r0, r0, #0x1000
- ldr r1, [r0, #0x114]
- cmp r1, #0
- beq _021DC8FC
- ldr r0, _021DC964 ; =UNK04_0220C3B0
- mov r2, #0
- blx r4
- ldr r0, _021DC958 ; =UNK04_02210484
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #0x114]
-_021DC8FC:
- ldr r0, _021DC958 ; =UNK04_02210484
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r1, [r0, #0x118]
- cmp r1, #0
- beq _021DC934
- ldr r0, _021DC968 ; =UNK04_0220C464
- mov r2, #0
- blx r4
- ldr r0, _021DC958 ; =UNK04_02210484
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- str r1, [r0, #0x118]
-_021DC934:
- ldr r1, _021DC958 ; =UNK04_02210484
- ldr r0, _021DC96C ; =UNK04_0220C4E8
- ldr r1, [r1]
- mov r2, #0
- blx r4
- ldr r0, _021DC958 ; =UNK04_02210484
- mov r1, #0
- str r1, [r0]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DC958: .word UNK04_02210484
-_021DC95C: .word UNK04_02210490
-_021DC960: .word UNK04_0220C4D8
-_021DC964: .word UNK04_0220C3B0
-_021DC968: .word UNK04_0220C464
-_021DC96C: .word UNK04_0220C4E8
- arm_func_end MOD04_021DC870
-
- arm_func_start MOD04_021DC970
-MOD04_021DC970: ; 0x021DC970
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r1, _021DCA5C ; =UNK04_02210484
- mov r5, r0
- ldr r0, [r1]
- ldr r4, [r5]
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #4
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021DCA60 ; =UNK04_0220C4FC
- ldr r1, _021DCA64 ; =0x000011F4
- blx r4
- ldr r1, _021DCA5C ; =UNK04_02210484
- cmp r0, #0
- str r0, [r1]
- addeq sp, sp, #4
- moveq r0, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, _021DCA64 ; =0x000011F4
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021DCA5C ; =UNK04_02210484
- ldr r2, _021DCA68 ; =0xFFFE7961
- ldr r0, [r1]
- ldr r3, _021DCA6C ; =0x00001108
- add r0, r0, #0x1000
- str r2, [r0, #4]
- ldr ip, [r1]
- ldmia r5, {r0, r1, r2}
- add r3, ip, r3
- stmia r3, {r0, r1, r2}
- ldr r0, _021DCA70 ; =UNK04_02210490
- ldr r0, [r0]
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #4
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021DCA74 ; =UNK04_0220C510
- ldr r1, _021DCA78 ; =0x00001C10
- blx r4
- ldr r1, _021DCA70 ; =UNK04_02210490
- cmp r0, #0
- str r0, [r1]
- addeq sp, sp, #4
- moveq r0, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r1, _021DCA5C ; =UNK04_02210484
- ldr r0, _021DCA7C ; =0x000011DC
- ldr r2, [r1]
- ldr r1, _021DCA80 ; =UNK04_0221048C
- mov r3, #0
- add r0, r2, r0
- str r3, [r1]
- bl OS_InitMutex
- bl MOD04_021DC708
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DCA5C: .word UNK04_02210484
-_021DCA60: .word UNK04_0220C4FC
-_021DCA64: .word 0x000011F4
-_021DCA68: .word 0xFFFE7961
-_021DCA6C: .word 0x00001108
-_021DCA70: .word UNK04_02210490
-_021DCA74: .word UNK04_0220C510
-_021DCA78: .word 0x00001C10
-_021DCA7C: .word 0x000011DC
-_021DCA80: .word UNK04_0221048C
- arm_func_end MOD04_021DC970
-
- arm_func_start MOD04_021DCA84
-MOD04_021DCA84: ; 0x021DCA84
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #0x40
- mov r6, r0
- bl strlen
- mov r4, r0
- ldr r0, _021DCCB4 ; =UNK04_0220C580
- bl strlen
- cmp r4, r0
- bne _021DCCA8
- ldrsb r0, [r6, #7]
- cmp r0, #0x20
- bne _021DCCA8
- ldrsb r0, [r6, #0xb]
- cmp r0, #0x20
- bne _021DCCA8
- ldrsb r0, [r6, #0x10]
- cmp r0, #0x20
- bne _021DCCA8
- ldrsb r0, [r6, #0x13]
- cmp r0, #0x3a
- bne _021DCCA8
- ldrsb r0, [r6, #0x16]
- cmp r0, #0x3a
- bne _021DCCA8
- ldrsb r0, [r6, #0x19]
- cmp r0, #0x20
- bne _021DCCA8
- add r0, sp, #0
- bl RTC_GetDate
- cmp r0, #0
- bne _021DCCA8
- add r0, sp, #0x10
- bl RTC_GetTime
- cmp r0, #0
- bne _021DCCA8
- add r0, sp, #0
- add r1, sp, #0x10
- bl RTC_ConvertDateTimeToSecond
- mov r4, r0
- mov r5, r1
- mvn r0, #0
- cmp r5, r0
- cmpeq r4, r0
- beq _021DCCA8
- add r0, sp, #0x1c
- mov r1, r6
- bl strcpy
- mov r2, #0
- ldr r1, _021DCCB8 ; =errno
- add r0, sp, #0x28
- strb r2, [sp, #0x23]
- strb r2, [sp, #0x27]
- strb r2, [sp, #0x2c]
- strb r2, [sp, #0x2f]
- strb r2, [sp, #0x32]
- strb r2, [sp, #0x35]
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp]
- ldr r1, [r1]
- cmp r1, #0x22
- beq _021DCCA8
- sub r1, r0, #0x7d0
- mov r0, #0xd
- str r1, [sp]
- str r0, [sp, #4]
- mov r8, #0
- ldr r7, _021DCCBC ; =UNK04_0220C550
- add r6, sp, #0x24
-_021DCB9C:
- ldr r0, [r7, r8, lsl #2]
- mov r1, r6
- bl strcmp
- cmp r0, #0
- addeq r0, r8, #1
- streq r0, [sp, #4]
- beq _021DCBC4
- add r8, r8, #1
- cmp r8, #0xc
- blt _021DCB9C
-_021DCBC4:
- ldr r0, [sp, #4]
- cmp r0, #0xc
- bhi _021DCCA8
- ldr r1, _021DCCB8 ; =errno
- mov r2, #0
- add r0, sp, #0x21
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #8]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- mov r2, #0
- add r0, sp, #0x2d
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #0x10]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- mov r2, #0
- add r0, sp, #0x30
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #0x14]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- mov r2, #0
- add r0, sp, #0x33
- str r2, [r1]
- bl atol
- ldr r1, _021DCCB8 ; =errno
- str r0, [sp, #0x18]
- ldr r0, [r1]
- cmp r0, #0x22
- beq _021DCCA8
- add r0, sp, #0
- add r1, sp, #0x10
- bl RTC_ConvertDateTimeToSecond
- mvn r2, #0
- cmp r1, r2
- cmpeq r0, r2
- beq _021DCCA8
- subs r4, r4, r0
- ldr r2, _021DCCC0 ; =UNK04_022104FC
- sbc r3, r5, r1
- ldr r1, _021DCCC4 ; =UNK04_022104F8
- mov r0, #1
- str r3, [r2, #4]
- str r0, [r1]
- add sp, sp, #0x40
- str r4, [r2]
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
-_021DCCA8:
- mov r0, #0
- add sp, sp, #0x40
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DCCB4: .word UNK04_0220C580
-_021DCCB8: .word errno
-_021DCCBC: .word UNK04_0220C550
-_021DCCC0: .word UNK04_022104FC
-_021DCCC4: .word UNK04_022104F8
- arm_func_end MOD04_021DCA84
-
- arm_func_start MOD04_021DCCC8
-MOD04_021DCCC8: ; 0x021DCCC8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r0, _021DCED4 ; =UNK04_02210504
- mov r1, #0
- ldr r0, [r0]
- add r4, r0, #8
- mov r0, r4
- bl MOD04_021DA3DC
- cmp r0, #0
- bne _021DCD08
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCD08:
- ldr r1, _021DCEDC ; =UNK04_0220C5A0
- mov r0, r4
- bl MOD04_021DA388
- cmp r0, #0
- beq _021DCD20
- bl MOD04_021DCA84
-_021DCD20:
- ldr r1, _021DCEE0 ; =UNK04_0220C5A8
- mov r0, r4
- bl MOD04_021DA388
- cmp r0, #0
- bne _021DCD4C
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCD4C:
- bl atol
- ldr r1, _021DCEE4 ; =errno
- mov r2, r0
- ldr r0, [r1]
- cmp r0, #0x22
- bne _021DCD7C
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCD7C:
- cmp r2, #0xc8
- beq _021DCDA0
- ldr r1, _021DCEE8 ; =0xFFFF9E58
- mov r0, #0x10
- sub r1, r1, r2
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCDA0:
- ldr r1, _021DCEEC ; =UNK04_0220C5B4
- add r2, sp, #0
- mov r0, r4
- mov r3, #4
- bl MOD04_021DA334
- cmp r0, #0
- bgt _021DCDD4
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCDD4:
- add r0, sp, #0
- bl atol
- ldr r1, _021DCEE4 ; =errno
- mov r2, r0
- ldr r0, [r1]
- cmp r0, #0x22
- bne _021DCE08
- ldr r1, _021DCED8 ; =0xFFFF9DF3
- mov r0, #0x10
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCE08:
- cmp r2, #0x64
- blt _021DCE2C
- ldr r1, _021DCEF0 ; =0xFFFFA240
- mov r0, #0x10
- sub r1, r1, r2
- bl MOD04_021DD6B0
- add sp, sp, #8
- mov r0, #0
- ldmia sp!, {r4, pc}
-_021DCE2C:
- ldr r0, _021DCED4 ; =UNK04_02210504
- ldr r1, _021DCEF4 ; =UNK04_0220C5C0
- ldr r2, [r0]
- mov r0, r4
- add r2, r2, #0x1000
- ldr r2, [r2, #0xc18]
- mov r3, #0x40
- add r2, r2, #4
- bl MOD04_021DA334
- ldr r0, _021DCED4 ; =UNK04_02210504
- ldr r1, _021DCEF8 ; =UNK04_0220C5C8
- ldr r2, [r0]
- mov r0, r4
- add r2, r2, #0x1000
- ldr r2, [r2, #0xc18]
- mov r3, #0x12c
- add r2, r2, #0x45
- bl MOD04_021DA334
- ldr r1, _021DCEFC ; =UNK04_0220C5D8
- add r2, sp, #0
- mov r0, r4
- mov r3, #1
- bl MOD04_021DA334
- ldrsb r0, [sp]
- cmp r0, #0x59
- bne _021DCEB0
- ldr r0, _021DCED4 ; =UNK04_02210504
- mov r1, #1
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #0xc18]
- str r1, [r0]
- b _021DCEC8
-_021DCEB0:
- ldr r0, _021DCED4 ; =UNK04_02210504
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, #0x1000
- ldr r0, [r0, #0xc18]
- str r1, [r0]
-_021DCEC8:
- mov r0, #1
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DCED4: .word UNK04_02210504
-_021DCED8: .word 0xFFFF9DF3
-_021DCEDC: .word UNK04_0220C5A0
-_021DCEE0: .word UNK04_0220C5A8
-_021DCEE4: .word errno
-_021DCEE8: .word 0xFFFF9E58
-_021DCEEC: .word UNK04_0220C5B4
-_021DCEF0: .word 0xFFFFA240
-_021DCEF4: .word UNK04_0220C5C0
-_021DCEF8: .word UNK04_0220C5C8
-_021DCEFC: .word UNK04_0220C5D8
- arm_func_end MOD04_021DCCC8
-
- arm_func_start MOD04_021DCF00
-MOD04_021DCF00: ; 0x021DCF00
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba8]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- ldr r0, _021DCFF4 ; =0x00001B3C
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #1
- bne _021DCFE4
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0x28]
- cmp r0, #7
- beq _021DCFB0
- cmp r0, #8
- bne _021DCFC4
- bl MOD04_021DCCC8
- cmp r0, #0
- bne _021DCF94
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- add sp, sp, #4
- mov r0, #4
- ldmfd sp!, {pc}
-_021DCF94:
- ldr r0, _021DCFF0 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- add sp, sp, #4
- mov r0, #3
- ldmfd sp!, {pc}
-_021DCFB0:
- add r0, r1, #8
- bl MOD04_021DAE4C
- add sp, sp, #4
- mov r0, #5
- ldmfd sp!, {pc}
-_021DCFC4:
- add r0, r1, #8
- bl MOD04_021DAE4C
- ldr r1, _021DCFF8 ; =0xFFFFA1DB
- mov r0, #0x11
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #4
- ldmfd sp!, {pc}
-_021DCFE4:
- mov r0, #2
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DCFF0: .word UNK04_02210504
-_021DCFF4: .word 0x00001B3C
-_021DCFF8: .word 0xFFFFA1DB
- arm_func_end MOD04_021DCF00
-
- arm_func_start MOD04_021DCFFC
-MOD04_021DCFFC: ; 0x021DCFFC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0xb4
- ldr r2, _021DD244 ; =UNK04_02210504
- mov r5, r0
- ldr r2, [r2]
- mov r0, r1
- add r2, r2, #0x1000
- str r1, [r2, #0xc18]
- mov r1, #0
- mov r2, #0x174
- bl MI_CpuFill8
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba8]
- cmp r0, #0
- beq _021DD058
- ldr r0, _021DD248 ; =0x00001B3C
- add r0, r1, r0
- bl OS_IsThreadTerminated
- cmp r0, #0
- bne _021DD058
- bl OS_Terminate
-_021DD058:
- ldr r0, _021DD24C ; =UNK04_0220BEB4
- ldr r1, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- mov r3, #0
- ldr r4, [r1]
- mov r2, #0x1000
- str r0, [sp]
- str r3, [sp, #4]
- str r2, [sp, #8]
- ldr r2, [r4]
- ldr r1, _021DD250 ; =UNK04_0220C5E4
- str r2, [sp, #0xc]
- ldr r2, [r4, #4]
- str r2, [sp, #0x10]
- bl strcmp
- cmp r0, #0
- movne r0, #1
- strne r0, [sp, #0x14]
- moveq r0, #0
- ldr r2, _021DD254 ; =0x00004E20
- streq r0, [sp, #0x14]
- add r1, sp, #0
- add r0, r4, #8
- str r2, [sp, #0x18]
- bl MOD04_021DB608
- cmp r0, #0
- beq _021DD0DC
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD0DC:
- add r0, sp, #0x1c
- bl MOD04_021DA238
- cmp r0, #0
- beq _021DD10C
- ldr r0, _021DD244 ; =UNK04_02210504
- add r1, sp, #0x1c
- ldr r0, [r0]
- mov r2, #0
- add r0, r0, #8
- bl MOD04_021D9C2C
- cmp r0, #0
- bne _021DD134
-_021DD10C:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD134:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, _021DD25C ; =UNK04_0220C604
- ldr r0, [r0]
- ldr r2, _021DD260 ; =UNK04_0220C60C
- add r0, r0, #8
- mov r3, #6
- bl MOD04_021DAB68
- cmp r0, #0
- bne _021DD17C
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, _021DD264 ; =UNK04_0220C614
- ldr r0, [r0]
- mov r2, r5
- add r0, r0, #8
- mov r3, #4
- bl MOD04_021DAB68
- cmp r0, #0
- beq _021DD1A4
-_021DD17C:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD1A4:
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DB570
- cmp r0, #0
- beq _021DD1E4
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r0, [r0]
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #0xb4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD1E4:
- ldr r0, _021DD268 ; =OSi_ThreadInfo
- ldr r0, [r0, #4]
- bl OS_GetThreadPriority
- ldr r1, _021DD244 ; =UNK04_02210504
- ldr r2, [r1]
- sub r1, r0, #1
- add r0, r2, #8
- bl MOD04_021DB4A4
- ldr r0, _021DD244 ; =UNK04_02210504
- ldr r1, [r0]
- add r0, r1, #0x1000
- ldr r0, [r0, #0xba8]
- cmp r0, #0
- addne sp, sp, #0xb4
- movne r0, #1
- ldmneia sp!, {r4, r5, pc}
- add r0, r1, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD258 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- mov r0, #0
- add sp, sp, #0xb4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DD244: .word UNK04_02210504
-_021DD248: .word 0x00001B3C
-_021DD24C: .word UNK04_0220BEB4
-_021DD250: .word UNK04_0220C5E4
-_021DD254: .word 0x00004E20
-_021DD258: .word 0xFFFFA1DC
-_021DD25C: .word UNK04_0220C604
-_021DD260: .word UNK04_0220C60C
-_021DD264: .word UNK04_0220C614
-_021DD268: .word OSi_ThreadInfo
- arm_func_end MOD04_021DCFFC
-
- arm_func_start MOD04_021DD26C
-MOD04_021DD26C: ; 0x021DD26C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DD2BC ; =UNK04_02210504
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- add r0, r0, #8
- bl MOD04_021DAE4C
- ldr r1, _021DD2BC ; =UNK04_02210504
- ldr r0, _021DD2C0 ; =UNK04_0220C618
- ldr r1, [r1]
- mov r2, #0
- ldr r3, [r1, #4]
- blx r3
- ldr r0, _021DD2BC ; =UNK04_02210504
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD2BC: .word UNK04_02210504
-_021DD2C0: .word UNK04_0220C618
- arm_func_end MOD04_021DD26C
-
- arm_func_start MOD04_021DD2C4
-MOD04_021DD2C4: ; 0x021DD2C4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DD35C ; =UNK04_02210504
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- cmp r0, #0
- beq _021DD2FC
- ldr r1, _021DD360 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD2FC:
- ldr r0, _021DD364 ; =UNK04_0220C628
- ldr r1, _021DD368 ; =0x00001C1C
- blx r5
- ldr r1, _021DD35C ; =UNK04_02210504
- cmp r0, #0
- str r0, [r1]
- bne _021DD330
- ldr r1, _021DD360 ; =0xFFFFA1DC
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DD330:
- ldr r2, _021DD368 ; =0x00001C1C
- mov r1, #0
- bl MI_CpuFill8
- ldr r1, _021DD35C ; =UNK04_02210504
- mov r0, #1
- ldr r2, [r1]
- str r5, [r2]
- ldr r1, [r1]
- str r4, [r1, #4]
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DD35C: .word UNK04_02210504
-_021DD360: .word 0xFFFFA1DC
-_021DD364: .word UNK04_0220C628
-_021DD368: .word 0x00001C1C
- arm_func_end MOD04_021DD2C4
-
- arm_func_start MOD04_021DD36C
-MOD04_021DD36C: ; 0x021DD36C
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #8
- ands r4, r1, #3
- addne sp, sp, #8
- mvnne r0, #0
- ldmneia sp!, {r4, r5, r6, r7, r8, pc}
- mov r6, #0
- mov r5, r6
- cmp r1, #0
- bls _021DD3AC
-_021DD394:
- ldrsb r4, [r0, r5]
- add r5, r5, #1
- cmp r4, #0x2a
- addne r6, r6, #6
- cmp r5, r1
- blo _021DD394
-_021DD3AC:
- cmp r2, #0
- moveq r0, r6, asr #2
- addeq r0, r6, r0, lsr #29
- addeq sp, sp, #8
- moveq r0, r0, asr #3
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- mov r4, r6, asr #2
- add r4, r6, r4, lsr #29
- mov r4, r4, asr #3
- cmp r3, r4
- addlo sp, sp, #8
- mvnlo r0, #0
- ldmloia sp!, {r4, r5, r6, r7, r8, pc}
- cmp r1, #0
- moveq r0, #0
- streqb r0, [r2]
- addeq sp, sp, #8
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- mov r6, r2
- add ip, sp, #0
- mov lr, #0
- mov r1, #0x3f
- mov r3, #0x3e
-_021DD408:
- mov r8, lr
- mov r5, ip
-_021DD410:
- ldrsb r7, [r0, r8]
- cmp r7, #0x41
- blt _021DD42C
- cmp r7, #0x5a
- suble r7, r7, #0x41
- strleb r7, [r5]
- ble _021DD474
-_021DD42C:
- cmp r7, #0x61
- blt _021DD444
- cmp r7, #0x7a
- suble r7, r7, #0x47
- strleb r7, [r5]
- ble _021DD474
-_021DD444:
- cmp r7, #0x30
- blt _021DD45C
- cmp r7, #0x39
- addle r7, r7, #4
- strleb r7, [r5]
- ble _021DD474
-_021DD45C:
- cmp r7, #0x2e
- streqb r3, [r5]
- beq _021DD474
- cmp r7, #0x2d
- streqb r1, [r5]
- strneb lr, [r5]
-_021DD474:
- add r8, r8, #1
- cmp r8, #4
- add r5, r5, #1
- blt _021DD410
- ldrsb r8, [sp]
- ldrsb r7, [sp, #1]
- add r5, r6, #1
- mov r8, r8, lsl #2
- orr r7, r8, r7, asr #4
- sub r5, r5, r2
- strb r7, [r6]
- cmp r5, r4
- add r0, r0, #4
- bge _021DD4F0
- ldrsb r8, [sp, #1]
- ldrsb r7, [sp, #2]
- add r5, r6, #2
- mov r8, r8, lsl #4
- orr r7, r8, r7, asr #2
- sub r5, r5, r2
- strb r7, [r6, #1]
- cmp r5, r4
- bge _021DD4F0
- ldrsb r7, [sp, #2]
- ldrsb r5, [sp, #3]
- orr r5, r5, r7, lsl #6
- strb r5, [r6, #2]
- add r6, r6, #3
- sub r5, r6, r2
- cmp r5, r4
- blt _021DD408
-_021DD4F0:
- mov r0, r5
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_end MOD04_021DD36C
-
- arm_func_start MOD04_021DD4FC
-MOD04_021DD4FC: ; 0x021DD4FC
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0xc
- ldr r4, _021DD69C ; =0xAAAAAAAB
- str r2, [sp]
- umull r4, r5, r1, r4
- ldr r6, _021DD6A0 ; =0x00000003
- mov r5, r5, lsr #1
- umull r4, r5, r6, r5
- mov sl, r0
- subs r5, r1, r4
- movne r4, #4
- ldr r2, _021DD69C ; =0xAAAAAAAB
- ldr r0, [sp]
- moveq r4, #0
- cmp r0, #0
- umull r0, r2, r1, r2
- mov r2, r2, lsr #1
- addeq sp, sp, #0xc
- add r0, r4, r2, lsl #2
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r3, r0
- addlo sp, sp, #0xc
- mvnlo r0, #0
- ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- add r7, sl, r1
- ldr r6, [sp]
- cmp sl, r7
- beq _021DD68C
- mov r0, #1
- mov r5, #0
- str r0, [sp, #4]
- mov fp, #3
- mov r4, #0x2a
-_021DD580:
- sub sb, r7, sl
- ldr r1, _021DD6A4 ; =0x2AAAAAAB
- mov r0, sb, lsl #3
- smull r2, r3, r1, r0
- ldr r1, _021DD6A8 ; =0x00000006
- add r3, r3, r0, lsr #31
- smull r2, r3, r1, r3
- subs r3, r0, r2
- ldr r1, _021DD6A4 ; =0x2AAAAAAB
- ldrne r8, [sp, #4]
- smull r2, r3, r1, r0
- moveq r8, r5
- add r3, r3, r0, lsr #31
- cmp sb, #3
- movge sb, fp
- add r0, sp, #8
- mov r1, r5
- mov r2, fp
- add r8, r3, r8
- bl MI_CpuFill8
- mov r0, sl
- add r1, sp, #8
- mov r2, sb
- bl MI_CpuCopy8
- ldr r0, _021DD6AC ; =UNK04_0220C638
- cmp r8, #2
- ldr r1, [r0]
- ldrb r0, [sp, #8]
- mov r0, r0, asr #2
- ldrsb r0, [r1, r0]
- strb r0, [r6]
- strltb r4, [r6, #1]
- blt _021DD628
- ldrb r2, [sp, #8]
- ldr r0, _021DD6AC ; =UNK04_0220C638
- ldrb r1, [sp, #9]
- mov r2, r2, lsl #4
- and r2, r2, #0x3f
- ldr r0, [r0]
- orr r1, r2, r1, asr #4
- ldrsb r0, [r0, r1]
- strb r0, [r6, #1]
-_021DD628:
- cmp r8, #3
- strltb r4, [r6, #2]
- blt _021DD658
- ldrb r2, [sp, #9]
- ldr r0, _021DD6AC ; =UNK04_0220C638
- ldrb r1, [sp, #0xa]
- mov r2, r2, lsl #2
- and r2, r2, #0x3f
- ldr r0, [r0]
- orr r1, r2, r1, asr #6
- ldrsb r0, [r0, r1]
- strb r0, [r6, #2]
-_021DD658:
- cmp r8, #4
- strltb r4, [r6, #3]
- blt _021DD67C
- ldr r0, _021DD6AC ; =UNK04_0220C638
- ldrb r1, [sp, #0xa]
- ldr r2, [r0]
- and r0, r1, #0x3f
- ldrsb r0, [r2, r0]
- strb r0, [r6, #3]
-_021DD67C:
- add sl, sl, sb
- cmp sl, r7
- add r6, r6, #4
- bne _021DD580
-_021DD68C:
- ldr r0, [sp]
- sub r0, r6, r0
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DD69C: .word 0xAAAAAAAB
-_021DD6A0: .word 0x00000003
-_021DD6A4: .word 0x2AAAAAAB
-_021DD6A8: .word 0x00000006
-_021DD6AC: .word UNK04_0220C638
- arm_func_end MOD04_021DD4FC
-
- arm_func_start MOD04_021DD6B0
-MOD04_021DD6B0: ; 0x021DD6B0
- ldr r3, _021DD6CC ; =UNK04_02210508
- ldr r2, [r3]
- cmp r2, #9
- ldrne r2, _021DD6D0 ; =UNK04_0221050C
- strne r0, [r3]
- strne r1, [r2]
- bx lr
- .align 2, 0
-_021DD6CC: .word UNK04_02210508
-_021DD6D0: .word UNK04_0221050C
- arm_func_end MOD04_021DD6B0
-
- arm_func_start MOD04_021DD6D4
-MOD04_021DD6D4: ; 0x021DD6D4
- ldr r0, _021DD6EC ; =UNK04_02210508
- ldr r0, [r0]
- cmp r0, #0
- movne r0, #1
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DD6EC: .word UNK04_02210508
- arm_func_end MOD04_021DD6D4
-
- arm_func_start MOD04_021DD6F0
-MOD04_021DD6F0: ; 0x021DD6F0
- ldr r1, _021DD710 ; =UNK04_02210508
- ldr r0, [r1]
- cmp r0, #9
- movne r2, #0
- ldrne r0, _021DD714 ; =UNK04_0221050C
- strne r2, [r1]
- strne r2, [r0]
- bx lr
- .align 2, 0
-_021DD710: .word UNK04_02210508
-_021DD714: .word UNK04_0221050C
- arm_func_end MOD04_021DD6F0
-
- arm_func_start MOD04_021DD718
-MOD04_021DD718: ; 0x021DD718
- cmp r0, #0
- ldrne r2, _021DD800 ; =UNK04_0221050C
- ldrne r2, [r2]
- strne r2, [r0]
- cmp r1, #0
- beq _021DD7F4
- ldr r0, _021DD804 ; =UNK04_02210508
- ldr r0, [r0]
- cmp r0, #0x11
- addls pc, pc, r0, lsl #2
- b _021DD7EC
-_021DD744: ; jump table
- b _021DD7EC ; case 0
- b _021DD7BC ; case 1
- b _021DD78C ; case 2
- b _021DD78C ; case 3
- b _021DD78C ; case 4
- b _021DD78C ; case 5
- b _021DD798 ; case 6
- b _021DD7A4 ; case 7
- b _021DD78C ; case 8
- b _021DD7BC ; case 9
- b _021DD7B0 ; case 10
- b _021DD7B0 ; case 11
- b _021DD7B0 ; case 12
- b _021DD7B0 ; case 13
- b _021DD7C8 ; case 14
- b _021DD7D4 ; case 15
- b _021DD7E0 ; case 16
- b _021DD7D4 ; case 17
-_021DD78C:
- mov r0, #6
- str r0, [r1]
- b _021DD7F4
-_021DD798:
- mov r0, #3
- str r0, [r1]
- b _021DD7F4
-_021DD7A4:
- mov r0, #4
- str r0, [r1]
- b _021DD7F4
-_021DD7B0:
- mov r0, #1
- str r0, [r1]
- b _021DD7F4
-_021DD7BC:
- mov r0, #7
- str r0, [r1]
- b _021DD7F4
-_021DD7C8:
- mov r0, #5
- str r0, [r1]
- b _021DD7F4
-_021DD7D4:
- mov r0, #6
- str r0, [r1]
- b _021DD7F4
-_021DD7E0:
- mov r0, #2
- str r0, [r1]
- b _021DD7F4
-_021DD7EC:
- mov r0, #0
- str r0, [r1]
-_021DD7F4:
- ldr r0, _021DD804 ; =UNK04_02210508
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_021DD800: .word UNK04_0221050C
-_021DD804: .word UNK04_02210508
- arm_func_end MOD04_021DD718
-
- arm_func_start MOD04_021DD808
-MOD04_021DD808: ; 0x021DD808
- cmp r0, #0
- ldrne r1, _021DD824 ; =UNK04_0221050C
- ldrne r1, [r1]
- strne r1, [r0]
- ldr r0, _021DD828 ; =UNK04_02210508
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_021DD824: .word UNK04_0221050C
-_021DD828: .word UNK04_02210508
- arm_func_end MOD04_021DD808
-
- arm_func_start MOD04_021DD82C
-MOD04_021DD82C: ; 0x021DD82C
- ldr ip, _021DD840 ; =MOD04_021DD904
- mov r1, r0
- mov r0, #5
- mov r2, #0
- bx ip
- .align 2, 0
-_021DD840: .word MOD04_021DD904
- arm_func_end MOD04_021DD82C
-
- arm_func_start MOD04_021DD844
-MOD04_021DD844: ; 0x021DD844
- ldr ip, _021DD85C ; =MOD04_021DD8E8
- mov r2, r1
- mov r1, r0
- mov r3, r2
- mov r0, #5
- bx ip
- .align 2, 0
-_021DD85C: .word MOD04_021DD8E8
- arm_func_end MOD04_021DD844
-
- arm_func_start MOD04_021DD860
-MOD04_021DD860: ; 0x021DD860
- ldr ip, _021DD870 ; =MOD04_021DD944
- mov r1, r0
- mov r0, #5
- bx ip
- .align 2, 0
-_021DD870: .word MOD04_021DD944
- arm_func_end MOD04_021DD860
-
- arm_func_start MOD04_021DD874
-MOD04_021DD874: ; 0x021DD874
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- ldr ip, _021DD8E0 ; =UNK04_02210514
- mov r4, r2
- mov r7, r3
- mov r5, r1
- ldr r2, [sp, #0x18]
- ldr r3, [ip]
- mov r1, r7
- mov r8, r0
- blx r3
- movs r6, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- cmp r5, #0
- beq _021DD8D8
- mov r0, r5
- mov r1, r6
- mov r2, r7
- bl MI_CpuCopy8
- ldr r1, _021DD8E4 ; =UNK04_02210510
- mov r0, r8
- ldr r3, [r1]
- mov r1, r5
- mov r2, r4
- blx r3
-_021DD8D8:
- mov r0, r6
- ldmia sp!, {r4, r5, r6, r7, r8, pc}
- .align 2, 0
-_021DD8E0: .word UNK04_02210514
-_021DD8E4: .word UNK04_02210510
- arm_func_end MOD04_021DD874
-
- arm_func_start MOD04_021DD8E8
-MOD04_021DD8E8: ; 0x021DD8E8
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov ip, #0x20
- str ip, [sp]
- bl MOD04_021DD874
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DD8E8
-
- arm_func_start MOD04_021DD904
-MOD04_021DD904: ; 0x021DD904
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r3, _021DD920 ; =UNK04_02210510
- ldr r3, [r3]
- blx r3
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD920: .word UNK04_02210510
- arm_func_end MOD04_021DD904
-
- arm_func_start MOD04_021DD924
-MOD04_021DD924: ; 0x021DD924
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r3, _021DD940 ; =UNK04_02210514
- ldr r3, [r3]
- blx r3
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD940: .word UNK04_02210514
- arm_func_end MOD04_021DD924
-
- arm_func_start MOD04_021DD944
-MOD04_021DD944: ; 0x021DD944
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r3, _021DD964 ; =UNK04_02210514
- mov r2, #0x20
- ldr r3, [r3]
- blx r3
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD964: .word UNK04_02210514
- arm_func_end MOD04_021DD944
-
- arm_func_start MOD04_021DD968
-MOD04_021DD968: ; 0x021DD968
- ldr r3, _021DD97C ; =UNK04_02210514
- ldr r2, _021DD980 ; =UNK04_02210510
- str r0, [r3]
- str r1, [r2]
- bx lr
- .align 2, 0
-_021DD97C: .word UNK04_02210514
-_021DD980: .word UNK04_02210510
- arm_func_end MOD04_021DD968
-
- arm_func_start MOD04_021DD984
-MOD04_021DD984: ; 0x021DD984
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DDCE8
- bl MOD04_021DDB14
- cmp r0, #0
- beq _021DD9CC
- bl MOD04_021EBAB8
- mov r2, r0
- cmp r2, #0x63
- ldr r1, _021DD9D8 ; =0xFFFF2D10
- movhi r2, #0x63
- mov r0, #8
- sub r1, r1, r2
- bl MOD04_021DD6B0
- bl MOD04_021DDBBC
- add sp, sp, #4
- mov r0, #1
- ldmfd sp!, {pc}
-_021DD9CC:
- mov r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DD9D8: .word 0xFFFF2D10
- arm_func_end MOD04_021DD984
-
- arm_func_start MOD04_021DD9DC
-MOD04_021DD9DC: ; 0x021DD9DC
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x18
- mov r1, #0
- mov r2, #0x3c
- mov r4, r0
- bl MI_CpuFill8
- mov r0, #0xff
- str r0, [r4, #4]
- bl MOD04_021DDC1C
- cmp r0, #4
- addne sp, sp, #0x18
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- bl MOD04_021EBAB8
- str r0, [r4]
- bl OS_DisableInterrupts
- mov r6, r0
- bl WCM_GetApMacAddress
- mov r5, r0
- mov r1, #6
- bl DC_InvalidateRange
- cmp r5, #0
- bne _021DDA4C
- mov r0, r6
- bl OS_RestoreInterrupts
- add sp, sp, #0x18
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DDA4C:
- mov r0, r5
- add r1, r4, #0x33
- mov r2, #6
- bl MI_CpuCopy8
- ldr r0, [r4]
- cmp r0, #0
- blt _021DDAB0
- cmp r0, #3
- bge _021DDAB0
- add r0, sp, #0
- bl WCM_GetApEssid
- mov r5, r0
- mov r1, #0x20
- bl DC_InvalidateRange
- cmp r5, #0
- bne _021DDAA0
- mov r0, r6
- bl OS_RestoreInterrupts
- add sp, sp, #0x18
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DDAA0:
- ldrh r2, [sp]
- mov r0, r5
- add r1, r4, #0x12
- bl MI_CpuCopy8
-_021DDAB0:
- mov r0, r6
- bl OS_RestoreInterrupts
- add r0, sp, #2
- mov r1, #0
- mov r2, #0x10
- bl MI_CpuFill8
- add r0, sp, #2
- bl MOD04_021EBA28
- cmp r0, #1
- bne _021DDAFC
- ldrb r1, [sp, #8]
- cmp r1, #0
- beq _021DDAFC
- sub r3, r1, #0x30
- add r0, sp, #9
- add r1, r4, #8
- mov r2, #9
- str r3, [r4, #4]
- bl MI_CpuCopy8
-_021DDAFC:
- mov r0, #1
- add sp, sp, #0x18
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DD9DC
-
- arm_func_start MOD04_021DDB08
-MOD04_021DDB08: ; 0x021DDB08
- ldr ip, _021DDB10 ; =WCM_GetLinkLevel
- bx ip
- .align 2, 0
-_021DDB10: .word WCM_GetLinkLevel
- arm_func_end MOD04_021DDB08
-
- arm_func_start MOD04_021DDB14
-MOD04_021DDB14: ; 0x021DDB14
- ldr r0, _021DDB3C ; =UNK04_02210518
- ldr r0, [r0]
- cmp r0, #0
- beq _021DDB34
- ldrh r0, [r0, #4]
- cmp r0, #6
- moveq r0, #1
- bxeq lr
-_021DDB34:
- mov r0, #0
- bx lr
- .align 2, 0
-_021DDB3C: .word UNK04_02210518
- arm_func_end MOD04_021DDB14
-
- arm_func_start MOD04_021DDB40
-MOD04_021DDB40: ; 0x021DDB40
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDBB8 ; =UNK04_02210518
- ldr r2, [r0]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- ldrh r1, [r2, #4]
- cmp r1, #8
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- cmp r1, #1
- moveq r1, #0
- streq r1, [r0]
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- mov r0, #5
- strh r0, [r2, #4]
- bl MOD04_021EB9D8
- cmp r0, #0
- ldrne r0, _021DDBB8 ; =UNK04_02210518
- movne r1, #0
- strne r1, [r0]
- movne r0, #1
- moveq r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDBB8: .word UNK04_02210518
- arm_func_end MOD04_021DDB40
-
- arm_func_start MOD04_021DDBBC
-MOD04_021DDBBC: ; 0x021DDBBC
- stmdb sp!, {r4, lr}
- ldr r0, _021DDC18 ; =UNK04_02210518
- ldr r1, [r0]
- cmp r1, #0
- ldmeqia sp!, {r4, pc}
- ldrh r1, [r1, #4]
- cmp r1, #1
- moveq r1, #0
- streq r1, [r0]
- ldmeqia sp!, {r4, pc}
- bl MOD04_021EB9D8
- cmp r0, #0
- bne _021DDC08
- mov r4, #0xa
-_021DDBF4:
- mov r0, r4
- bl OS_Sleep
- bl MOD04_021EB9D8
- cmp r0, #0
- beq _021DDBF4
-_021DDC08:
- ldr r0, _021DDC18 ; =UNK04_02210518
- mov r1, #0
- str r1, [r0]
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DDC18: .word UNK04_02210518
- arm_func_end MOD04_021DDBBC
-
- arm_func_start MOD04_021DDC1C
-MOD04_021DDC1C: ; 0x021DDC1C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDCE4 ; =UNK04_02210518
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldrh r0, [r0, #4]
- cmp r0, #1
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021EBAE8
- mov r1, r0
- cmp r1, #5
- bne _021DDC80
- ldr r1, _021DDCE4 ; =UNK04_02210518
- mov r0, #4
- ldr r3, [r1]
- mov r2, #1
- strh r0, [r3, #4]
- ldr r1, [r1]
- add sp, sp, #4
- strh r2, [r1, #6]
- ldmfd sp!, {pc}
-_021DDC80:
- cmp r1, #0
- bge _021DDCD8
- mvn r0, #9
- cmp r1, r0
- blt _021DDCB8
- sub r1, r1, #0x2bc
- mov r0, #9
- bl MOD04_021DD6B0
- ldr r1, _021DDCE4 ; =UNK04_02210518
- mov r0, #8
- ldr r1, [r1]
- add sp, sp, #4
- strh r0, [r1, #4]
- ldmfd sp!, {pc}
-_021DDCB8:
- mov r0, #5
- bl MOD04_021DD6B0
- ldr r1, _021DDCE4 ; =UNK04_02210518
- mov r0, #7
- ldr r1, [r1]
- add sp, sp, #4
- strh r0, [r1, #4]
- ldmfd sp!, {pc}
-_021DDCD8:
- mov r0, #2
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDCE4: .word UNK04_02210518
- arm_func_end MOD04_021DDC1C
-
- arm_func_start MOD04_021DDCE8
-MOD04_021DDCE8: ; 0x021DDCE8
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDD78 ; =UNK04_02210518
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldrh r0, [r1, #4]
- cmp r0, #2
- bne _021DDD28
- bl MOD04_021EBB80
- ldr r1, _021DDD78 ; =UNK04_02210518
- add sp, sp, #4
- ldr r1, [r1]
- str r0, [r1]
- ldmfd sp!, {pc}
-_021DDD28:
- cmp r0, #4
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldrh r0, [r1, #6]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl WCM_GetPhase
- cmp r0, #9
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DDD78 ; =UNK04_02210518
- mov r3, #0
- ldr r2, [r0]
- mov r1, #6
- strh r3, [r2, #6]
- ldr r0, [r0]
- strh r1, [r0, #4]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDD78: .word UNK04_02210518
- arm_func_end MOD04_021DDCE8
-
- arm_func_start MOD04_021DDD7C
-MOD04_021DDD7C: ; 0x021DDD7C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DDDC8 ; =UNK04_02210518
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldr r0, [r1]
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- mov r0, #3
- strh r0, [r1, #4]
- bl MOD04_021DDC1C
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDDC8: .word UNK04_02210518
- arm_func_end MOD04_021DDD7C
-
- arm_func_start MOD04_021DDDCC
-MOD04_021DDDCC: ; 0x021DDDCC
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr r0, _021DDE70 ; =UNK04_02210518
- ldr r0, [r0]
- cmp r0, #0
- beq _021DDE5C
- ldrh r0, [r0, #4]
- cmp r0, #1
- addne sp, sp, #0xc
- ldmneia sp!, {pc}
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xc
- bl MI_CpuFill8
- ldr r0, _021DDE70 ; =UNK04_02210518
- ldr r3, _021DDE74 ; =MOD04_021DD944
- ldr lr, [r0]
- ldr r2, _021DDE78 ; =MOD04_021DD904
- ldrh ip, [lr, #8]
- add r0, sp, #0
- mov r1, #2
- strb ip, [sp, #8]
- ldrh ip, [lr, #0xa]
- strb ip, [sp, #9]
- str r3, [sp]
- str r2, [sp, #4]
- strh r1, [lr, #4]
- bl MOD04_021EBC60
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {pc}
- mov r0, #9
- mvn r1, #5
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmfd sp!, {pc}
-_021DDE5C:
- mov r0, #9
- mvn r1, #3
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDE70: .word UNK04_02210518
-_021DDE74: .word MOD04_021DD944
-_021DDE78: .word MOD04_021DD904
- arm_func_end MOD04_021DDDCC
-
- arm_func_start MOD04_021DDE7C
-MOD04_021DDE7C: ; 0x021DDE7C
- stmdb sp!, {lr}
- sub sp, sp, #4
- cmp r0, #0
- beq _021DDEA4
- cmp r0, #1
- beq _021DDEB4
- cmp r0, #2
- beq _021DDEC4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DDEA4:
- ldr r0, _021DDED4 ; =UNK04_0220D280
- bl MOD04_021D9C1C
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DDEB4:
- ldr r0, _021DDED8 ; =UNK04_0220D2A8
- bl MOD04_021D9C1C
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DDEC4:
- ldr r0, _021DDEDC ; =UNK04_0220D2CC
- bl MOD04_021D9C1C
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DDED4: .word UNK04_0220D280
-_021DDED8: .word UNK04_0220D2A8
-_021DDEDC: .word UNK04_0220D2CC
- arm_func_end MOD04_021DDE7C
-
- arm_func_start MOD04_021DDEE0
-MOD04_021DDEE0: ; 0x021DDEE0
- stmdb sp!, {r4, r5, r6, lr}
- ldr r2, _021DDF3C ; =UNK04_02210518
- mov r6, r0
- ldr r2, [r2]
- mov r5, r1
- mov r4, r3
- cmp r2, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r1, #0
- mov r2, #0xc
- bl MI_CpuFill8
- strh r5, [r6, #8]
- mov r0, #1
- strh r0, [r6, #0xa]
- strh r0, [r6, #4]
- mov r0, #0
- ldr r1, _021DDF3C ; =UNK04_02210518
- strh r0, [r6, #6]
- str r6, [r1]
- bl MOD04_021DDE7C
- mov r0, r4
- bl CPS_SetSslHandshakePriority
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DDF3C: .word UNK04_02210518
- arm_func_end MOD04_021DDEE0
-
- arm_func_start MOD04_021DDF40
-MOD04_021DDF40: ; 0x021DDF40
- ldr ip, _021DDF48 ; =MOD04_021D9974
- bx ip
- .align 2, 0
-_021DDF48: .word MOD04_021D9974
- arm_func_end MOD04_021DDF40
-
- arm_func_start MOD04_021DDF4C
-MOD04_021DDF4C: ; 0x021DDF4C
- stmdb sp!, {lr}
- sub sp, sp, #0x1c4
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #0x1c4
- moveq r0, #0
- ldmeqia sp!, {pc}
- add r0, r0, #0x1000
- ldr r0, [r0, #0xba0]
- cmp r0, #0
- addeq sp, sp, #0x1c4
- moveq r0, #1
- ldmeqia sp!, {pc}
- bl MOD04_021D988C
- cmp r0, #0
- beq _021DDFA4
- cmp r0, #0x14
- beq _021DDFE0
- cmp r0, #0x15
- beq _021DDFB0
- b _021DE010
-_021DDFA4:
- add sp, sp, #0x1c4
- mov r0, #2
- ldmfd sp!, {pc}
-_021DDFB0:
- bl MOD04_021D991C
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r2, _021DE058 ; =0x00001E1C
- ldr r1, [r0]
- mov r0, #4
- bl MOD04_021DD904
- ldr r0, _021DE054 ; =UNK04_0221051C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #0x1c4
- mov r0, #3
- ldmfd sp!, {pc}
-_021DDFE0:
- bl MOD04_021D991C
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r2, _021DE058 ; =0x00001E1C
- ldr r1, [r0]
- mov r0, #4
- bl MOD04_021DD904
- ldr r0, _021DE054 ; =UNK04_0221051C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #0x1c4
- mov r0, #5
- ldmfd sp!, {pc}
-_021DE010:
- add r0, sp, #0
- bl MOD04_021D97F8
- bl MOD04_021D991C
- ldr r0, _021DE054 ; =UNK04_0221051C
- ldr r2, _021DE058 ; =0x00001E1C
- ldr r1, [r0]
- mov r0, #4
- bl MOD04_021DD904
- ldr r1, [sp]
- ldr r2, _021DE054 ; =UNK04_0221051C
- mov r3, #0
- mov r0, #2
- str r3, [r2]
- bl MOD04_021DD6B0
- mov r0, #4
- add sp, sp, #0x1c4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DE054: .word UNK04_0221051C
-_021DE058: .word 0x00001E1C
- arm_func_end MOD04_021DDF4C
-
- arm_func_start MOD04_021DE05C
-MOD04_021DE05C: ; 0x021DE05C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DE130 ; =UNK04_0221051C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DE078
- bl OS_Terminate
-_021DE078:
- ldr r1, _021DE134 ; =0x00001E1C
- mov r0, #4
- bl MOD04_021DD944
- ldr r1, _021DE130 ; =UNK04_0221051C
- cmp r0, #0
- str r0, [r1]
- bne _021DE0AC
- ldr r1, _021DE138 ; =0xFFFFB17C
- mov r0, #9
- bl MOD04_021DD6B0
- add sp, sp, #4
- mov r0, #0
- ldmfd sp!, {pc}
-_021DE0AC:
- ldr r2, _021DE134 ; =0x00001E1C
- mov r1, #0
- bl MI_CpuFill8
- ldr r0, _021DE130 ; =UNK04_0221051C
- ldr r1, _021DE13C ; =0x00001C44
- ldr r2, [r0]
- ldr r0, _021DE140 ; =UNK04_0220D2EC
- add r1, r2, r1
- mov r2, #9
- bl MI_CpuCopy8
- ldr r1, _021DE130 ; =UNK04_0221051C
- ldr r2, _021DE144 ; =MOD04_021DD944
- ldr r0, [r1]
- ldr r3, _021DE148 ; =MOD04_021DD904
- add r0, r0, #0x1000
- str r2, [r0, #0xc50]
- ldr r0, [r1]
- ldr r2, _021DE14C ; =0x00001C10
- add r0, r0, #0x1000
- str r3, [r0, #0xc54]
- ldr r1, [r1]
- add r0, r1, r2
- bl MOD04_021D9ACC
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #1
- ldmeqia sp!, {pc}
- ldr r1, _021DE138 ; =0xFFFFB17C
- mov r0, #9
- bl MOD04_021DD6B0
- mov r0, #0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DE130: .word UNK04_0221051C
-_021DE134: .word 0x00001E1C
-_021DE138: .word 0xFFFFB17C
-_021DE13C: .word 0x00001C44
-_021DE140: .word UNK04_0220D2EC
-_021DE144: .word MOD04_021DD944
-_021DE148: .word MOD04_021DD904
-_021DE14C: .word 0x00001C10
- arm_func_end MOD04_021DE05C
-
- arm_func_start MOD04_021DE150
-MOD04_021DE150: ; 0x021DE150
- stmdb sp!, {r4, lr}
- bl MOD04_021DCF00
- mov r4, r0
- sub r0, r4, #3
- cmp r0, #2
- bhi _021DE16C
- bl MOD04_021DD26C
-_021DE16C:
- mov r0, r4
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DE150
-
- arm_func_start MOD04_021DE174
-MOD04_021DE174: ; 0x021DE174
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- ldr r0, _021DE1EC ; =MOD04_021DD944
- ldr r1, _021DE1F0 ; =MOD04_021DD904
- bl MOD04_021DD2C4
- cmp r0, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- mov r0, r5
- bl strlen
- cmp r0, #0
- bne _021DE1C0
- ldr r0, _021DE1F4 ; =UNK04_0220D2F0
- mov r1, r4
- bl MOD04_021DCFFC
- b _021DE1CC
-_021DE1C0:
- mov r0, r5
- mov r1, r4
- bl MOD04_021DCFFC
-_021DE1CC:
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #1
- ldmneia sp!, {r4, r5, pc}
- bl MOD04_021DD26C
- mov r0, #0
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DE1EC: .word MOD04_021DD944
-_021DE1F0: .word MOD04_021DD904
-_021DE1F4: .word UNK04_0220D2F0
- arm_func_end MOD04_021DE174
-
- arm_func_start MOD04_021DE1F8
-MOD04_021DE1F8: ; 0x021DE1F8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DE2C4 ; =UNK04_022104F8
- mov r5, r0
- ldr r2, [r2]
- mov r4, r1
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- bl RTC_GetDate
- cmp r0, #0
- bne _021DE23C
- mov r0, r4
- bl RTC_GetTime
- cmp r0, #0
- beq _021DE248
-_021DE23C:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DE248:
- mov r0, r5
- mov r1, r4
- bl RTC_ConvertDateTimeToSecond
- mvn r2, #0
- cmp r1, r2
- cmpeq r0, r2
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, _021DE2C8 ; =UNK04_022104FC
- mov ip, #0
- ldr lr, [r2]
- ldr r3, [r2, #4]
- subs r2, r0, lr
- sbc r3, r1, r3
- subs r0, r2, ip
- sbcs r0, r3, ip
- blt _021DE2A0
- ldr r0, _021DE2CC ; =0xBC19137F
- subs r0, r0, r2
- sbcs r0, ip, r3
- bge _021DE2AC
-_021DE2A0:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, pc}
-_021DE2AC:
- mov r0, r5
- mov r1, r4
- bl RTC_ConvertSecondToDateTime
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DE2C4: .word UNK04_022104F8
-_021DE2C8: .word UNK04_022104FC
-_021DE2CC: .word 0xBC19137F
- arm_func_end MOD04_021DE1F8
-
- arm_func_start MOD04_021DE2D0
-MOD04_021DE2D0: ; 0x021DE2D0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- movne r0, #0
- ldmneia sp!, {r4, r5, pc}
- mov r0, r5
- mov r1, r4
- bl MOD04_02207330
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- arm_func_end MOD04_021DE2D0
-
- arm_func_start MOD04_021DE308
-MOD04_021DE308: ; 0x021DE308
- 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_02207158
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DE308
-
- arm_func_start MOD04_021DE330
-MOD04_021DE330: ; 0x021DE330
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_021DD6D4
- cmp r0, #0
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl MOD04_0220733C
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DE330
-
- arm_func_start MOD04_021DE364
-MOD04_021DE364: ; 0x021DE364
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_021DD6D4
- cmp r0, #0
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #0xb0
- mul r2, r4, r0
- mov r0, r6
- mov r1, #0
- bl MI_CpuFill8
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl MOD04_022074EC
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DE364
-
- arm_func_start MOD04_021DE3AC
-MOD04_021DE3AC: ; 0x021DE3AC
- stmdb sp!, {r4, lr}
- mov r4, r0
- bl MOD04_021DD6D4
- cmp r0, #0
- movne r0, #0
- ldmneia sp!, {r4, pc}
- mov r0, r4
- bl MOD04_022077A8
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DE3AC
-
- arm_func_start MOD04_021DE3D0
-MOD04_021DE3D0: ; 0x021DE3D0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_021DD6D4
- cmp r0, #0
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl MOD04_022069DC
- ldmia sp!, {r4, r5, r6, pc}
- arm_func_end MOD04_021DE3D0
-
- arm_func_start MOD04_021DE404
-MOD04_021DE404: ; 0x021DE404
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DE454 ; =UNK04_02210520
- ldr r2, [r1]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- str r0, [r2, #4]
- ldr r0, [r1]
- ldr r0, [r0, #0x48]
- cmp r0, #0
- bne _021DE440
- bl MOD04_021DE730
- b _021DE448
-_021DE440:
- ldr r0, _021DE458 ; =MOD04_021DE730
- bl MOD04_02206E6C
-_021DE448:
- mov r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DE454: .word UNK04_02210520
-_021DE458: .word MOD04_021DE730
- arm_func_end MOD04_021DE404
-
- arm_func_start MOD04_021DE45C
-MOD04_021DE45C: ; 0x021DE45C
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #8
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #0
- ldmneia sp!, {r4, r5, r6, pc}
- mov r0, #0xa80
- mov r1, #0x20
- bl MOD04_021DE884
- ldr r2, _021DE568 ; =UNK04_02210520
- mov r1, #0
- str r0, [r2]
- str r1, [r0, #0x48]
- ldr r0, [r2]
- mov r2, #0xa80
- bl MI_CpuFill8
- ldr r0, _021DE568 ; =UNK04_02210520
- mov r1, r5
- ldr r3, [r0]
- mov r2, #0x1f
- str r6, [r3]
- ldr r0, [r0]
- add r0, r0, #8
- bl strncpy
- ldr r0, _021DE568 ; =UNK04_02210520
- mov r1, r4
- ldr r0, [r0]
- mov r2, #0x1f
- add r0, r0, #0x28
- bl strncpy
- ldr r1, _021DE568 ; =UNK04_02210520
- ldr r0, _021DE56C ; =UNK04_0220D2F8
- ldr r1, [r1]
- add r1, r1, #0x4c
- bl MOD04_021DE174
- cmp r0, #0
- bne _021DE520
- ldr r0, _021DE568 ; =UNK04_02210520
- ldr r0, [r0]
- bl MOD04_021DE86C
- ldr r1, _021DE568 ; =UNK04_02210520
- mov r0, #0
- str r0, [r1]
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
-_021DE520:
- ldr r0, _021DE568 ; =UNK04_02210520
- mov r2, #0x800
- ldr r0, [r0]
- ldr r1, _021DE570 ; =MOD04_021DE574
- add r0, r0, #0x9c0
- mov r3, r0
- str r2, [sp]
- mov ip, #0x10
- mov r2, #0
- str ip, [sp, #4]
- bl OS_CreateThread
- ldr r0, _021DE568 ; =UNK04_02210520
- ldr r0, [r0]
- add r0, r0, #0x9c0
- bl OS_WakeupThreadDirect
- mov r0, #1
- add sp, sp, #8
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DE568: .word UNK04_02210520
-_021DE56C: .word UNK04_0220D2F8
-_021DE570: .word MOD04_021DE574
- arm_func_end MOD04_021DE45C
-
- arm_func_start MOD04_021DE574
-MOD04_021DE574: ; 0x021DE574
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x2a4
- mov r7, #0
- mov r6, #6
- mvn r5, #0
- mov r4, #0x64
-_021DE58C:
- bl MOD04_021DE150
- cmp r0, #3
- bne _021DE6AC
- ldr r0, _021DE718 ; =UNK04_02210520
- ldr r5, [r0]
- add r0, r5, #0x50
- bl strlen
- mov r4, r0
- ldr r0, _021DE71C ; =UNK04_0220D300
- bl strlen
- add r0, r4, r0
- cmp r0, #0xff
- bls _021DE5D8
- mov r0, #0
- mov r1, #8
- mvn r2, #0
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE5D8:
- ldr r2, _021DE720 ; =UNK04_0220D314
- add r0, sp, #0x10
- add r3, r5, #0x50
- mov r1, #0x100
- bl OS_SNPrintf
- ldr r0, _021DE718 ; =UNK04_02210520
- ldr r4, [r0]
- add r0, r4, #0x91
- bl strlen
- mov r1, r0
- add r2, sp, #0x110
- add r0, r4, #0x91
- mov r3, #0x190
- bl MOD04_021DD4FC
- cmp r0, #0
- bge _021DE630
- mov r0, #0
- mov r1, #8
- mvn r2, #0
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE630:
- ldr r0, _021DE718 ; =UNK04_02210520
- ldr r4, _021DE724 ; =MOD04_021DE774
- ldr r2, [r0]
- ldr r0, _021DE728 ; =MOD04_021DE884
- add r1, r2, #8
- str r1, [sp]
- add r1, r2, #0x28
- str r1, [sp, #4]
- ldr r1, _021DE72C ; =MOD04_021DE86C
- add r2, sp, #0x10
- add r3, sp, #0x110
- str r4, [sp, #8]
- bl MOD04_02206EFC
- cmp r0, #0
- bne _021DE684
- mov r0, #0
- mov r1, #8
- mvn r2, #0
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE684:
- ldr r1, _021DE718 ; =UNK04_02210520
- mov r0, #0
- ldr r3, [r1]
- mov r4, #1
- mov r1, r0
- mvn r2, #0
- str r4, [r3, #0x48]
- bl MOD04_021DE774
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE6AC:
- cmp r0, #4
- bne _021DE6EC
- add r0, sp, #0xc
- bl MOD04_021DD808
- ldr r1, [sp, #0xc]
- mov r0, #0xe
- bl MOD04_021DD6B0
- ldr r1, _021DE718 ; =UNK04_02210520
- mov r0, #0
- ldr r2, [r1]
- mov r1, #3
- ldr r3, [r2]
- mvn r2, #0
- blx r3
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DE6EC:
- cmp r0, #5
- bne _021DE704
- mov r0, r7
- mov r1, r6
- mov r2, r5
- bl MOD04_021DE774
-_021DE704:
- mov r0, r4
- bl OS_Sleep
- b _021DE58C
- arm_func_end MOD04_021DE574
-
- arm_func_start MOD04_021DE710
-MOD04_021DE710: ; 0x021DE710
- add sp, sp, #0x2a4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DE718: .word UNK04_02210520
-_021DE71C: .word UNK04_0220D300
-_021DE720: .word UNK04_0220D314
-_021DE724: .word MOD04_021DE774
-_021DE728: .word MOD04_021DE884
-_021DE72C: .word MOD04_021DE86C
- arm_func_end MOD04_021DE710
-
- arm_func_start MOD04_021DE730
-MOD04_021DE730: ; 0x021DE730
- stmdb sp!, {r4, lr}
- ldr r0, _021DE770 ; =UNK04_02210520
- ldr r0, [r0]
- add r0, r0, #0x9c0
- bl OS_JoinThread
- ldr r0, _021DE770 ; =UNK04_02210520
- ldr r0, [r0]
- ldr r4, [r0, #4]
- bl MOD04_021DE86C
- ldr r0, _021DE770 ; =UNK04_02210520
- mov r1, #0
- str r1, [r0]
- cmp r4, #0
- ldmeqia sp!, {r4, pc}
- blx r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DE770: .word UNK04_02210520
- arm_func_end MOD04_021DE730
-
- arm_func_start MOD04_021DE774
-MOD04_021DE774: ; 0x021DE774
- stmdb sp!, {r4, r5, r6, lr}
- movs r5, r1
- mov r6, r0
- mov r4, r2
- bne _021DE79C
- ldr r3, _021DE854 ; =UNK04_02210520
- ldr r3, [r3]
- ldr r3, [r3]
- blx r3
- ldmia sp!, {r4, r5, r6, pc}
-_021DE79C:
- cmp r5, #8
- addls pc, pc, r5, lsl #2
- b _021DE830
-_021DE7A8: ; jump table
- b _021DE830 ; case 0
- b _021DE7CC ; case 1
- b _021DE7DC ; case 2
- b _021DE7E4 ; case 3
- b _021DE7F4 ; case 4
- b _021DE804 ; case 5
- b _021DE834 ; case 6
- b _021DE818 ; case 7
- b _021DE820 ; case 8
-_021DE7CC:
- ldr r1, _021DE858 ; =0xFFFF86E7
- mov r0, #9
- bl MOD04_021DD6B0
- b _021DE834
-_021DE7DC:
- bl OS_Terminate
- b _021DE834
-_021DE7E4:
- ldr r1, _021DE85C ; =0xFFFF86D4
- mov r0, #0xf
- bl MOD04_021DD6B0
- b _021DE834
-_021DE7F4:
- ldr r1, _021DE860 ; =0xFFFF86CA
- mov r0, #0xe
- bl MOD04_021DD6B0
- b _021DE834
-_021DE804:
- ldr r1, _021DE864 ; =0xFFFF86E8
- mov r0, #0xe
- sub r1, r1, r4
- bl MOD04_021DD6B0
- b _021DE834
-_021DE818:
- bl OS_Terminate
- b _021DE834
-_021DE820:
- ldr r1, _021DE868 ; =0xFFFF86DF
- mov r0, #9
- bl MOD04_021DD6B0
- b _021DE834
-_021DE830:
- bl OS_Terminate
-_021DE834:
- ldr r1, _021DE854 ; =UNK04_02210520
- mov r0, r6
- ldr r2, [r1]
- mov r1, r5
- ldr r3, [r2]
- mov r2, r4
- blx r3
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DE854: .word UNK04_02210520
-_021DE858: .word 0xFFFF86E7
-_021DE85C: .word 0xFFFF86D4
-_021DE860: .word 0xFFFF86CA
-_021DE864: .word 0xFFFF86E8
-_021DE868: .word 0xFFFF86DF
- arm_func_end MOD04_021DE774
-
- arm_func_start MOD04_021DE86C
-MOD04_021DE86C: ; 0x021DE86C
- ldr ip, _021DE880 ; =MOD04_021DD904
- mov r1, r0
- mov r0, #6
- mov r2, #0
- bx ip
- .align 2, 0
-_021DE880: .word MOD04_021DD904
- arm_func_end MOD04_021DE86C
-
- arm_func_start MOD04_021DE884
-MOD04_021DE884: ; 0x021DE884
- ldr ip, _021DE898 ; =MOD04_021DD924
- mov r2, r1
- mov r1, r0
- mov r0, #6
- bx ip
- .align 2, 0
-_021DE898: .word MOD04_021DD924
- arm_func_end MOD04_021DE884
-
- arm_func_start MOD04_021DE89C
-MOD04_021DE89C: ; 0x021DE89C
- ldrh r1, [r0]
- mov r2, #0
- cmp r1, #0
- beq _021DE8C0
-_021DE8AC:
- add r2, r2, #1
- mov r1, r2, lsl #1
- ldrh r1, [r0, r1]
- cmp r1, #0
- bne _021DE8AC
-_021DE8C0:
- mov r0, r2
- bx lr
- arm_func_end MOD04_021DE89C
-
- arm_func_start MOD04_021DE8C8
-MOD04_021DE8C8: ; 0x021DE8C8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r2, _021DE9E4 ; =UNK04_02210524
- mov r1, #0
- ldr r3, [r2, #4]
- ldr ip, [r2]
- cmp r3, r1
- mov r4, r0
- cmpeq ip, r1
- bne _021DE98C
- ldr r0, [r2, #0xc]
- ldr r3, [r2, #8]
- cmp r0, r1
- cmpeq r3, r1
- bne _021DE98C
- ldr r0, [r2, #0x14]
- ldr r2, [r2, #0x10]
- cmp r0, r1
- cmpeq r2, r1
- bne _021DE98C
- add r0, sp, #0
- bl OS_GetMacAddress
- bl OS_GetTick
- ldr r2, [sp]
- ldr r3, [sp, #4]
- mov lr, r2, lsr #0x18
- mov r2, r1, lsl #0x18
- orr lr, lr, r3, lsl #8
- mvn r1, #0xff000000
- mov ip, r3, lsr #0x18
- and r1, lr, r1
- orr r3, r1, r0, lsl #24
- and r1, ip, #0
- orr r2, r2, r0, lsr #8
- orr r1, r1, r2
- str r1, [sp, #4]
- ldr ip, _021DE9E4 ; =UNK04_02210524
- add r0, sp, #0
- str r3, [sp]
- ldmia r0, {r2, r3}
- stmia ip, {r2, r3}
- ldr r3, _021DE9E8 ; =0x6C078965
- ldr r2, _021DE9EC ; =0x5D588B65
- ldr r1, _021DE9F0 ; =0x00269EC3
- mov r0, #0
- str r3, [ip, #8]
- str r2, [ip, #0xc]
- str r1, [ip, #0x10]
- str r0, [ip, #0x14]
-_021DE98C:
- ldr r1, _021DE9E4 ; =UNK04_02210524
- ldr r3, [r1, #8]
- ldr r2, [r1]
- ldr r0, [r1, #4]
- umull lr, ip, r3, r2
- mla ip, r3, r0, ip
- ldr r0, [r1, #0xc]
- ldr r3, [r1, #0x10]
- mla ip, r0, r2, ip
- adds r2, r3, lr
- ldr r0, [r1, #0x14]
- str r2, [r1]
- adc r0, r0, ip
- cmp r4, #0
- str r0, [r1, #4]
- movne r3, #0
- umullne r2, r1, r0, r4
- mlane r1, r0, r3, r1
- mlane r1, r3, r4, r1
- movne r0, r1
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DE9E4: .word UNK04_02210524
-_021DE9E8: .word 0x6C078965
-_021DE9EC: .word 0x5D588B65
-_021DE9F0: .word 0x00269EC3
- arm_func_end MOD04_021DE8C8
-
- arm_func_start MOD04_021DE9F4
-MOD04_021DE9F4: ; 0x021DE9F4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- movs r4, r1
- mov r7, r0
- mov r6, r3
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r0, r2
- mov r1, r6
- bl strchr
- movs r5, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
-_021DEA30:
- mov r0, r7
- bl strlen
- mov r2, r0
- mov r1, r7
- add r0, r5, #1
- bl strncmp
- cmp r0, #0
- bne _021DEA68
- mov r0, r7
- bl strlen
- add r0, r0, r5
- ldrsb r0, [r0, #1]
- cmp r6, r0
- beq _021DEAA4
-_021DEA68:
- mov r1, r6
- add r0, r5, #1
- bl strchr
- cmp r0, #0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r1, r6
- add r0, r0, #1
- bl strchr
- movs r5, r0
- bne _021DEA30
- add sp, sp, #4
- mvn r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DEAA4:
- mov r1, r6
- add r0, r5, #1
- bl strchr
- movs r5, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r1, r6
- add r0, r5, #1
- bl strchr
- cmp r0, #0
- addne r1, r5, #1
- subne r6, r0, r1
- bne _021DEAE8
- add r0, r5, #1
- bl strlen
- mov r6, r0
-_021DEAE8:
- mov r0, r4
- mov r2, r6
- add r1, r5, #1
- bl strncpy
- mov r1, #0
- mov r0, r6
- strb r1, [r4, r6]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021DE9F4
-
- arm_func_start MOD04_021DEB0C
-MOD04_021DEB0C: ; 0x021DEB0C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r2
- mov r7, r0
- mov r6, r1
- mov r4, r3
- mov r0, r5
- mov r1, #0
- bl strchr
- mov r2, r0
- mov r0, r7
- mov r1, r6
- mov r3, r4
- bl MOD04_021DEB54
- mov r0, r5
- bl strlen
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021DEB0C
-
- arm_func_start MOD04_021DEB54
-MOD04_021DEB54: ; 0x021DEB54
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x10
- str r0, [sp]
- mov r4, r2
- str r3, [sp, #4]
- str r1, [sp, #8]
- ldr r2, _021DEB8C ; =UNK04_0220D328
- mov r0, r4
- mov r1, #0x1000
- bl OS_SNPrintf
- mov r0, r4
- bl strlen
- add sp, sp, #0x10
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DEB8C: .word UNK04_0220D328
- arm_func_end MOD04_021DEB54
-
- arm_func_start MOD04_021DEB90
-MOD04_021DEB90: ; 0x021DEB90
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD43C
- bl MOD04_021EFB28
- ldr r2, _021DEBCC ; =UNK04_02210540
- ldr r1, _021DEBD0 ; =0xFFFE8515
- str r0, [r2]
- mov r0, #9
- bl MOD04_021DD6B0
- ldr r0, _021DEBD4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DEBCC: .word UNK04_02210540
-_021DEBD0: .word 0xFFFE8515
-_021DEBD4: .word UNK04_0221053C
- arm_func_end MOD04_021DEB90
-
- arm_func_start MOD04_021DEBD8
-MOD04_021DEBD8: ; 0x021DEBD8
- ldr ip, _021DEBE0 ; =MOD04_021EAC1C
- bx ip
- .align 2, 0
-_021DEBE0: .word MOD04_021EAC1C
- arm_func_end MOD04_021DEBD8
-
- arm_func_start MOD04_021DEBE4
-MOD04_021DEBE4: ; 0x021DEBE4
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0xc
- mov r7, #0
- mov fp, r0
- mov sb, r1
- mov sl, r7
- bl MOD04_021E852C
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp sb, #4
- addls pc, pc, sb, lsl #2
- b _021DEC48
-_021DEC18: ; jump table
- b _021DEC2C ; case 0
- b _021DEC2C ; case 1
- b _021DEC34 ; case 2
- b _021DEC34 ; case 3
- b _021DEC40 ; case 4
-_021DEC2C:
- mov r4, r7
- b _021DEC48
-_021DEC34:
- mov r4, #6
- ldr r6, _021DEF4C ; =0xFFFFE250
- b _021DEC48
-_021DEC40:
- ldr r6, _021DEF50 ; =0xFFFFE24F
- mov r4, #9
-_021DEC48:
- cmp r4, #0
- bne _021DED00
- mov r0, fp
- bl MOD04_021FD3C4
- movs r7, r0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldrb r8, [r7, #1]
- ldr r1, [r0]
- mov r5, #1
- mov r0, r5,lsl r8
- ldr r1, [r1, #0x644]
- ands r0, r1, r0
- mov r0, r8
- moveq r5, #0
- bl MOD04_021EA9D8
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- bne _021DECA8
- cmp sb, #0
- beq _021DECBC
-_021DECA8:
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DECC0
- cmp r8, #0
- bne _021DECC0
-_021DECBC:
- mov sl, #1
-_021DECC0:
- mov r0, r8
- bl MOD04_021DF56C
- ldr r1, _021DEF54 ; =UNK04_0221053C
- ldrb r7, [r7]
- ldr r2, _021DEF58 ; =UNK04_02210544
- mov fp, #0
- ldr r3, [r1]
- str fp, [r2, r7, lsl #2]
- ldrb r2, [r3, #0x361]
- mov r7, r0
- sub r0, r2, #1
- strb r0, [r3, #0x361]
- ldr r1, [r1]
- ldrb r0, [r1, #0x368]
- sub r0, r0, #1
- strb r0, [r1, #0x368]
-_021DED00:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DED58
- ldr r0, [r1, #0x24]
- cmp r0, #6
- bne _021DED58
- cmp r5, #0
- bne _021DED58
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r4, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E85D4
- mov r0, r7
- bl MOD04_021E8A50
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DED58:
- mov r0, r4
- mov r1, r6
- mov r2, r7
- bl MOD04_021E8A74
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r4, #0
- beq _021DED90
- mov r0, r4
- mov r1, r6
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DED90:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEE04
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DEDBC
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DEE04
-_021DEDBC:
- ldr r2, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r2]
- ldrb r0, [r1, #0x361]
- add r6, r0, #2
- add r3, r1, r6, lsl #2
- ldr r3, [r3, #0x448]
- cmp r3, #0
- beq _021DEE04
- add r3, r1, r6
- ldrb r3, [r3, #0x624]
- add r0, r0, #1
- add r0, r1, r0
- strb r3, [r0, #0x624]
- ldr r0, [r2]
- ldrb r1, [r0, #0x361]
- add r0, r1, #1
- add r1, r1, #3
- bl MOD04_021E8830
-_021DEE04:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- bne _021DEE4C
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEE2C
- bl MOD04_021E85D4
- b _021DEE68
-_021DEE2C:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- bne _021DEE68
- ldr r1, _021DEF5C ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- b _021DEE68
-_021DEE4C:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- bne _021DEE68
- ldr r1, _021DEF5C ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
-_021DEE68:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #0
- beq _021DEE88
- ldrb r0, [r1, #0x369]
- cmp r0, #1
- bne _021DEEA4
-_021DEE88:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r2, [r0]
- ldrb r1, [r2, #0x368]
- strb r1, [r2, #0x36a]
- ldr r0, [r0]
- ldr r0, [r0, #0x364]
- bl MOD04_02202308
-_021DEEA4:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r6, [r0]
- ldr r0, [r6, #0x90]
- cmp r0, #0
- beq _021DEF00
- cmp r5, #0
- beq _021DEF00
- cmp sb, #0
- moveq r5, #1
- mov r0, r7
- movne r5, #0
- bl MOD04_021E1F18
- str r0, [sp]
- ldr r1, [r6, #0x94]
- ldr r0, _021DEF54 ; =UNK04_0221053C
- str r1, [sp, #4]
- ldr r1, [r0]
- mov r0, r4
- ldr r4, [r1, #0x90]
- mov r1, r5
- mov r2, sl
- mov r3, r8
- blx r4
-_021DEF00:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEF24
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DEF24:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_02200D6C
- bl MOD04_021E8DC0
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DEF4C: .word 0xFFFFE250
-_021DEF50: .word 0xFFFFE24F
-_021DEF54: .word UNK04_0221053C
-_021DEF58: .word UNK04_02210544
-_021DEF5C: .word UNK04_0220D334
- arm_func_end MOD04_021DEBE4
-
- arm_func_start MOD04_021DEF60
-MOD04_021DEF60: ; 0x021DEF60
- ldr ip, _021DEF68 ; =MOD04_021EAC5C
- bx ip
- .align 2, 0
-_021DEF68: .word MOD04_021EAC5C
- arm_func_end MOD04_021DEF60
-
- arm_func_start MOD04_021DEF6C
-MOD04_021DEF6C: ; 0x021DEF6C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- add r4, sp, #0
- mov r3, #0
- strb r3, [r4]
- strb r3, [r4, #1]
- strb r3, [r4, #2]
- strb r3, [r4, #3]
- strb r3, [r4, #4]
- strb r3, [r4, #5]
- strb r3, [r4, #6]
- strb r3, [r4, #7]
- strb r3, [r4, #8]
- strb r3, [r4, #9]
- strb r3, [r4, #0xa]
- mov r5, r1
- strb r3, [r4, #0xb]
- ldr r4, [r5, #8]
- mov r6, r0
- bl MOD04_021E2068
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0C8 ; =UNK04_0220D338
- bl strlen
- mov r2, r0
- ldr r1, _021DF0C8 ; =UNK04_0220D338
- mov r0, r4
- bl memcmp
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0C8 ; =UNK04_0220D338
- bl strlen
- add r4, r4, r0
- mov r0, r4
- mov r1, #0x76
- bl strchr
- sub r7, r0, r4
- add r0, sp, #0
- mov r1, r4
- mov r2, r7
- bl strncpy
- cmp r7, #0xa
- addhi sp, sp, #0xc
- ldmhiia sp!, {r4, r5, r6, r7, pc}
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0CC ; =UNK04_0220D340
- add r1, r7, #1
- add r4, r4, r1
- bl strlen
- mov r2, r0
- ldr r1, _021DF0CC ; =UNK04_0220D340
- mov r0, r4
- bl memcmp
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0D0 ; =UNK04_0221053C
- ldr r1, [r0]
- ldr r0, [r1, #0x24]
- cmp r0, #5
- beq _021DF0A8
- cmp r0, #6
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF0A8
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021DF0A8:
- ldr r0, _021DF0CC ; =UNK04_0220D340
- bl strlen
- add r2, r4, r0
- ldr r1, [r5]
- mov r0, r6
- bl MOD04_021E8EF4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DF0C8: .word UNK04_0220D338
-_021DF0CC: .word UNK04_0220D340
-_021DF0D0: .word UNK04_0221053C
- arm_func_end MOD04_021DEF6C
-
- arm_func_start MOD04_021DF0D4
-MOD04_021DF0D4: ; 0x021DF0D4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, [r1, #4]
- ldr r0, _021DF120 ; =0x00000603
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DF124 ; =0x00000901
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DF128 ; =0x00000B01
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- mov r0, #3
- bl MOD04_021DF414
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF120: .word 0x00000603
-_021DF124: .word 0x00000901
-_021DF128: .word 0x00000B01
- arm_func_end MOD04_021DF0D4
-
- arm_func_start MOD04_021DF12C
-MOD04_021DF12C: ; 0x021DF12C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- movs r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bne _021DF174
- cmp r6, #0
- beq _021DF174
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x4f4]
- cmp r0, #0
- bne _021DF1D8
- bl MOD04_021E8DC0
- mov r0, #3
- bl MOD04_021DF5CC
- b _021DF1D8
-_021DF174:
- cmp r7, #0
- bne _021DF1D8
- mov r0, #6
- bl MOD04_021DF5CC
- ldr r1, _021DF2AC ; =UNK04_0221053C
- mov r0, #0
- ldr r3, [r1]
- ldrb r1, [r3, #0x361]
- cmp r1, #0
- blt _021DF1D8
- ldr r2, [r3, #0x64]
-_021DF1A0:
- add r1, r3, r0, lsl #2
- ldr r1, [r1, #0x448]
- cmp r2, r1
- bne _021DF1C8
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r1]
- add r0, r1, r0
- ldrb r0, [r0, #0x624]
- strb r0, [r1, #0x2c]
- b _021DF1D8
-_021DF1C8:
- ldrb r1, [r3, #0x361]
- add r0, r0, #1
- cmp r0, r1
- ble _021DF1A0
-_021DF1D8:
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r0, _021DF2B0 ; =0x00000624
- ldr r2, [r1]
- ldrb r1, [r2, #0x361]
- add r0, r2, r0
- add r1, r1, #1
- bl MOD04_021DF530
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r1]
- str r0, [r1, #0x644]
- bl MOD04_021E8780
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF224
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DF258
-_021DF224:
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r1, [sp, #0x20]
- ldr r3, [r0]
- mov r0, r7
- str r1, [sp]
- ldr r2, [r3, #0x8c]
- mov r1, r6
- str r2, [sp, #4]
- ldr r6, [r3, #0x88]
- mov r2, r5
- mov r3, r4
- blx r6
- b _021DF26C
-_021DF258:
- ldr r2, [r1, #0x84]
- ldr r3, [r1, #0x80]
- mov r0, r7
- mov r1, r6
- blx r3
-_021DF26C:
- cmp r7, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r0, #0x24]
- cmp r0, #5
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DF2AC: .word UNK04_0221053C
-_021DF2B0: .word 0x00000624
- arm_func_end MOD04_021DF12C
-
- arm_func_start MOD04_021DF2B4
-MOD04_021DF2B4: ; 0x021DF2B4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DF300 ; =UNK04_0221053C
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- ldr r0, [r0, #0x28]
- cmp r0, #4
- beq _021DF2DC
- bl MOD04_021DF5CC
-_021DF2DC:
- ldr r1, _021DF300 ; =UNK04_0221053C
- mov r0, r5
- ldr r3, [r1]
- mov r1, r4
- ldr r2, [r3, #0x7c]
- ldr r3, [r3, #0x78]
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DF300: .word UNK04_0221053C
- arm_func_end MOD04_021DF2B4
-
- arm_func_start MOD04_021DF304
-MOD04_021DF304: ; 0x021DF304
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r0
- mov r4, r1
- bne _021DF334
- ldr r1, _021DF36C ; =UNK04_0221053C
- mov r0, #3
- ldr r1, [r1]
- str r4, [r1, #0x64]
- bl MOD04_021DF5CC
- bl MOD04_021E1ED4
- b _021DF33C
-_021DF334:
- mov r0, #0
- bl MOD04_021DF5CC
-_021DF33C:
- ldr r0, _021DF36C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r3, [r0, #0x70]
- cmp r3, #0
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, [r0, #0x74]
- mov r0, r5
- mov r1, r4
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DF36C: .word UNK04_0221053C
- arm_func_end MOD04_021DF304
-
- arm_func_start MOD04_021DF370
-MOD04_021DF370: ; 0x021DF370
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #7
- addls pc, pc, r4, lsl #2
- b _021DF3F4
-_021DF38C: ; jump table
- b _021DF3F4 ; case 0
- b _021DF3AC ; case 1
- b _021DF3B8 ; case 2
- b _021DF3C8 ; case 3
- b _021DF3D4 ; case 4
- b _021DF3B8 ; case 5
- b _021DF3E0 ; case 6
- b _021DF3EC ; case 7
-_021DF3AC:
- mov r0, #9
- mvn r2, #0
- b _021DF3F4
-_021DF3B8:
- mov r0, #0
- mov r2, r0
- mov r4, r0
- b _021DF3F4
-_021DF3C8:
- mov r0, #6
- mvn r2, #9
- b _021DF3F4
-_021DF3D4:
- mov r0, #6
- mvn r2, #0x1d
- b _021DF3F4
-_021DF3E0:
- mov r0, #6
- mvn r2, #0x45
- b _021DF3F4
-_021DF3EC:
- mov r0, #6
- mvn r2, #0x4f
-_021DF3F4:
- cmp r0, #0
- beq _021DF408
- ldr r1, _021DF410 ; =0xFFFEFA48
- add r1, r2, r1
- bl MOD04_021E0EAC
-_021DF408:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DF410: .word 0xFFFEFA48
- arm_func_end MOD04_021DF370
-
- arm_func_start MOD04_021DF414
-MOD04_021DF414: ; 0x021DF414
- stmdb sp!, {r4, r5, r6, lr}
- movs r6, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r6, #4
- addls pc, pc, r6, lsl #2
- b _021DF470
-_021DF430: ; jump table
- b _021DF470 ; case 0
- b _021DF444 ; case 1
- b _021DF450 ; case 2
- b _021DF45C ; case 3
- b _021DF468 ; case 4
-_021DF444:
- mov r4, #9
- mvn r5, #0
- b _021DF470
-_021DF450:
- mov r4, #9
- mvn r5, #1
- b _021DF470
-_021DF45C:
- mov r4, #6
- mvn r5, #9
- b _021DF470
-_021DF468:
- mov r4, #6
- mvn r5, #0x13
-_021DF470:
- ldr r0, _021DF51C ; =UNK04_0221053C
- ldr r1, [r0]
- ldr r0, [r1, #0x24]
- cmp r0, #5
- addls pc, pc, r0, lsl #2
- b _021DF500
-_021DF488: ; jump table
- b _021DF500 ; case 0
- b _021DF4A0 ; case 1
- b _021DF4B8 ; case 2
- b _021DF500 ; case 3
- b _021DF4F4 ; case 4
- b _021DF4DC ; case 5
-_021DF4A0:
- ldr r1, _021DF520 ; =0xFFFF11B8
- mov r0, r4
- add r5, r5, r1
- mov r1, r5
- bl MOD04_021E0EAC
- b _021DF508
-_021DF4B8:
- ldr r1, [r1, #0x9c]
- ldr r0, _021DF520 ; =0xFFFF11B8
- cmp r1, #1
- add r5, r5, r0
- bge _021DF508
- mov r0, r4
- mov r1, r5
- bl MOD04_021E0EAC
- b _021DF508
-_021DF4DC:
- ldr r1, _021DF524 ; =0xFFFEC398
- mov r0, r4
- add r5, r5, r1
- mov r1, r5
- bl MOD04_021E8E08
- b _021DF508
-_021DF4F4:
- ldr r0, _021DF528 ; =0xFFFEEAA8
- add r5, r5, r0
- b _021DF508
-_021DF500:
- ldr r0, _021DF52C ; =0xFFFE9C88
- add r5, r5, r0
-_021DF508:
- mov r0, r4
- mov r1, r5
- bl MOD04_021E2114
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF51C: .word UNK04_0221053C
-_021DF520: .word 0xFFFF11B8
-_021DF524: .word 0xFFFEC398
-_021DF528: .word 0xFFFEEAA8
-_021DF52C: .word 0xFFFE9C88
- arm_func_end MOD04_021DF414
-
- arm_func_start MOD04_021DF530
-MOD04_021DF530: ; 0x021DF530
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov lr, #0
- mov ip, lr
- cmp r1, #0
- ble _021DF560
- mov r3, #1
-_021DF54C:
- ldrb r2, [r0, ip]
- add ip, ip, #1
- cmp ip, r1
- orr lr, lr, r3, lsl r2
- blt _021DF54C
-_021DF560:
- mov r0, lr
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF530
-
- arm_func_start MOD04_021DF56C
-MOD04_021DF56C: ; 0x021DF56C
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl MOD04_021E874C
- mov r1, r0
- cmp r1, #0
- mov r0, #0
- ble _021DF5B0
- ldr r3, [sp]
-_021DF594:
- ldrb r2, [r3]
- cmp r4, r2
- beq _021DF5B0
- add r0, r0, #1
- cmp r0, r1
- add r3, r3, #1
- blt _021DF594
-_021DF5B0:
- cmp r0, r1
- addeq sp, sp, #8
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021E8830
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DF56C
-
- arm_func_start MOD04_021DF5CC
-MOD04_021DF5CC: ; 0x021DF5CC
- ldr r1, _021DF5E8 ; =UNK04_0221053C
- ldr r3, [r1]
- ldr r2, [r3, #0x24]
- str r2, [r3, #0x28]
- ldr r1, [r1]
- str r0, [r1, #0x24]
- bx lr
- .align 2, 0
-_021DF5E8: .word UNK04_0221053C
- arm_func_end MOD04_021DF5CC
-
- arm_func_start MOD04_021DF5EC
-MOD04_021DF5EC: ; 0x021DF5EC
- bx lr
- arm_func_end MOD04_021DF5EC
-
- arm_func_start MOD04_021DF5F0
-MOD04_021DF5F0: ; 0x021DF5F0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- ldr r4, _021DF634 ; =UNK04_02210544
-_021DF600:
- ldr r0, [r4, r5, lsl #2]
- cmp r0, #0
- beq _021DF620
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- cmp r6, r0
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, pc}
-_021DF620:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021DF600
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF634: .word UNK04_02210544
- arm_func_end MOD04_021DF5F0
-
- arm_func_start MOD04_021DF638
-MOD04_021DF638: ; 0x021DF638
- ldr r1, _021DF644 ; =UNK04_022105C4
- add r0, r1, r0, lsl #3
- bx lr
- .align 2, 0
-_021DF644: .word UNK04_022105C4
- arm_func_end MOD04_021DF638
-
- arm_func_start MOD04_021DF648
-MOD04_021DF648: ; 0x021DF648
- stmdb sp!, {lr}
- sub sp, sp, #4
- cmp r1, #0
- mov ip, #0
- ble _021DF684
- ldr r2, _021DF6B8 ; =UNK04_0221053C
- ldr r3, [r2]
-_021DF664:
- add r2, r3, ip, lsl #2
- ldr r2, [r2, #0x448]
- cmp r0, r2
- beq _021DF684
- add r2, ip, #1
- and ip, r2, #0xff
- cmp ip, r1
- blt _021DF664
-_021DF684:
- cmp ip, r1
- addge sp, sp, #4
- movge r0, #0
- ldmgeia sp!, {pc}
- ldr r0, _021DF6B8 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, ip
- ldrb r0, [r0, #0x624]
- bl MOD04_021DF760
- bl MOD04_021DF730
- bl MOD04_021DF6BC
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF6B8: .word UNK04_0221053C
- arm_func_end MOD04_021DF648
-
- arm_func_start MOD04_021DF6BC
-MOD04_021DF6BC: ; 0x021DF6BC
- ldr r1, _021DF6C8 ; =UNK04_02210544
- add r0, r1, r0, lsl #2
- bx lr
- .align 2, 0
-_021DF6C8: .word UNK04_02210544
- arm_func_end MOD04_021DF6BC
-
- arm_func_start MOD04_021DF6CC
-MOD04_021DF6CC: ; 0x021DF6CC
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DF6FC ; =UNK04_02210544
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- ldr r1, _021DF700 ; =UNK04_022105C4
- mov r0, #0
- mov r2, #0x100
- bl MIi_CpuClear32
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF6FC: .word UNK04_02210544
-_021DF700: .word UNK04_022105C4
- arm_func_end MOD04_021DF6CC
-
- arm_func_start MOD04_021DF704
-MOD04_021DF704: ; 0x021DF704
- ldr r2, _021DF72C ; =UNK04_02210544
- mov r0, #0
-_021DF70C:
- ldr r1, [r2, r0, lsl #2]
- cmp r1, #0
- bxeq lr
- add r0, r0, #1
- cmp r0, #0x20
- blt _021DF70C
- mvn r0, #0
- bx lr
- .align 2, 0
-_021DF72C: .word UNK04_02210544
- arm_func_end MOD04_021DF704
-
- arm_func_start MOD04_021DF730
-MOD04_021DF730: ; 0x021DF730
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD3C4
- ldrb r0, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF730
-
- arm_func_start MOD04_021DF748
-MOD04_021DF748: ; 0x021DF748
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF748
-
- arm_func_start MOD04_021DF760
-MOD04_021DF760: ; 0x021DF760
- stmdb sp!, {r4, r5, r6, lr}
- ldr r1, _021DF7BC ; =UNK04_0221053C
- mov r6, r0
- ldr r0, [r1]
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r4, _021DF7C0 ; =UNK04_02210544
- mov r5, #0
-_021DF784:
- ldr r0, [r4, r5, lsl #2]
- cmp r0, #0
- beq _021DF7A8
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- cmp r6, r0
- ldreq r0, _021DF7C0 ; =UNK04_02210544
- ldreq r0, [r0, r5, lsl #2]
- ldmeqia sp!, {r4, r5, r6, pc}
-_021DF7A8:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021DF784
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF7BC: .word UNK04_0221053C
-_021DF7C0: .word UNK04_02210544
- arm_func_end MOD04_021DF760
-
- arm_func_start MOD04_021DF7C4
-MOD04_021DF7C4: ; 0x021DF7C4
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #0
- ldmneia sp!, {r4, pc}
- mov r0, #0x4000
- bl MOD04_021DE8C8
- add r0, r0, #0xc000
- mov r1, r0, lsl #0x10
- ldr r3, _021DF87C ; =UNK04_0221053C
- mov r0, #0
- mov r2, r0
- mov r1, r1, lsr #0x10
- ldr r4, [r3]
- bl MOD04_021FFEB0
- ldr r1, _021DF880 ; =MOD04_021DEB90
- ldr r2, _021DF87C ; =UNK04_0221053C
- str r1, [sp]
- mov r1, r0
- ldr r0, [r2]
- ldr r2, [r4, #0x14]
- ldr r3, [r4, #0x18]
- bl MOD04_021FD71C
- mov r4, r0
- bl MOD04_021DF370
- cmp r0, #0
- addne sp, sp, #8
- movne r0, r4
- ldmneia sp!, {r4, pc}
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r1, _021DF884 ; =MOD04_021E9204
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD6C8
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r1, _021DF888 ; =MOD04_021E9464
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD434
- mov r0, r4
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DF87C: .word UNK04_0221053C
-_021DF880: .word MOD04_021DEB90
-_021DF884: .word MOD04_021E9204
-_021DF888: .word MOD04_021E9464
- arm_func_end MOD04_021DF7C4
-
- arm_func_start MOD04_021DF88C
-MOD04_021DF88C: ; 0x021DF88C
- ldr r0, _021DF8A4 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- ldrne r0, [r0, #0x24]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DF8A4: .word UNK04_0221053C
- arm_func_end MOD04_021DF88C
-
- arm_func_start MOD04_021DF8A8
-MOD04_021DF8A8: ; 0x021DF8A8
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DF8F0 ; =UNK04_0221053C
- ldr r2, [r1]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- mov r1, #1
- mov r1, r1,lsl r0
- ldr r2, [r2, #0x644]
- ands r1, r2, r1
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021DF5F0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF8F0: .word UNK04_0221053C
- arm_func_end MOD04_021DF8A8
-
- arm_func_start MOD04_021DF8F4
-MOD04_021DF8F4: ; 0x021DF8F4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r2, _021DF954 ; =UNK04_0221053C
- ldr r3, [r2]
- cmp r3, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldr r1, _021DF958 ; =0x00000624
- add r1, r3, r1
- str r1, [r0]
- ldr r2, [r2]
- ldrb r1, [r2, #0x369]
- cmp r1, #2
- beq _021DF93C
- ldrb r1, [r2, #0x369]
- cmp r1, #3
- bne _021DF948
-_021DF93C:
- bl MOD04_021E86A4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DF948:
- bl MOD04_021E874C
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF954: .word UNK04_0221053C
-_021DF958: .word 0x00000624
- arm_func_end MOD04_021DF8F4
-
- arm_func_start MOD04_021DF95C
-MOD04_021DF95C: ; 0x021DF95C
- ldr r0, _021DF974 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- ldrneb r0, [r0, #0x2c]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DF974: .word UNK04_0221053C
- arm_func_end MOD04_021DF95C
-
- arm_func_start MOD04_021DF978
-MOD04_021DF978: ; 0x021DF978
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DF9D0 ; =UNK04_0221053C
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF9B0
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DF9C0
-_021DF9B0:
- bl MOD04_021E87D8
- add sp, sp, #4
- add r0, r0, #1
- ldmfd sp!, {pc}
-_021DF9C0:
- bl MOD04_021E8804
- add r0, r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF9D0: .word UNK04_0221053C
- arm_func_end MOD04_021DF978
-
- arm_func_start MOD04_021DF9D4
-MOD04_021DF9D4: ; 0x021DF9D4
- stmdb sp!, {r4, lr}
- ldr r1, _021DFA3C ; =UNK04_0221053C
- mov r4, r0
- ldr r0, [r1]
- cmp r0, #0
- beq _021DFA14
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFA14
- ldr r0, _021DFA3C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #5
- beq _021DFA1C
- cmp r0, #6
- beq _021DFA1C
-_021DFA14:
- mvn r0, #0
- ldmia sp!, {r4, pc}
-_021DFA1C:
- mov r0, r4
- bl MOD04_021DF760
- cmp r0, #0
- mvneq r0, #1
- ldmeqia sp!, {r4, pc}
- bl MOD04_021FD488
- mov r0, #0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DFA3C: .word UNK04_0221053C
- arm_func_end MOD04_021DF9D4
-
- arm_func_start MOD04_021DFA40
-MOD04_021DFA40: ; 0x021DFA40
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DFA80
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFA80
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r0, [r2, #0x24]
- cmp r0, #5
- beq _021DFA8C
- cmp r0, #6
- beq _021DFA8C
-_021DFA80:
- add sp, sp, #4
- mvn r0, #0
- ldmfd sp!, {pc}
-_021DFA8C:
- ldrb r0, [r2, #0x361]
- cmp r0, #0
- bne _021DFAC0
- ldr r1, _021DFAF4 ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_02200D6C
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #4
- mov r0, #1
- ldmfd sp!, {pc}
-_021DFAC0:
- mov r1, #1
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- strb r1, [r2, #0x2d]
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD45C
- ldr r1, _021DFAF0 ; =UNK04_0221053C
- mov r0, #0
- ldr r1, [r1]
- strb r0, [r1, #0x2d]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DFAF0: .word UNK04_0221053C
-_021DFAF4: .word UNK04_0220D334
- arm_func_end MOD04_021DFA40
-
- arm_func_start MOD04_021DFAF8
-MOD04_021DFAF8: ; 0x021DFAF8
- ldr r2, _021DFB1C ; =UNK04_0221053C
- ldr r3, [r2]
- cmp r3, #0
- moveq r0, #0
- strne r0, [r3, #0x90]
- ldrne r2, [r2]
- movne r0, #1
- strne r1, [r2, #0x94]
- bx lr
- .align 2, 0
-_021DFB1C: .word UNK04_0221053C
- arm_func_end MOD04_021DFAF8
-
- arm_func_start MOD04_021DFB20
-MOD04_021DFB20: ; 0x021DFB20
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x224
- mvn ip, #0
- mov r7, r0
- mov r6, r1
- mov r4, r2
- mov r5, r3
- str ip, [sp, #8]
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFB60
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #3
- beq _021DFB6C
-_021DFB60:
- add sp, sp, #0x224
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFB6C:
- bl MOD04_021DF6CC
- ldr r1, _021DFD04 ; =UNK04_0221053C
- mov r0, #5
- ldr r2, [r1]
- str r6, [r2, #0x88]
- ldr r1, [r1]
- str r4, [r1, #0x8c]
- bl MOD04_021DF5CC
- mov r0, r7
- bl MOD04_021E1F84
- movs r4, r0
- beq _021DFBB8
- ldr r0, _021DFD04 ; =UNK04_0221053C
- mov r1, r4
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F05F4
- cmp r0, #0
- bne _021DFBC0
-_021DFBB8:
- mov r5, #0xb
- b _021DFC8C
-_021DFBC0:
- ldr r0, _021DFD04 ; =UNK04_0221053C
- add r2, sp, #8
- ldr r0, [r0]
- mov r1, r4
- add r0, r0, #0x1c
- bl MOD04_021F0664
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r1, [sp, #8]
- ldr r0, [r0]
- add r2, sp, #0x10
- add r0, r0, #0x1c
- bl MOD04_021F06E4
- ldr r0, [sp, #0x14]
- cmp r0, #6
- movne r5, #0xb
- bne _021DFC8C
- ldr r0, _021DFD08 ; =UNK04_0220D344
- mov r6, #0x30
- add r1, sp, #0xc
- add r2, sp, #0x18
- mov r3, #0x2f
- strb r6, [sp, #0xc]
- bl MOD04_021DE9F4
- add r0, sp, #0xc
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- and r6, r0, #0xff
- ldr r0, _021DFD0C ; =UNK04_0220D348
- add r1, sp, #0xc
- add r2, sp, #0x18
- mov r3, #0x2f
- bl MOD04_021DE9F4
- add r0, sp, #0xc
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- and r0, r0, #0xff
- cmp r0, r6
- moveq r5, #0xd
- beq _021DFC8C
- ldr r6, [sp, #0x238]
- ldr r1, _021DFD10 ; =MOD04_021DF12C
- mov r0, r4
- mov r3, r5
- mov r2, #0
- str r6, [sp]
- bl MOD04_021E9FD0
- add sp, sp, #0x224
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFC8C:
- mov r0, r5
- mov r1, #0
- bl MOD04_021DD6B0
- ldr r0, _021DFD04 ; =UNK04_0221053C
- mov r1, #0
- ldr r4, [r0]
- mov r0, r5
- str r1, [sp]
- ldr r2, [r4, #0x8c]
- mov r3, r1
- str r2, [sp, #4]
- ldr r4, [r4, #0x88]
- mov r2, #1
- blx r4
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DFCF8
- ldr r0, [r0, #0x24]
- cmp r0, #5
- bne _021DFCF8
- mov r0, #3
- bl MOD04_021DF5CC
- ldr r1, _021DFD14 ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
-_021DFCF8:
- mov r0, #1
- add sp, sp, #0x224
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DFD04: .word UNK04_0221053C
-_021DFD08: .word UNK04_0220D344
-_021DFD0C: .word UNK04_0220D348
-_021DFD10: .word MOD04_021DF12C
-_021DFD14: .word UNK04_0220D334
- arm_func_end MOD04_021DFB20
-
- arm_func_start MOD04_021DFD18
-MOD04_021DFD18: ; 0x021DFD18
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFD50
- ldr r0, _021DFDB4 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #3
- beq _021DFD5C
-_021DFD50:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFD5C:
- bl MOD04_021DF6CC
- ldr r1, _021DFDB4 ; =UNK04_0221053C
- mov r2, #0
- ldr r3, [r1]
- mov r0, #5
- str r6, [r3, #0x88]
- ldr r3, [r1]
- str r5, [r3, #0x8c]
- ldr r1, [r1]
- strb r2, [r1, #0x2c]
- bl MOD04_021DF5CC
- sub r0, r7, #1
- ldr r5, [sp, #0x18]
- ldr r1, _021DFDB8 ; =MOD04_021DF12C
- mov r3, r4
- and r0, r0, #0xff
- mov r2, #0
- str r5, [sp]
- bl MOD04_021EA138
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DFDB4: .word UNK04_0221053C
-_021DFDB8: .word MOD04_021DF12C
- arm_func_end MOD04_021DFD18
-
- arm_func_start MOD04_021DFDBC
-MOD04_021DFDBC: ; 0x021DFDBC
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFDF8
- ldr r0, _021DFE5C ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r1, [r2, #0x24]
- cmp r1, #3
- blt _021DFDF8
- cmp r1, #4
- bne _021DFE04
-_021DFDF8:
- add sp, sp, #0x10
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DFE04:
- str r6, [r2, #0x78]
- ldr r1, [r0]
- mov r0, #4
- str r5, [r1, #0x7c]
- bl MOD04_021DF5CC
- ldr r0, _021DFE5C ; =UNK04_0221053C
- ldr r1, [sp, #0x20]
- ldr r3, [r0]
- ldr r0, [sp, #0x24]
- str r4, [sp]
- str r1, [sp, #4]
- ldr r4, [sp, #0x28]
- str r0, [sp, #8]
- ldr r2, _021DFE60 ; =MOD04_021DF2B4
- add r0, r3, #0xe0
- add r1, r3, #0x1e0
- mov r3, #0
- str r4, [sp, #0xc]
- bl MOD04_021E2174
- mov r0, #1
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DFE5C: .word UNK04_0221053C
-_021DFE60: .word MOD04_021DF2B4
- arm_func_end MOD04_021DFDBC
-
- arm_func_start MOD04_021DFE64
-MOD04_021DFE64: ; 0x021DFE64
- stmdb sp!, {r4, r5, r6, lr}
- movs r4, r0
- mov r6, r2
- mov r5, r3
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFE9C
- ldr r0, _021DFF6C ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r1, [r2, #0x24]
- cmp r1, #0
- beq _021DFEA4
-_021DFE9C:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DFEA4:
- str r6, [r2, #0x70]
- ldr r1, [r0]
- cmp r4, #0
- str r5, [r1, #0x74]
- beq _021DFEC4
- ldrh r1, [r4]
- cmp r1, #0
- bne _021DFECC
-_021DFEC4:
- mov r5, #0
- b _021DFF18
-_021DFECC:
- ldr r1, [r0]
- mov r0, #0
- add r1, r1, #0x2e
- mov r2, #0x34
- bl MIi_CpuClear16
- mov r0, r4
- bl MOD04_021DE89C
- cmp r0, #0x19
- movhi r5, #0x19
- bhi _021DFF00
- mov r0, r4
- bl MOD04_021DE89C
- mov r5, r0
-_021DFF00:
- ldr r1, _021DFF6C ; =UNK04_0221053C
- mov r0, r4
- ldr r1, [r1]
- mov r2, r5, lsl #1
- add r1, r1, #0x2e
- bl MIi_CpuCopy16
-_021DFF18:
- ldr r0, _021DFF6C ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, r5, lsl #1
- strh r1, [r0, #0x2e]
- bl MOD04_021DDC1C
- cmp r0, #4
- beq _021DFF4C
- ldr r1, _021DFF70 ; =0xFFFF1596
- mov r0, #2
- bl MOD04_021E0EAC
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
-_021DFF4C:
- mov r0, #1
- bl MOD04_021DF5CC
- ldr r0, _021DFF6C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x68]
- bl MOD04_021EE898
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DFF6C: .word UNK04_0221053C
-_021DFF70: .word 0xFFFF1596
- arm_func_end MOD04_021DFE64
-
- arm_func_start MOD04_021DFF74
-MOD04_021DFF74: ; 0x021DFF74
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DD984
- cmp r0, #0
- beq _021DFF8C
- bl MOD04_021DF5EC
-_021DFF8C:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x24]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #6
- addls pc, pc, r0, lsl #2
- b _021E0194
-_021DFFD8: ; jump table
- b _021E0194 ; case 0
- b _021DFFF4 ; case 1
- b _021E0124 ; case 2
- b _021E012C ; case 3
- b _021E012C ; case 4
- b _021E013C ; case 5
- b _021E014C ; case 6
-_021DFFF4:
- bl MOD04_021EE6A0
- cmp r0, #1
- beq _021E0014
- cmp r0, #2
- beq _021E00FC
- cmp r0, #3
- beq _021E0110
- b _021E0194
-_021E0014:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- ldr r1, [r0, #0xa0]
- add r0, r0, #0x1c
- bl MOD04_021F0F94
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- ldr r2, _021E01E8 ; =MOD04_021DF0D4
- mov r3, r1
- add r0, r0, #0x1c
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01EC ; =MOD04_021DEF6C
- ldr r0, [r0]
- mov r1, #3
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01F0 ; =MOD04_021E20C8
- ldr r0, [r0]
- mov r1, #1
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01F4 ; =MOD04_021E1FE4
- ldr r0, [r0]
- mov r1, #2
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- mov r0, #2
- bl MOD04_021DF5CC
- bl MOD04_021E1034
- b _021E0194
-_021E00FC:
- ldr r1, _021E01F8 ; =0xFFFFB172
- mov r0, #3
- bl MOD04_021E0EAC
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0110:
- ldr r1, _021E01FC ; =0xFFFFB17B
- mov r0, #4
- bl MOD04_021E0EAC
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0124:
- bl MOD04_021E0F1C
- b _021E0194
-_021E012C:
- bl MOD04_021E2228
- mov r0, #0
- bl MOD04_021E9568
- b _021E0194
-_021E013C:
- mov r0, #1
- bl MOD04_021E9568
- bl MOD04_021E2228
- b _021E0194
-_021E014C:
- bl MOD04_021EAA64
- bl MOD04_021E2228
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021E0174
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021E0180
-_021E0174:
- mov r0, #1
- bl MOD04_021E9568
- b _021E0194
-_021E0180:
- ldr r0, [r1]
- cmp r0, #0
- beq _021E0194
- mov r0, #0
- bl MOD04_021E9568
-_021E0194:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x36c]
- cmp r0, #1
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, [r1, #0x364]
- cmp r0, #0
- beq _021E01CC
- bl MOD04_02202280
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x364]
-_021E01CC:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- strb r1, [r0, #0x36c]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E01E4: .word UNK04_0221053C
-_021E01E8: .word MOD04_021DF0D4
-_021E01EC: .word MOD04_021DEF6C
-_021E01F0: .word MOD04_021E20C8
-_021E01F4: .word MOD04_021E1FE4
-_021E01F8: .word 0xFFFFB172
-_021E01FC: .word 0xFFFFB17B
- arm_func_end MOD04_021DFF74
-
- arm_func_start MOD04_021E0200
-MOD04_021E0200: ; 0x021E0200
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x364]
- cmp r0, #0
- beq _021E023C
- bl MOD04_02202280
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x364]
-_021E023C:
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r1, [r0]
- strb r2, [r1, #0x36c]
- ldr r0, [r0]
- ldr r0, [r0, #0x438]
- cmp r0, #0
- beq _021E0270
- bl MOD04_02203E80
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x438]
-_021E0270:
- bl MOD04_02200D6C
- bl MOD04_021FBE7C
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr ip, [r0]
- ldr r0, [ip, #0x1c]
- cmp r0, #0
- beq _021E0324
- mov r1, #0
- mov r2, r1
- mov r3, r1
- add r0, ip, #0x1c
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r3, r2
- add r0, r0, #0x1c
- mov r1, #3
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r3, r2
- add r0, r0, #0x1c
- mov r1, #1
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r1, #2
- add r0, r0, #0x1c
- mov r3, r2
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F0F18
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F0F64
- mov r1, #0
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- str r1, [r0, #0x1c]
-_021E0324:
- bl MOD04_021E0E48
- bl MOD04_021E1D90
- bl MOD04_021E854C
- bl MOD04_021EA9C4
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- beq _021E035C
- bl MOD04_021FD704
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0]
-_021E035C:
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E0370: .word UNK04_0221053C
- arm_func_end MOD04_021E0200
-
- arm_func_start MOD04_021E0374
-MOD04_021E0374: ; 0x021E0374
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- ldr ip, _021E05D8 ; =UNK04_0221053C
- mov r6, r1
- mov r5, r2
- mov r4, r3
- str r0, [ip]
- bl MOD04_021DD6F0
- ldr r0, _021E05D8 ; =UNK04_0221053C
- mov r2, #0
- ldr r1, [r0]
- ldr r3, _021E05DC ; =MOD04_021E8F80
- str r2, [r1]
- ldr r1, [r0]
- ldr r2, _021E05E0 ; =MOD04_021DEF60
- str r3, [r1, #4]
- ldr r1, [r0]
- ldr ip, [sp, #0x24]
- str r2, [r1, #8]
- cmp ip, #0
- ldr r2, [r0]
- ldr r3, _021E05E4 ; =MOD04_021DEBE4
- ldr r1, _021E05E8 ; =MOD04_021DEBD8
- str r3, [r2, #0xc]
- ldr r0, [r0]
- ldr r3, [sp, #0x28]
- str r1, [r0, #0x10]
- ldr r0, _021E05D8 ; =UNK04_0221053C
- moveq ip, #0x2000
- ldr r0, [r0]
- cmp r3, #0
- str ip, [r0, #0x14]
- moveq r3, #0x2000
- ldr r1, _021E05D8 ; =UNK04_0221053C
- mov r0, #0
- ldr r2, [r1]
- ldr ip, _021E05EC ; =UNK04_02210F94
- str r3, [r2, #0x18]
- ldr r2, [r1]
- ldr r3, _021E05F0 ; =UNK04_02211094
- str r0, [r2, #0x1c]
- ldr r2, [r1]
- str r6, [r2, #0x20]
- ldr r2, [r1]
- str r0, [r2, #0x24]
- ldr r2, [r1]
- str r0, [r2, #0x28]
- ldr r2, [r1]
- strb r0, [r2, #0x2c]
- ldr r2, [r1]
- strb r0, [r2, #0x2d]
- ldr r2, [r1]
- str r0, [r2, #0x64]
- ldr r2, [r1]
- str ip, [r2, #0x68]
- ldr r2, [r1]
- str r3, [r2, #0x6c]
- ldr r2, [r1]
- str r0, [r2, #0x70]
- ldr r2, [r1]
- str r0, [r2, #0x74]
- ldr r2, [r1]
- str r0, [r2, #0x78]
- ldr r2, [r1]
- str r0, [r2, #0x7c]
- ldr r2, [r1]
- str r0, [r2, #0x80]
- ldr r2, [r1]
- str r0, [r2, #0x84]
- ldr r2, [r1]
- str r0, [r2, #0x88]
- ldr r2, [r1]
- str r0, [r2, #0x8c]
- ldr r2, [r1]
- str r0, [r2, #0x90]
- ldr r1, [r1]
- str r0, [r1, #0x94]
- bl MOD04_021DF6CC
- ldr r0, _021E05D8 ; =UNK04_0221053C
- mov r3, r5
- ldr r2, [r0]
- ldr r1, [r6, #0x24]
- ldr r0, _021E05F4 ; =MOD04_021DF304
- str r1, [sp]
- add r1, r2, #0x2e
- str r1, [sp, #4]
- str r0, [sp, #8]
- mov r5, #0
- add r0, r2, #0x98
- mov r1, r6
- add r2, r2, #0x1c
- str r5, [sp, #0xc]
- bl MOD04_021E1074
- ldr r0, _021E05D8 ; =UNK04_0221053C
- ldr r2, [sp, #0x30]
- ldr r5, [r0]
- ldr r3, [sp, #0x2c]
- str r2, [sp]
- add r0, r5, #0x2f8
- add r1, r5, #0x1c
- add r2, r5, #0x2e
- bl MOD04_021E234C
- ldr r0, _021E05D8 ; =UNK04_0221053C
- ldr r1, _021E05EC ; =UNK04_02210F94
- ldr r2, [r0]
- ldr r0, _021E05F0 ; =UNK04_02211094
- str r1, [sp]
- str r0, [sp, #4]
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x30]
- str r1, [sp, #8]
- str r0, [sp, #0xc]
- add r0, r2, #0x354
- add r1, r2, #0x1c
- add r3, r2, #4
- bl MOD04_021EA368
- ldr r1, _021E05D8 ; =UNK04_0221053C
- ldr r0, _021E05F8 ; =0x000007D8
- ldr r1, [r1]
- add r0, r1, r0
- bl MOD04_021EACB4
- mov r0, r4
- bl strlen
- cmp r0, #0x100
- movhs r5, #0xff
- bhs _021E0578
- mov r0, r4
- bl strlen
- mov r5, r0
-_021E0578:
- ldr r1, _021E05EC ; =UNK04_02210F94
- mov r0, r4
- mov r2, r5
- bl MI_CpuCopy8
- ldr r0, [sp, #0x20]
- ldr r1, _021E05EC ; =UNK04_02210F94
- mov r2, #0
- strb r2, [r1, r5]
- bl strlen
- cmp r0, #0x100
- movhs r4, #0xff
- bhs _021E05B4
- ldr r0, [sp, #0x20]
- bl strlen
- mov r4, r0
-_021E05B4:
- ldr r0, [sp, #0x20]
- ldr r1, _021E05F0 ; =UNK04_02211094
- mov r2, r4
- bl MI_CpuCopy8
- ldr r0, _021E05F0 ; =UNK04_02211094
- mov r1, #0
- strb r1, [r0, r4]
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E05D8: .word UNK04_0221053C
-_021E05DC: .word MOD04_021E8F80
-_021E05E0: .word MOD04_021DEF60
-_021E05E4: .word MOD04_021DEBE4
-_021E05E8: .word MOD04_021DEBD8
-_021E05EC: .word UNK04_02210F94
-_021E05F0: .word UNK04_02211094
-_021E05F4: .word MOD04_021DF304
-_021E05F8: .word 0x000007D8
- arm_func_end MOD04_021E0374
-
- arm_func_start MOD04_021E05FC
-MOD04_021E05FC: ; 0x021E05FC
- ldr r0, _021E0624 ; =UNK04_022106C8
- ldr r0, [r0]
- cmp r0, #0
- beq _021E061C
- ldr r0, [r0, #4]
- cmp r0, #5
- moveq r0, #1
- bxeq lr
-_021E061C:
- mov r0, #0
- bx lr
- .align 2, 0
-_021E0624: .word UNK04_022106C8
- arm_func_end MOD04_021E05FC
-
- arm_func_start MOD04_021E0628
-MOD04_021E0628: ; 0x021E0628
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0x4c
- mov r4, r1
- ldr r1, [r4]
- mov r5, r0
- cmp r1, #0
- addne sp, sp, #0x4c
- ldmneia sp!, {r4, r5, pc}
- ldr r1, _021E07CC ; =UNK04_022106C8
- ldr r2, [r1]
- ldr r1, [r2, #4]
- cmp r1, #3
- bne _021E0704
- ldrsb r1, [r4, #0x8e]
- cmp r1, #0
- bne _021E06DC
- ldr r0, [r2, #0x1c]
- ldr r1, [r2, #0xc]
- add r2, sp, #8
- add r0, r0, #4
- bl DWCi_Acc_LoginIdToUserName
- ldr r1, _021E07D0 ; =0x00000705
- add r2, sp, #8
- mov r0, r5
- bl MOD04_021F0B30
- bl MOD04_021E0DB0
- cmp r0, #0
- addne sp, sp, #0x4c
- ldmneia sp!, {r4, r5, pc}
- ldr r0, _021E07CC ; =UNK04_022106C8
- mov r3, #4
- ldr r1, [r0]
- ldr r0, _021E07D4 ; =MOD04_021E0628
- str r3, [r1, #4]
- mov r2, #0
- str r0, [sp]
- str r2, [sp, #4]
- ldr r1, [r4, #4]
- mov r0, r5
- mov r3, r2
- bl MOD04_021F0B9C
- bl MOD04_021E0DB0
- add sp, sp, #0x4c
- cmp r0, #0
- ldmia sp!, {r4, r5, pc}
-_021E06DC:
- bl MOD04_021F0D54
- ldr r0, _021E07D8 ; =MOD04_021E0C80
- mov r1, #0
- bl MOD04_021E0A00
- ldr r0, _021E07CC ; =UNK04_022106C8
- mov r1, #1
- ldr r0, [r0]
- add sp, sp, #0x4c
- str r1, [r0, #4]
- ldmia sp!, {r4, r5, pc}
-_021E0704:
- cmp r1, #4
- addne sp, sp, #0x4c
- ldmneia sp!, {r4, r5, pc}
- ldr r0, [r2, #0x1c]
- ldr r1, [r2, #0xc]
- add r2, sp, #0x1d
- add r0, r0, #4
- bl DWCi_Acc_LoginIdToUserName
- add r1, sp, #0x1d
- add r0, r4, #0x8e
- bl strcmp
- cmp r0, #0
- bne _021E079C
- ldr r0, _021E07CC ; =UNK04_022106C8
- add r2, sp, #0x32
- ldr r0, [r0]
- ldr r1, [r0, #0xc]
- add r0, r0, #0x3c
- bl DWCi_Acc_LoginIdToUserName
- ldr r0, _021E07CC ; =UNK04_022106C8
- ldr r2, [r4, #4]
- ldr r1, [r0]
- ldr r0, [r1, #0x1c]
- add r1, r1, #0x3c
- bl DWCi_Acc_SetLoginIdToUserData
- mov r0, r5
- bl MOD04_021F0D54
- ldr r0, _021E07CC ; =UNK04_022106C8
- ldr r1, _021E07DC ; =UNK04_022106C4
- ldr r4, [r0]
- ldr r0, _021E07E0 ; =UNK04_022106CC
- ldr r2, [r1]
- ldr r3, [r0]
- add r0, r4, #0x48
- add r1, r4, #0x148
- blx r3
- add sp, sp, #0x4c
- ldmia sp!, {r4, r5, pc}
-_021E079C:
- ldr r0, _021E07D4 ; =MOD04_021E0628
- mov r2, #0
- str r0, [sp]
- str r2, [sp, #4]
- ldr r1, [r4, #4]
- mov r0, r5
- mov r3, r2
- bl MOD04_021F0B9C
- bl MOD04_021E0DB0
- cmp r0, #0
- add sp, sp, #0x4c
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E07CC: .word UNK04_022106C8
-_021E07D0: .word 0x00000705
-_021E07D4: .word MOD04_021E0628
-_021E07D8: .word MOD04_021E0C80
-_021E07DC: .word UNK04_022106C4
-_021E07E0: .word UNK04_022106CC
- arm_func_end MOD04_021E0628
-
- arm_func_start MOD04_021E07E4
-MOD04_021E07E4: ; 0x021E07E4
- stmdb sp!, {lr}
- sub sp, sp, #0x3d4
- bl MOD04_021D988C
- cmp r0, #0x15
- bne _021E08BC
- add r0, sp, #0
- bl MOD04_021D97F8
- ldr r0, _021E09DC ; =UNK04_022106C8
- add r1, sp, #0x4a
- ldr r0, [r0]
- add r0, r0, #0x48
- bl strcpy
- ldr r0, _021E09DC ; =UNK04_022106C8
- add r1, sp, #0x100
- ldr r0, [r0]
- add r1, r1, #0x77
- add r0, r0, #0x148
- bl strcpy
- bl MOD04_021D991C
- ldr r1, _021E09DC ; =UNK04_022106C8
- mov r0, #0
- ldr r1, [r1]
- mov r2, r0
- ldr r1, [r1, #0x24]
- bl MOD04_021DD904
- ldr r0, _021E09DC ; =UNK04_022106C8
- mov r2, #0
- ldr r1, [r0]
- str r2, [r1, #0x24]
- ldr r0, [r0]
- ldr r0, [r0, #0x1c]
- bl DWCi_Acc_IsAuthentic
- cmp r0, #0
- beq _021E0898
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r1, _021E09E0 ; =UNK04_022106C4
- ldr ip, [r0]
- ldr r0, _021E09E4 ; =UNK04_022106CC
- ldr r2, [r1]
- ldr r3, [r0]
- add r0, ip, #0x48
- add r1, ip, #0x148
- blx r3
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
-_021E0898:
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r2, _021E09E8 ; =MOD04_021E0C98
- ldr r1, [r0]
- mov r3, #3
- add r0, r1, #0x48
- add r1, r1, #0x148
- bl MOD04_021E0BE0
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
-_021E08BC:
- bl MOD04_021D988C
- cmp r0, #0
- addeq sp, sp, #0x3d4
- ldmeqia sp!, {pc}
- bl OS_GetTick
- ldr r3, _021E09DC ; =UNK04_022106C8
- ldr r2, _021E09EC ; =0x000082EA
- ldr ip, [r3]
- mov r3, #0
- ldr lr, [ip, #0x28]
- ldr ip, [ip, #0x2c]
- subs lr, r0, lr
- sbc r0, r1, ip
- mov r1, r0, lsl #6
- orr r1, r1, lr, lsr #26
- mov r0, lr, lsl #6
- bl _ll_udiv
- ldr r2, _021E09F0 ; =0x00002710
- cmp r1, #0
- cmpeq r0, r2
- bls _021E0958
- add r0, sp, #0x1c4
- bl MOD04_021D97F8
- bl MOD04_021D991C
- ldr r1, _021E09DC ; =UNK04_022106C8
- mov r0, #0
- ldr r1, [r1]
- mov r2, r0
- ldr r1, [r1, #0x24]
- bl MOD04_021DD904
- ldr r0, _021E09DC ; =UNK04_022106C8
- mov r2, #0
- ldr r1, [r0]
- mov r0, #2
- str r2, [r1, #0x24]
- ldr r1, [sp, #0x1c4]
- bl MOD04_021E0EAC
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
-_021E0958:
- bl MOD04_021D991C
- add r0, sp, #0x388
- mov r1, #0
- mov r2, #0x48
- bl MI_CpuFill8
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x10]
- bl MOD04_021DE89C
- ldr r1, _021E09DC ; =UNK04_022106C8
- mov r2, r0, lsl #1
- ldr r1, [r1]
- add r2, r2, #2
- ldr r0, [r1, #0x10]
- add r1, sp, #0x388
- bl MI_CpuCopy8
- ldr r0, _021E09DC ; =UNK04_022106C8
- ldr r1, _021E09F4 ; =0x00000251
- ldr r2, [r0]
- add r0, sp, #0x3bc
- add r1, r2, r1
- bl strcpy
- ldr r2, _021E09F8 ; =MOD04_021DD944
- ldr r0, _021E09DC ; =UNK04_022106C8
- str r2, [sp, #0x3c8]
- ldr r2, _021E09FC ; =MOD04_021DD904
- ldr r1, [r0]
- str r2, [sp, #0x3cc]
- ldr r1, [r1, #0x24]
- add r0, sp, #0x388
- bl MOD04_021D9ACC
- add sp, sp, #0x3d4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E09DC: .word UNK04_022106C8
-_021E09E0: .word UNK04_022106C4
-_021E09E4: .word UNK04_022106CC
-_021E09E8: .word MOD04_021E0C98
-_021E09EC: .word 0x000082EA
-_021E09F0: .word 0x00002710
-_021E09F4: .word 0x00000251
-_021E09F8: .word MOD04_021DD944
-_021E09FC: .word MOD04_021DD904
- arm_func_end MOD04_021E07E4
-
- arm_func_start MOD04_021E0A00
-MOD04_021E0A00: ; 0x021E0A00
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #0x4c
- mov r5, r0
- mov r4, r1
- add r0, sp, #0
- mov r1, #0
- mov r2, #0x48
- bl MI_CpuFill8
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r2, _021E0BBC ; =UNK04_022106CC
- ldr r1, _021E0BC0 ; =UNK04_022106C4
- ldr r0, [r0]
- str r5, [r2]
- str r4, [r1]
- ldr r0, [r0, #0x1c]
- bl DWCi_Acc_IsAuthentic
- cmp r0, #0
- beq _021E0A68
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r1, [r0]
- ldr r0, [r1, #0x1c]
- add r2, r1, #0x248
- ldr r1, [r0, #0x24]
- add r0, r0, #0x10
- bl DWCi_Acc_LoginIdToUserName
- b _021E0B1C
-_021E0A68:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- add r0, r0, #0x3c
- bl DWCi_Acc_IsValidLoginId
- cmp r0, #0
- bne _021E0AD0
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x1c]
- add r0, r0, #4
- bl DWCi_Acc_CheckConsoleUserId
- cmp r0, #0
- beq _021E0ABC
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r1, [r0]
- ldr r0, [r1, #0x1c]
- add r3, r1, #0x3c
- add r0, r0, #4
- ldmia r0, {r0, r1, r2}
- stmia r3, {r0, r1, r2}
- b _021E0B04
-_021E0ABC:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- add r0, r0, #0x3c
- bl DWCi_Acc_CreateTempLoginId
- b _021E0B04
-_021E0AD0:
- bl OS_GetTick
- ldr r2, _021E0BC4 ; =0x6C078965
- ldr r3, _021E0BC8 ; =0x5D588B65
- umull ip, r4, r0, r2
- mla r4, r0, r3, r4
- ldr r3, _021E0BB8 ; =UNK04_022106C8
- ldr r0, _021E0BCC ; =0x00269EC3
- mla r4, r1, r2, r4
- adds r0, ip, r0
- ldr r3, [r3]
- adc r1, r4, #0
- add r0, r3, #0x3c
- bl DWCi_Acc_SetPlayerId
-_021E0B04:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r2, [r0]
- ldr r1, [r2, #0xc]
- add r0, r2, #0x3c
- add r2, r2, #0x248
- bl DWCi_Acc_LoginIdToUserName
-_021E0B1C:
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x10]
- bl MOD04_021DE89C
- ldr r1, _021E0BB8 ; =UNK04_022106C8
- mov r2, r0, lsl #1
- ldr r1, [r1]
- add r2, r2, #2
- ldr r0, [r1, #0x10]
- add r1, sp, #0
- bl MI_CpuCopy8
- ldr r0, _021E0BB8 ; =UNK04_022106C8
- ldr r1, _021E0BD0 ; =0x00000251
- ldr r2, [r0]
- add r0, sp, #0x34
- add r1, r2, r1
- bl strcpy
- ldr r4, _021E0BD4 ; =MOD04_021DD944
- ldr r3, _021E0BD8 ; =MOD04_021DD904
- ldr r1, _021E0BDC ; =0x00001C10
- mov r0, #0
- mov r2, #4
- str r4, [sp, #0x40]
- str r3, [sp, #0x44]
- bl MOD04_021DD924
- ldr r1, _021E0BB8 ; =UNK04_022106C8
- mov r4, r0
- ldr r0, [r1]
- str r4, [r0, #0x24]
- bl OS_GetTick
- ldr r2, _021E0BB8 ; =UNK04_022106C8
- ldr r2, [r2]
- str r0, [r2, #0x28]
- str r1, [r2, #0x2c]
- mov r1, r4
- add r0, sp, #0
- bl MOD04_021D9ACC
- add sp, sp, #0x4c
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021E0BB8: .word UNK04_022106C8
-_021E0BBC: .word UNK04_022106CC
-_021E0BC0: .word UNK04_022106C4
-_021E0BC4: .word 0x6C078965
-_021E0BC8: .word 0x5D588B65
-_021E0BCC: .word 0x00269EC3
-_021E0BD0: .word 0x00000251
-_021E0BD4: .word MOD04_021DD944
-_021E0BD8: .word MOD04_021DD904
-_021E0BDC: .word 0x00001C10
- arm_func_end MOD04_021E0A00
-
- arm_func_start MOD04_021E0BE0
-MOD04_021E0BE0: ; 0x021E0BE0
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- ldr r4, _021E0C7C ; =UNK04_022106C8
- mov r6, r1
- ldr r4, [r4]
- mov r1, r0
- add r0, r4, #0x48
- mov r5, r2
- mov r4, r3
- bl strcpy
- ldr r0, _021E0C7C ; =UNK04_022106C8
- mov r1, r6
- ldr r0, [r0]
- add r0, r0, #0x148
- bl strcpy
- ldr r0, _021E0C7C ; =UNK04_022106C8
- ldr r6, [r0]
- bl OS_GetTick
- str r0, [r6, #0x34]
- str r1, [r6, #0x38]
- mov r3, #1
- ldr r0, _021E0C7C ; =UNK04_022106C8
- str r3, [r6, #0x30]
- ldr r2, [r0]
- mov r1, #0
- str r1, [sp]
- str r5, [sp, #4]
- str r1, [sp, #8]
- ldr r0, [r2]
- add r1, r2, #0x48
- add r2, r2, #0x148
- bl MOD04_021F0D8C
- bl MOD04_021E0DB0
- cmp r0, #0
- ldreq r0, _021E0C7C ; =UNK04_022106C8
- ldreq r0, [r0]
- streq r4, [r0, #4]
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E0C7C: .word UNK04_022106C8
- arm_func_end MOD04_021E0BE0
-
- arm_func_start MOD04_021E0C80
-MOD04_021E0C80: ; 0x021E0C80
- ldr ip, _021E0C90 ; =MOD04_021E0BE0
- ldr r2, _021E0C94 ; =MOD04_021E0C98
- mov r3, #2
- bx ip
- .align 2, 0
-_021E0C90: .word MOD04_021E0BE0
-_021E0C94: .word MOD04_021E0C98
- arm_func_end MOD04_021E0C80
-
- arm_func_start MOD04_021E0C98
-MOD04_021E0C98: ; 0x021E0C98
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r3, _021E0DA0 ; =UNK04_022106C8
- mov r2, #0
- ldr ip, [r3]
- mov r4, r1
- str r2, [ip, #0x30]
- ldr r1, [r4]
- cmp r1, #0
- bne _021E0D90
- ldr ip, [r3]
- ldr r1, [ip, #4]
- cmp r1, #2
- bne _021E0D5C
- ldr r1, [ip, #0x1c]
- ldr r0, [r4, #4]
- ldr r1, [r1, #0x1c]
- cmp r1, r0
- bne _021E0D48
- ldr r1, _021E0DA4 ; =UNK04_0220D34C
- mov r3, #5
- mov r0, #1
- str r3, [ip, #4]
- bl MOD04_021E1E30
- bl MOD04_021E0DB0
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, pc}
- ldr r0, _021E0DA0 ; =UNK04_022106C8
- ldr r1, [r4, #4]
- ldr r3, [r0]
- mov r0, #0
- ldr r2, [r3, #0x18]
- ldr r3, [r3, #0x14]
- blx r3
- bl MOD04_021DF7C4
- cmp r0, #0
- addne sp, sp, #8
- ldmneia sp!, {r4, pc}
- ldr r0, [r4, #4]
- bl MOD04_021EA1E0
- add sp, sp, #8
- cmp r0, #0
- ldmia sp!, {r4, pc}
-_021E0D48:
- ldr r1, _021E0DA8 ; =0xFFFF15A0
- mov r0, #6
- bl MOD04_021E0EAC
- add sp, sp, #8
- ldmia sp!, {r4, pc}
-_021E0D5C:
- cmp r1, #3
- addne sp, sp, #8
- ldmneia sp!, {r4, pc}
- ldr r1, _021E0DAC ; =MOD04_021E0628
- mov r3, r2
- str r1, [sp]
- str r2, [sp, #4]
- ldr r1, [r4, #4]
- bl MOD04_021F0B9C
- bl MOD04_021E0DB0
- add sp, sp, #8
- cmp r0, #0
- ldmia sp!, {r4, pc}
-_021E0D90:
- mov r0, r1
- bl MOD04_021E0DB0
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E0DA0: .word UNK04_022106C8
-_021E0DA4: .word UNK04_0220D34C
-_021E0DA8: .word 0xFFFF15A0
-_021E0DAC: .word MOD04_021E0628
- arm_func_end MOD04_021E0C98
-
- arm_func_start MOD04_021E0DB0
-MOD04_021E0DB0: ; 0x021E0DB0
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #4
- addls pc, pc, r4, lsl #2
- b _021E0E0C
-_021E0DCC: ; jump table
- b _021E0E0C ; case 0
- b _021E0DE0 ; case 1
- b _021E0DEC ; case 2
- b _021E0DF8 ; case 3
- b _021E0E04 ; case 4
-_021E0DE0:
- mov r0, #9
- mvn r2, #0
- b _021E0E0C
-_021E0DEC:
- mov r0, #9
- mvn r2, #1
- b _021E0E0C
-_021E0DF8:
- mov r0, #6
- mvn r2, #9
- b _021E0E0C
-_021E0E04:
- mov r0, #6
- mvn r2, #0x13
-_021E0E0C:
- ldr r1, _021E0E20 ; =0xFFFF11B8
- add r1, r2, r1
- bl MOD04_021E0EAC
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E0E20: .word 0xFFFF11B8
- arm_func_end MOD04_021E0DB0
-
- arm_func_start MOD04_021E0E24
-MOD04_021E0E24: ; 0x021E0E24
- ldr r0, _021E0E44 ; =UNK04_022106C8
- ldr r2, [r0]
- cmp r2, #0
- movne r1, #0
- strne r1, [r2, #4]
- ldrne r0, [r0]
- strne r1, [r0, #0x30]
- bx lr
- .align 2, 0
-_021E0E44: .word UNK04_022106C8
- arm_func_end MOD04_021E0E24
-
- arm_func_start MOD04_021E0E48
-MOD04_021E0E48: ; 0x021E0E48
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E0EA8 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #0
- beq _021E0E94
- bl MOD04_021D9974
- bl MOD04_021D991C
- ldr r1, _021E0EA8 ; =UNK04_022106C8
- mov r0, #0
- ldr r1, [r1]
- mov r2, r0
- ldr r1, [r1, #0x24]
- bl MOD04_021DD904
- ldr r0, _021E0EA8 ; =UNK04_022106C8
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x24]
-_021E0E94:
- ldr r0, _021E0EA8 ; =UNK04_022106C8
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E0EA8: .word UNK04_022106C8
- arm_func_end MOD04_021E0E48
-
- arm_func_start MOD04_021E0EAC
-MOD04_021E0EAC: ; 0x021E0EAC
- stmdb sp!, {r4, lr}
- ldr r2, _021E0EFC ; =UNK04_022106C8
- 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, _021E0EFC ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r3, [r0, #0x14]
- cmp r3, #0
- beq _021E0EF4
- ldr r2, [r0, #0x18]
- mov r0, r4
- mov r1, #0
- blx r3
-_021E0EF4:
- bl MOD04_021E0E24
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021E0EFC: .word UNK04_022106C8
- arm_func_end MOD04_021E0EAC
-
- arm_func_start MOD04_021E0F00
-MOD04_021E0F00: ; 0x021E0F00
- ldr r0, _021E0F18 ; =UNK04_022106C8
- ldr r0, [r0]
- cmp r0, #0
- ldrne r0, [r0, #0x1c]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021E0F18: .word UNK04_022106C8
- arm_func_end MOD04_021E0F00
-
- arm_func_start MOD04_021E0F1C
-MOD04_021E0F1C: ; 0x021E0F1C
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E1024 ; =UNK04_022106C8
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E1024 ; =UNK04_022106C8
- ldr r1, [r0]
- ldr r0, [r1, #4]
- cmp r0, #5
- addls pc, pc, r0, lsl #2
- b _021E101C
-_021E0F60: ; jump table
- b _021E101C ; case 0
- b _021E0F78 ; case 1
- b _021E0F84 ; case 2
- b _021E0F84 ; case 3
- b _021E0F84 ; case 4
- b _021E101C ; case 5
-_021E0F78:
- bl MOD04_021E07E4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0F84:
- ldr r0, [r1]
- cmp r0, #0
- beq _021E0FA0
- ldr r1, [r0]
- cmp r1, #0
- beq _021E0FA0
- bl MOD04_021F0F18
-_021E0FA0:
- ldr r0, _021E1024 ; =UNK04_022106C8
- ldr r0, [r0]
- ldr r0, [r0, #0x30]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl OS_GetTick
- ldr r3, _021E1024 ; =UNK04_022106C8
- ldr r2, _021E1028 ; =0x000082EA
- ldr ip, [r3]
- mov r3, #0
- ldr lr, [ip, #0x34]
- ldr ip, [ip, #0x38]
- subs lr, r0, lr
- sbc r0, r1, ip
- mov r1, r0, lsl #6
- orr r1, r1, lr, lsr #26
- mov r0, lr, lsl #6
- bl _ll_udiv
- ldr r2, _021E102C ; =0x0000EA60
- cmp r1, #0
- cmpeq r0, r2
- addls sp, sp, #4
- ldmlsia sp!, {pc}
- ldr r1, _021E1030 ; =0xFFFF1172
- mov r0, #6
- bl MOD04_021E0EAC
- ldr r0, _021E1024 ; =UNK04_022106C8
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x30]
-_021E101C:
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E1024: .word UNK04_022106C8
-_021E1028: .word 0x000082EA
-_021E102C: .word 0x0000EA60
-_021E1030: .word 0xFFFF1172
- arm_func_end MOD04_021E0F1C
-
- arm_func_start MOD04_021E1034
-MOD04_021E1034: ; 0x021E1034
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E106C ; =MOD04_021E0C80
- mov r1, #0
- bl MOD04_021E0A00
- ldr r0, _021E1070 ; =UNK04_022106C8
- mov r3, #1
- ldr r2, [r0]
- mov r1, #0
- str r3, [r2, #4]
- ldr r0, [r0]
- str r1, [r0, #0x30]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E106C: .word MOD04_021E0C80
-_021E1070: .word UNK04_022106C8
- arm_func_end MOD04_021E1034
-
- arm_func_start MOD04_021E1074
-MOD04_021E1074: ; 0x021E1074
- stmdb sp!, {r4, r5, r6, lr}
- ldr ip, _021E10F4 ; =UNK04_022106C8
- mov r6, r1
- mov r5, r2
- mov r1, #0
- mov r2, #0x260
- mov r4, r3
- str r0, [ip]
- bl MI_CpuFill8
- ldr r0, _021E10F4 ; =UNK04_022106C8
- mov r2, #0
- ldr r1, [r0]
- ldr ip, [sp, #0x10]
- str r5, [r1]
- ldr r1, [r0]
- ldr r5, [sp, #0x14]
- str r2, [r1, #4]
- ldr r1, [r0]
- ldr r3, [sp, #0x18]
- str r4, [r1, #8]
- ldr r1, [r0]
- ldr r2, [sp, #0x1c]
- str ip, [r1, #0xc]
- ldr r1, [r0]
- str r5, [r1, #0x10]
- ldr r1, [r0]
- str r3, [r1, #0x14]
- ldr r1, [r0]
- str r2, [r1, #0x18]
- ldr r0, [r0]
- str r6, [r0, #0x1c]
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E10F4: .word UNK04_022106C8
- arm_func_end MOD04_021E1074
-
arm_func_start MOD04_021E10F8
MOD04_021E10F8: ; 0x021E10F8
ldr r0, _021E1108 ; =UNK04_022106D0
@@ -60012,12 +50350,13 @@ _0220BAB8:
arm_func_end MOD04_url_strlen
.section .rodata
- .global UNK_0220BAC4
+
+ .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 UNK_0220BADC
+ .global UNK04_0220BADC
UNK04_0220BADC: ; 0x0220BADC
.byte 0x57, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x32
@@ -60168,1025 +50507,6 @@ UNK04_0220BE70: ; 0x0220BE70
.byte 0x0A, 0x00, 0x00, 0x00
.section .data
- .global UNK_0220BEB4
-UNK04_0220BEB4: ; 0x0220BEB4
- .word UNK04_0220BED0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00
-
- .global UNK04_0220BED0
-UNK04_0220BED0: ; 0x0220BED0
- .asciz "https://nas.test.nintendowifi.net/ac"
-
- .balign 4, 0
- .global UNK_0220BEF8
-UNK04_0220BEF8: ; 0x0220BEF8
- .byte 0x61, 0x63, 0x63, 0x74, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x00
-
- .global UNK_0220BF04
-UNK04_0220BF04: ; 0x0220BF04
- .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220BF0C
-UNK04_0220BF0C: ; 0x0220BF0C
- .byte 0x6C, 0x6F, 0x67, 0x69, 0x6E, 0x00, 0x00, 0x00
-
- .global UNK_0220BF14
-UNK04_0220BF14: ; 0x0220BF14
- .byte 0x67, 0x73, 0x62, 0x72, 0x63, 0x64, 0x00, 0x00
-
- .global UNK_0220BF1C
-UNK04_0220BF1C: ; 0x0220BF1C
- .asciz "Y"
-
- .balign 4, 0
- .global UNK_0220BF20
-UNK04_0220BF20: ; 0x0220BF20
- .byte 0x69, 0x73, 0x77, 0x66, 0x63, 0x00, 0x00, 0x00
-
- .global UNK_0220BF28
-UNK04_0220BF28: ; 0x0220BF28
- .byte 0x69, 0x6E, 0x67, 0x61, 0x6D, 0x65, 0x73, 0x6E, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF34
-UNK04_0220BF34: ; 0x0220BF34
- .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF3C
-UNK04_0220BF3C: ; 0x0220BF3C
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220BF48
-UNK04_0220BF48: ; 0x0220BF48
- .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF54
-UNK04_0220BF54: ; 0x0220BF54
- .byte 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00
-
- .global UNK_0220BF5C
-UNK04_0220BF5C: ; 0x0220BF5C
- .byte 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x00
-
- .global UNK_0220BF64
-UNK04_0220BF64: ; 0x0220BF64
- .byte 0x63, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x6E, 0x67, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220BF70
-UNK04_0220BF70: ; 0x0220BF70
- .byte 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF7C
-UNK04_0220BF7C: ; 0x0220BF7C
- .byte 0x53, 0x65, 0x74, 0x2D, 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x00, 0x00
-
- .global UNK_0220BF88
-UNK04_0220BF88: ; 0x0220BF88
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BF98
-UNK04_0220BF98: ; 0x0220BF98
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x6D, 0x77, 0x6F, 0x72, 0x6B, 0x00
-
- .balign 4, 0
- .global UNK_0220BFA4
-UNK04_0220BFA4: ; 0x0220BFA4
- .asciz "https://nas.nintendowifi.net/ac"
-
- .balign 4, 0
- .global UNK_0220BFC4
-UNK04_0220BFC4: ; 0x0220BFC4
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BFD4
-UNK04_0220BFD4: ; 0x0220BFD4
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00
-
- .global UNK_0220BFE4
-UNK04_0220BFE4: ; 0x0220BFE4
- .byte 0x25, 0x30, 0x33, 0x64, 0x25, 0x30, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220BFF0
-UNK04_0220BFF0: ; 0x0220BFF0
- .byte 0x73, 0x64, 0x6B, 0x76, 0x65, 0x72, 0x00, 0x00
-
- .global UNK_0220BFF8
-UNK04_0220BFF8: ; 0x0220BFF8
- .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00
-
- .global UNK_0220C000
-UNK04_0220C000: ; 0x0220C000
- .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00
-
- .global UNK_0220C008
-UNK04_0220C008: ; 0x0220C008
- .byte 0x62, 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00
-
- .global UNK_0220C010
-UNK04_0220C010: ; 0x0220C010
- .byte 0x61, 0x70, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00
-
- .global UNK_0220C018
-UNK04_0220C018: ; 0x0220C018
- .byte 0x67, 0x61, 0x6D, 0x65, 0x63, 0x64, 0x00, 0x00
-
- .global UNK_0220C020
-UNK04_0220C020: ; 0x0220C020
- .byte 0x6D, 0x61, 0x6B, 0x65, 0x72, 0x63, 0x64, 0x00
-
- .global UNK_0220C028
-UNK04_0220C028: ; 0x0220C028
- .byte 0x75, 0x6E, 0x69, 0x74, 0x63, 0x64, 0x00, 0x00
-
- .global UNK_0220C030
-UNK04_0220C030: ; 0x0220C030
- .byte 0x6D, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00
-
- .global UNK_0220C038
-UNK04_0220C038: ; 0x0220C038
- .byte 0x6C, 0x61, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C040
-UNK04_0220C040: ; 0x0220C040
- .byte 0x62, 0x69, 0x72, 0x74, 0x68, 0x00, 0x00, 0x00
-
- .global UNK_0220C048
-UNK04_0220C048: ; 0x0220C048
- .byte 0x64, 0x65, 0x76, 0x74, 0x69, 0x6D, 0x65, 0x00
-
- .global UNK_0220C050
-UNK04_0220C050: ; 0x0220C050
- .byte 0x64, 0x65, 0x76, 0x6E, 0x61, 0x6D, 0x65, 0x00
-
- .global UNK_0220C058
-UNK04_0220C058: ; 0x0220C058
- .byte 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C060
-UNK04_0220C060: ; 0x0220C060
- .byte 0x4E, 0x69, 0x74, 0x72, 0x6F, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4B, 0x2F, 0x25
- .byte 0x64, 0x2E, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C078
-UNK04_0220C078: ; 0x0220C078
- .byte 0x55, 0x73, 0x65, 0x72, 0x2D, 0x41, 0x67, 0x65, 0x6E, 0x74, 0x00, 0x00
-
- .global UNK_0220C084
-UNK04_0220C084: ; 0x0220C084
- .byte 0x48, 0x54, 0x54, 0x50, 0x5F, 0x58, 0x5F, 0x47, 0x41, 0x4D, 0x45, 0x43, 0x44, 0x00, 0x00, 0x00
-
- .global UNK_0220C094
-UNK04_0220C094: ; 0x0220C094
- .byte 0x25, 0x30, 0x31, 0x33, 0x6C, 0x6C, 0x75, 0x00
-
- .global UNK_0220C09C
-UNK04_0220C09C: ; 0x0220C09C
- .byte 0x25, 0x30, 0x33, 0x75, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0A4
-UNK04_0220C0A4: ; 0x0220C0A4
- .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0AC
-UNK04_0220C0AC: ; 0x0220C0AC
- .byte 0x25, 0x30, 0x32, 0x78, 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0B8
-UNK04_0220C0B8: ; 0x0220C0B8
- .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64
- .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C0D4
-UNK04_0220C0D4: ; 0x0220C0D4
- .byte 0x25, 0x30, 0x32, 0x64, 0x3A, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2D, 0x30, 0x30, 0x00
-
- .global UNK_0220C0E4
-UNK04_0220C0E4: ; 0x0220C0E4
- .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8
- .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0
- .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC
-
- .global UNK_0220C110
-UNK04_0220C110: ; 0x0220C110
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79
- .byte 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00
-
- .global UNK_0220C12C
-UNK04_0220C12C: ; 0x0220C12C
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5F, 0x65, 0x6E, 0x74, 0x72, 0x79
- .byte 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220C148
-UNK04_0220C148: ; 0x0220C148
- .byte 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C150
-UNK04_0220C150: ; 0x0220C150
- .byte 0x20, 0x00, 0x00, 0x00
-
- .global UNK_0220C154
-UNK04_0220C154: ; 0x0220C154
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220C160
-UNK04_0220C160: ; 0x0220C160
- .byte 0x32, 0x30, 0x30, 0x00
-
- .global UNK_0220C164
-UNK04_0220C164: ; 0x0220C164
- .byte 0x0D, 0x0A, 0x00, 0x00
-
- .global UNK_0220C168
-UNK04_0220C168: ; 0x0220C168
- .byte 0x3A, 0x20, 0x00, 0x00
-
- .global UNK_0220C16C
-UNK04_0220C16C: ; 0x0220C16C
- .byte 0x3D, 0x00, 0x00, 0x00
-
- .global UNK_0220C170
-UNK04_0220C170: ; 0x0220C170
- .byte 0x26, 0x00, 0x00, 0x00
-
- .global UNK_0220C174
-UNK04_0220C174: ; 0x0220C174
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E
- .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C194
-UNK04_0220C194: ; 0x0220C194
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E
- .byte 0x74, 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C1B4
-UNK04_0220C1B4: ; 0x0220C1B4
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74
- .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x00
-
- .global UNK_0220C1D0
-UNK04_0220C1D0: ; 0x0220C1D0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2D, 0x3E, 0x65, 0x6E, 0x74
- .byte 0x72, 0x79, 0x5B, 0x69, 0x5D, 0x2E, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00
-
- .global UNK_0220C1EC
-UNK04_0220C1EC: ; 0x0220C1EC
- .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x00
-
- .global UNK_0220C1F4
-UNK04_0220C1F4: ; 0x0220C1F4
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C200
-UNK04_0220C200: ; 0x0220C200
- .byte 0x3A, 0x00, 0x00, 0x00
-
- .global UNK_0220C204
-UNK04_0220C204: ; 0x0220C204
- .byte 0x2F, 0x00, 0x00, 0x00
-
- .global UNK_0220C208
-UNK04_0220C208: ; 0x0220C208
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x74, 0x72, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C218
-UNK04_0220C218: ; 0x0220C218
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C22C
-UNK04_0220C22C: ; 0x0220C22C
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x62, 0x75, 0x66, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x66, 0x65
- .byte 0x72, 0x00, 0x00, 0x00
-
- .global UNK_0220C240
-UNK04_0220C240: ; 0x0220C240
- .byte 0x25, 0x73, 0x00, 0x00
-
- .global UNK_0220C244
-UNK04_0220C244: ; 0x0220C244
- .byte 0x25, 0x73, 0x3D, 0x00
-
- .global UNK_0220C248
-UNK04_0220C248: ; 0x0220C248
- .byte 0x26, 0x25, 0x73, 0x3D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C250
-UNK04_0220C250: ; 0x0220C250
- .byte 0x25, 0x73, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C25C
-UNK04_0220C25C: ; 0x0220C25C
- .byte 0x50, 0x4F, 0x53, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E
- .byte 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x3A
- .byte 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x78, 0x2D, 0x77
- .byte 0x77, 0x77, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x75, 0x72, 0x6C, 0x65, 0x6E, 0x63, 0x6F, 0x64
- .byte 0x65, 0x64, 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C2B0
-UNK04_0220C2B0: ; 0x0220C2B0
- .byte 0x47, 0x45, 0x54, 0x20, 0x2F, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30
- .byte 0x0D, 0x0A, 0x48, 0x6F, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x73, 0x0D, 0x0A, 0x0D, 0x0A, 0x00, 0x00
-
- .global UNK_0220C2D0
-UNK04_0220C2D0: ; 0x0220C2D0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72, 0x65
- .byte 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00
-
- .global UNK_0220C2E8
-UNK04_0220C2E8: ; 0x0220C2E8
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73, 0x65
- .byte 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00
-
- .global UNK_0220C300
-UNK04_0220C300: ; 0x0220C300
- .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C314
-UNK04_0220C314: ; 0x0220C314
- .byte 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220C320
-UNK04_0220C320: ; 0x0220C320
- .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220C328
-UNK04_0220C328: ; 0x0220C328
- .byte 0x25, 0x64, 0x00, 0x00
-
- .global UNK_0220C32C
-UNK04_0220C32C: ; 0x0220C32C
- .byte 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x00
-
- .global UNK_0220C33C
-UNK04_0220C33C: ; 0x0220C33C
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x72
- .byte 0x65, 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00
-
- .global UNK_0220C354
-UNK04_0220C354: ; 0x0220C354
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x3E, 0x6C, 0x6F, 0x77, 0x73
- .byte 0x65, 0x6E, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00
-
- .global UNK_0220C36C
-UNK04_0220C36C: ; 0x0220C36C
- .word UNK04_0220C370
-
- .global UNK_0220C370
-UNK04_0220C370: ; 0x0220C370
- .byte 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x74
- .byte 0x65, 0x73, 0x74, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69
- .byte 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x00, 0x00, 0x00
-
- .global UNK_0220C394
-UNK04_0220C394: ; 0x0220C394
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63
- .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00
-
- .global UNK_0220C3B0
-UNK04_0220C3B0: ; 0x0220C3B0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B
- .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x33, 0x30, 0x32, 0x00, 0x00
-
- .global UNK_0220C3CC
-UNK04_0220C3CC: ; 0x0220C3CC
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00
-
- .global UNK_0220C3D8
-UNK04_0220C3D8: ; 0x0220C3D8
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00
-
- .global UNK_0220C3E8
-UNK04_0220C3E8: ; 0x0220C3E8
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00
-
- .global UNK_0220C3F8
-UNK04_0220C3F8: ; 0x0220C3F8
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63
- .byte 0x6B, 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00
-
- .global UNK_0220C418
-UNK04_0220C418: ; 0x0220C418
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220C424
-UNK04_0220C424: ; 0x0220C424
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74
- .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220C444
-UNK04_0220C444: ; 0x0220C444
- .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220C44C
-UNK04_0220C44C: ; 0x0220C44C
- .byte 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00
-
- .global UNK_0220C454
-UNK04_0220C454: ; 0x0220C454
- .byte 0x48, 0x6F, 0x74, 0x53, 0x70, 0x6F, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00
-
- .global UNK_0220C464
-UNK04_0220C464: ; 0x0220C464
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B
- .byte 0x2D, 0x3E, 0x62, 0x6F, 0x64, 0x79, 0x5F, 0x77, 0x61, 0x79, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x00
-
- .global UNK_0220C484
-UNK04_0220C484: ; 0x0220C484
- .byte 0x70, 0x61, 0x72, 0x73, 0x65, 0x00, 0x00, 0x00
-
- .global UNK_0220C48C
-UNK04_0220C48C: ; 0x0220C48C
- .byte 0x48, 0x54, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C494
-UNK04_0220C494: ; 0x0220C494
- .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4A0
-UNK04_0220C4A0: ; 0x0220C4A0
- .byte 0x75, 0x72, 0x6C, 0x00
-
- .global UNK_0220C4A4
-UNK04_0220C4A4: ; 0x0220C4A4
- .byte 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4AC
-UNK04_0220C4AC: ; 0x0220C4AC
- .byte 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4B4
-UNK04_0220C4B4: ; 0x0220C4B4
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x75, 0x72, 0x6C, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4C0
-UNK04_0220C4C0: ; 0x0220C4C0
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00
-
- .global UNK_0220C4CC
-UNK04_0220C4CC: ; 0x0220C4CC
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00
-
- .global UNK_0220C4D8
-UNK04_0220C4D8: ; 0x0220C4D8
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4E8
-UNK04_0220C4E8: ; 0x0220C4E8
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6B
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C4FC
-UNK04_0220C4FC: ; 0x0220C4FC
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6E, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63
- .byte 0x6B, 0x00, 0x00, 0x00
-
- .global UNK_0220C510
-UNK04_0220C510: ; 0x0220C510
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00
-
- .global UNK_0220C520
-UNK04_0220C520: ; 0x0220C520
- .byte 0x44, 0x65, 0x63, 0x00
-
- .global UNK_0220C524
-UNK04_0220C524: ; 0x0220C524
- .byte 0x4A, 0x75, 0x6C, 0x00
-
- .global UNK_0220C528
-UNK04_0220C528: ; 0x0220C528
- .byte 0x4F, 0x63, 0x74, 0x00
-
- .global UNK_0220C52C
-UNK04_0220C52C: ; 0x0220C52C
- .byte 0x53, 0x65, 0x70, 0x00
-
- .global UNK_0220C530
-UNK04_0220C530: ; 0x0220C530
- .byte 0x41, 0x75, 0x67, 0x00
-
- .global UNK_0220C534
-UNK04_0220C534: ; 0x0220C534
- .byte 0x4E, 0x6F, 0x76, 0x00
-
- .global UNK_0220C538
-UNK04_0220C538: ; 0x0220C538
- .byte 0x4A, 0x75, 0x6E, 0x00
-
- .global UNK_0220C53C
-UNK04_0220C53C: ; 0x0220C53C
- .byte 0x4D, 0x61, 0x79, 0x00
-
- .global UNK_0220C540
-UNK04_0220C540: ; 0x0220C540
- .byte 0x41, 0x70, 0x72, 0x00
-
- .global UNK_0220C544
-UNK04_0220C544: ; 0x0220C544
- .byte 0x4D, 0x61, 0x72, 0x00
-
- .global UNK_0220C548
-UNK04_0220C548: ; 0x0220C548
- .byte 0x46, 0x65, 0x62, 0x00
-
- .global UNK_0220C54C
-UNK04_0220C54C: ; 0x0220C54C
- .byte 0x4A, 0x61, 0x6E, 0x00
-
- .global UNK_0220C550
-UNK04_0220C550: ; 0x0220C550
- .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540
- .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530
- .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520
-
- .global UNK_0220C580
-UNK04_0220C580: ; 0x0220C580
- .byte 0x46, 0x72, 0x69, 0x2C, 0x20, 0x30, 0x33, 0x20, 0x4D, 0x61, 0x72, 0x20, 0x32, 0x30, 0x30, 0x36
- .byte 0x20, 0x30, 0x31, 0x3A, 0x32, 0x38, 0x3A, 0x31, 0x33, 0x20, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00
-
- .global UNK_0220C5A0
-UNK04_0220C5A0: ; 0x0220C5A0
- .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C5A8
-UNK04_0220C5A8: ; 0x0220C5A8
- .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x00
-
- .global UNK_0220C5B4
-UNK04_0220C5B4: ; 0x0220C5B4
- .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C5C0
-UNK04_0220C5C0: ; 0x0220C5C0
- .byte 0x73, 0x76, 0x63, 0x68, 0x6F, 0x73, 0x74, 0x00
-
- .global UNK_0220C5C8
-UNK04_0220C5C8: ; 0x0220C5C8
- .byte 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C5D8
-UNK04_0220C5D8: ; 0x0220C5D8
- .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00
-
- .global UNK_0220C5E4
-UNK04_0220C5E4: ; 0x0220C5E4
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74
- .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220C604
-UNK04_0220C604: ; 0x0220C604
- .byte 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00
-
- .global UNK_0220C60C
-UNK04_0220C60C: ; 0x0220C60C
- .byte 0x53, 0x56, 0x43, 0x4C, 0x4F, 0x43, 0x00, 0x00
-
- .global UNK_0220C614
-UNK04_0220C614: ; 0x0220C614
- .byte 0x73, 0x76, 0x63, 0x00
-
- .global UNK_0220C618
-UNK04_0220C618: ; 0x0220C618
- .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C628
-UNK04_0220C628: ; 0x0220C628
- .byte 0x41, 0x4C, 0x4C, 0x4F, 0x43, 0x20, 0x69, 0x6E, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00, 0x00
-
- .global UNK_0220C638
-UNK04_0220C638: ; 0x0220C638
- .word UNK04_0220C63C
-
- .global UNK_0220C63C
-UNK04_0220C63C: ; 0x0220C63C
- .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C
- .byte 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62
- .byte 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72
- .byte 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37
- .byte 0x38, 0x39, 0x2E, 0x2D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C680
-UNK04_0220C680: ; 0x0220C680
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220C684
-UNK04_0220C684: ; 0x0220C684
- .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003
- .word UNK04_0220C680
-
- .global UNK_0220C698
-UNK04_0220C698: ; 0x0220C698
- .byte 0x42, 0x45, 0x2C, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x6E
- .byte 0x76, 0x2D, 0x73, 0x61, 0x2C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x47
- .byte 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43
- .byte 0x41, 0x00, 0x00, 0x00
-
- .global UNK_0220C6CC
-UNK04_0220C6CC: ; 0x0220C6CC
- .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB
- .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD
- .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89
- .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70
- .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C
- .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35
- .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39
- .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC
- .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74
- .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5
- .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F
- .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77
- .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9
- .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19
- .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C
- .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F
- .byte 0x7F, 0x93, 0x90, 0xCF
-
- .global UNK_0220C7CC
-UNK04_0220C7CC: ; 0x0220C7CC
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220C7D0
-UNK04_0220C7D0: ; 0x0220C7D0
- .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003
- .word UNK04_0220C7CC
-
- .global UNK_0220C7E4
-UNK04_0220C7E4: ; 0x0220C7E4
- .byte 0x49, 0x45, 0x2C, 0x20
- .byte 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x2C, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72
- .byte 0x54, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65
- .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220C81C
-UNK04_0220C81C: ; 0x0220C81C
- .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A
- .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29
- .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2
- .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52
- .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8
- .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8
- .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F
- .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12
- .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68
- .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC
- .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C
- .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F
- .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9
- .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99
- .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68
- .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90
- .byte 0xDC, 0x27, 0x1A, 0x39
-
- .global UNK_0220C91C
-UNK04_0220C91C: ; 0x0220C91C
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220C920
-UNK04_0220C920: ; 0x0220C920
- .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003
- .word UNK04_0220C91C
-
- .global UNK_0220C934
-UNK04_0220C934: ; 0x0220C934
- .byte 0x55, 0x53, 0x2C, 0x20
- .byte 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C
- .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20
- .byte 0x53, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C
- .byte 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20
- .byte 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00
-
- .global UNK_0220C984
-UNK04_0220C984: ; 0x0220C984
- .byte 0x95, 0x0F, 0xA0, 0xB6
- .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B
- .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A
- .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F
- .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95
- .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9
- .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85
- .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80
- .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99
-
- .global UNK_0220CA04
-UNK04_0220CA04: ; 0x0220CA04
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CA08
-UNK04_0220CA08: ; 0x0220CA08
- .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003
- .word UNK04_0220CA04
-
- .global UNK_0220CA1C
-UNK04_0220CA1C: ; 0x0220CA1C
- .byte 0x55, 0x53, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6F, 0x72, 0x70
- .byte 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62
- .byte 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220CA48
-UNK04_0220CA48: ; 0x0220CA48
- .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9
- .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD
- .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66
- .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5
- .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF
- .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25
- .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24
- .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03
-
- .global UNK_0220CAC8
-UNK04_0220CAC8: ; 0x0220CAC8
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CACC
-UNK04_0220CACC: ; 0x0220CACC
- .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003
- .word UNK04_0220CAC8
-
- .global UNK_0220CAE0
-UNK04_0220CAE0: ; 0x0220CAE0
- .byte 0x55, 0x53, 0x2C, 0x20, 0x57, 0x61, 0x73, 0x68
- .byte 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F
- .byte 0x20, 0x6F, 0x66, 0x20, 0x41, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x49, 0x6E, 0x63, 0x2C
- .byte 0x20, 0x4E, 0x4F, 0x41, 0x2C, 0x20, 0x4E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x20, 0x43
- .byte 0x41, 0x2C, 0x20, 0x63, 0x61, 0x40, 0x6E, 0x6F, 0x61, 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E
- .byte 0x64, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00
-
- .global UNK_0220CB30
-UNK04_0220CB30: ; 0x0220CB30
- .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF
- .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21
- .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD
- .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B
- .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40
- .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31
- .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66
- .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C
- .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B
-
- .global UNK_0220CBB0
-UNK04_0220CBB0: ; 0x0220CBB0
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CBB4
-UNK04_0220CBB4: ; 0x0220CBB4
- .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003
- .word UNK04_0220CBB0
-
- .global UNK_0220CBC8
-UNK04_0220CBC8: ; 0x0220CBC8
- .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE
- .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A
- .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17
- .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0
- .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C
- .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F
- .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD
- .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37
-
- .global UNK_0220CC48
-UNK04_0220CC48: ; 0x0220CC48
- .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65
- .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61
- .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63
- .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69
- .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6D, 0x69
- .byte 0x75, 0x6D, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x70, 0x72
- .byte 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x2D, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61
- .byte 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00
-
- .global UNK_0220CCD0
-UNK04_0220CCD0: ; 0x0220CCD0
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CCD4
-UNK04_0220CCD4: ; 0x0220CCD4
- .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003
- .word UNK04_0220CCD0
-
- .global UNK_0220CCE8
-UNK04_0220CCE8: ; 0x0220CCE8
- .byte 0x5A, 0x41, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65
- .byte 0x2C, 0x20, 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61
- .byte 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63
- .byte 0x63, 0x2C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69
- .byte 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65
- .byte 0x72, 0x20, 0x43, 0x41, 0x2C, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2D, 0x63, 0x65, 0x72
- .byte 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x00, 0x00, 0x00
-
- .global UNK_0220CD68
-UNK04_0220CD68: ; 0x0220CD68
- .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75
- .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20
- .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15
- .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD
- .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B
- .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C
- .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B
- .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D
-
- .global UNK_0220CDE8
-UNK04_0220CDE8: ; 0x0220CDE8
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CDEC
-UNK04_0220CDEC: ; 0x0220CDEC
- .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003
- .word UNK04_0220CDE8
-
- .global UNK_0220CE00
-UNK04_0220CE00: ; 0x0220CE00
- .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0
- .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D
- .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F
- .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47
- .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77
- .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D
- .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97
- .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61
- .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67
-
- .global UNK_0220CE80
-UNK04_0220CE80: ; 0x0220CE80
- .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69
- .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73
- .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61
- .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x32, 0x2C
- .byte 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69
- .byte 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61
- .byte 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E
- .byte 0x6C, 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75
- .byte 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x00, 0x00
-
- .global UNK_0220CF14
-UNK04_0220CF14: ; 0x0220CF14
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220CF18
-UNK04_0220CF18: ; 0x0220CF18
- .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003
- .word UNK04_0220CF14
-
- .global UNK_0220CF2C
-UNK04_0220CF2C: ; 0x0220CF2C
- .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E
- .byte 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E
- .byte 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x2C, 0x20
- .byte 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67
- .byte 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75
- .byte 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C
- .byte 0x79, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, 0x61, 0x73
- .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61
- .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x33, 0x00
-
- .global UNK_0220CFC8
-UNK04_0220CFC8: ; 0x0220CFC8
- .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9
- .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5
- .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D
- .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67
- .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69
- .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0
- .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC
- .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3
- .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED
- .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF
- .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76
- .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8
- .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2
- .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63
- .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D
- .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97
-
- .global UNK_0220D0C8
-UNK04_0220D0C8: ; 0x0220D0C8
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220D0CC
-UNK04_0220D0CC: ; 0x0220D0CC
- .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003
- .word UNK04_0220D0C8
-
- .global UNK_0220D0E0
-UNK04_0220D0E0: ; 0x0220D0E0
- .byte 0x55, 0x53, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x69
- .byte 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C, 0x20, 0x43, 0x6C, 0x61, 0x73
- .byte 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61
- .byte 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E
- .byte 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00
-
- .global UNK_0220D124
-UNK04_0220D124: ; 0x0220D124
- .byte 0xC9, 0x5C, 0x59, 0x9E
- .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45
- .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25
- .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00
- .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6
- .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F
- .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20
- .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15
- .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7
-
- .global UNK_0220D1A4
-UNK04_0220D1A4: ; 0x0220D1A4
- .byte 0x01, 0x00, 0x01, 0x00
-
- .global UNK_0220D1A8
-UNK04_0220D1A8: ; 0x0220D1A8
- .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003
- .word UNK04_0220D1A4
-
- .global UNK_0220D1BC
-UNK04_0220D1BC: ; 0x0220D1BC
- .byte 0x55, 0x53, 0x2C, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x61, 0x74, 0x61
- .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x2C
- .byte 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43
- .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74
- .byte 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00
-
- .global UNK_0220D200
-UNK04_0220D200: ; 0x0220D200
- .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A
- .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB
- .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82
- .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05
- .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D
- .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98
- .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49
- .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD
- .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00
-
- .global UNK_0220D280
-UNK04_0220D280: ; 0x0220D280
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x74, 0x65, 0x73, 0x74
- .byte 0x2E, 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65
- .byte 0x74, 0x2F, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D2A8
-UNK04_0220D2A8: ; 0x0220D2A8
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x64, 0x65, 0x76, 0x2E
- .byte 0x6E, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74
- .byte 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220D2CC
-UNK04_0220D2CC: ; 0x0220D2CC
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6E, 0x61, 0x73, 0x2E, 0x6E, 0x69, 0x6E, 0x74
- .byte 0x65, 0x6E, 0x64, 0x6F, 0x77, 0x69, 0x66, 0x69, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x00
-
- .global UNK_0220D2EC
-UNK04_0220D2EC: ; 0x0220D2EC
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D2F0
-UNK04_0220D2F0: ; 0x0220D2F0
- .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D2F8
-UNK04_0220D2F8: ; 0x0220D2F8
- .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D300
-UNK04_0220D300: ; 0x0220D300
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C, 0x6F, 0x61
- .byte 0x64, 0x00, 0x00, 0x00
-
- .global UNK_0220D314
-UNK04_0220D314: ; 0x0220D314
- .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x25, 0x73, 0x2F, 0x64, 0x6F, 0x77, 0x6E, 0x6C
- .byte 0x6F, 0x61, 0x64, 0x00
-
- .global UNK_0220D328
-UNK04_0220D328: ; 0x0220D328
- .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D334
-UNK04_0220D334: ; 0x0220D334
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D338
-UNK04_0220D338: ; 0x0220D338
- .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D340
-UNK04_0220D340: ; 0x0220D340
- .byte 0x4D, 0x41, 0x54, 0x00
-
- .global UNK_0220D344
-UNK04_0220D344: ; 0x0220D344
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D348
-UNK04_0220D348: ; 0x0220D348
- .byte 0x53, 0x43, 0x4E, 0x00
-
- .global UNK_0220D34C
-UNK04_0220D34C: ; 0x0220D34C
- .byte 0x00, 0x00, 0x00, 0x00
.global UNK_0220D350
UNK04_0220D350: ; 0x0220D350
@@ -63822,122 +53142,6 @@ UNK04_0220FBA4: ; 0x0220FBA4
.section .bss
- .global UNK04_02210460
-UNK04_02210460: ; 0x02210460
- .space 0x4
-
- .global UNK04_02210464
-UNK04_02210464: ; 0x02210464
- .space 0x4
-
- .global UNK04_02210468
-UNK04_02210468: ; 0x02210468
- .space 0x4
-
- .global UNK04_0221046C
-UNK04_0221046C: ; 0x0221046C
- .space 0x14
-
- .global UNK04_02210480
-UNK04_02210480: ; 0x02210480
- .space 0x4
-
- .global UNK04_02210484
-UNK04_02210484: ; 0x02210484
- .space 0x4
-
- .global UNK04_02210488
-UNK04_02210488: ; 0x02210488
- .space 0x4
-
- .global UNK04_0221048C
-UNK04_0221048C: ; 0x0221048C
- .space 0x4
-
- .global UNK04_02210490
-UNK04_02210490: ; 0x02210490
- .space 0x4
-
- .global UNK04_02210494
-UNK04_02210494: ; 0x02210494
- .space 0x1C
-
- .global UNK04_022104B0
-UNK04_022104B0: ; 0x022104B0
- .space 0x48
-
- .global UNK04_022104F8
-UNK04_022104F8: ; 0x022104F8
- .space 0x4
-
- .global UNK04_022104FC
-UNK04_022104FC: ; 0x022104FC
- .space 0x8
-
- .global UNK04_02210504
-UNK04_02210504: ; 0x02210504
- .space 0x4
-
- .global UNK04_02210508
-UNK04_02210508: ; 0x02210508
- .space 0x4
-
- .global UNK04_0221050C
-UNK04_0221050C: ; 0x0221050C
- .space 0x4
-
- .global UNK04_02210510
-UNK04_02210510: ; 0x02210510
- .space 0x4
-
- .global UNK04_02210514
-UNK04_02210514: ; 0x02210514
- .space 0x4
-
- .global UNK04_02210518
-UNK04_02210518: ; 0x02210518
- .space 0x4
-
- .global UNK04_0221051C
-UNK04_0221051C: ; 0x0221051C
- .space 0x4
-
- .global UNK04_02210520
-UNK04_02210520: ; 0x02210520
- .space 0x4
-
- .global UNK04_02210524
-UNK04_02210524: ; 0x02210524
- .space 0x18
-
- .global UNK04_0221053C
-UNK04_0221053C: ; 0x0221053C
- .space 0x4
-
- .global UNK04_02210540
-UNK04_02210540: ; 0x02210540
- .space 0x4
-
- .global UNK04_02210544
-UNK04_02210544: ; 0x02210544
- .space 0x80
-
- .global UNK04_022105C4
-UNK04_022105C4: ; 0x022105C4
- .space 0x100
-
- .global UNK04_022106C4
-UNK04_022106C4: ; 0x022106C4
- .space 0x4
-
- .global UNK04_022106C8
-UNK04_022106C8: ; 0x022106C8
- .space 0x4
-
- .global UNK04_022106CC
-UNK04_022106CC: ; 0x022106CC
- .space 0x4
-
.global UNK04_022106D0
UNK04_022106D0: ; 0x022106D0
.space 0x4
diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/mod04_021D74E0.s
index 6f673fe8..4eba9197 100644
--- a/arm9/modules/04/asm/thumb_04.s
+++ b/arm9/modules/04/asm/mod04_021D74E0.s
@@ -2302,856 +2302,22 @@ MOD04_021D8678: ; 0x021D8678
_021D8684: .word UNK04_0220FBC0
_021D8688: .word 0x00001F68
- thumb_func_start MOD04_021D868C
-MOD04_021D868C: ; 0x021D868C
- push {r3, r4, r5, lr}
- bl MIC_Init
- bl PM_Init
- mov r0, #1
- bl PM_SetAmp
- mov r0, #3
- bl PM_SetAmpGain
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r3, _021D871C ; =0x00003584
- add r5, r2, #0
- str r2, [r1, r3]
- add r1, r3, #0
- ldr r4, [r0, #4]
- add r1, #0xc
- str r2, [r4, r1]
- ldr r4, [r0, #4]
- add r1, r3, #4
- str r2, [r4, r1]
- add r1, r3, #0
- ldr r4, [r0, #4]
- add r1, #8
- str r2, [r4, r1]
- ldr r1, [r0, #4]
- add r3, #0x10
- str r2, [r1, r3]
- ldr r3, _021D8720 ; =0x00003598
- add r1, r2, #0
-_021D86CE:
- ldr r4, [r0, #4]
- add r2, r2, #1
- add r4, r4, r5
- add r5, r5, #2
- strh r1, [r4, r3]
- cmp r2, #0x10
- blt _021D86CE
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D8724 ; =0x000035B8
- str r1, [r2, r0]
- mov r0, #1
- bl FUN_020AA770
- bl NNS_SndInit
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8728 ; =0x00003504
- add r0, r1, r0
- bl NNS_SndStrmInit
- ldr r1, _021D8718 ; =UNK04_0220FBC8
- mov r0, #0
- ldr r2, [r1, #4]
- mov r1, #0xb1
- lsl r1, r1, #6
- add r1, r2, r1
- mov r2, #0x22
- lsl r2, r2, #6
- bl MIi_CpuClearFast
- ldr r0, _021D8718 ; =UNK04_0220FBC8
- mov r1, #0
- str r1, [r0, #8]
- pop {r3, r4, r5, pc}
- nop
-_021D8718: .word UNK04_0220FBC8
-_021D871C: .word 0x00003584
-_021D8720: .word 0x00003598
-_021D8724: .word 0x000035B8
-_021D8728: .word 0x00003504
-
- thumb_func_start MOD04_021D872C
-MOD04_021D872C: ; 0x021D872C
- bx lr
- .align 2, 0
-
- thumb_func_start MOD04_021D8730
-MOD04_021D8730: ; 0x021D8730
- push {r4, r5, r6, lr}
- add r6, r2, #0
- add r5, r3, #0
- ldr r4, [sp, #0x14]
- cmp r0, #0
- bne _021D8748
- ldr r0, [r6]
- mov r1, #0
- add r2, r5, #0
- bl MI_CpuFill8
- pop {r4, r5, r6, pc}
-_021D8748:
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D87BC ; =0x00003565
- ldrb r1, [r2, r0]
- cmp r1, #0
- beq _021D876A
- add r0, r0, #3
- add r0, r2, r0
- ldr r1, _021D87C0 ; =MOD04_021D872C
- mov r2, #0
- bl MIC_StartAutoSamplingAsync
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D87BC ; =0x00003565
- strb r2, [r1, r0]
-_021D876A:
- bl MIC_GetLastSamplingAddress
- sub r0, r0, r4
- cmp r0, r5
- bhs _021D8776
- add r4, r4, r5
-_021D8776:
- ldr r0, _021D87C4 ; =0x027FFFA8
- ldrh r1, [r0]
- mov r0, #2
- lsl r0, r0, #0xe
- and r0, r1
- asr r0, r0, #0xf
- beq _021D878E
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- mov r0, #0xb1
- lsl r0, r0, #6
- add r4, r1, r0
-_021D878E:
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D87C8 ; =0x000034FC
- ldr r0, [r1, r0]
- cmp r0, #0
- bne _021D87A2
- add r0, r4, #0
- add r1, r5, #0
- bl FUN_020AABDC
-_021D87A2:
- ldr r0, [r6]
- add r1, r5, #0
- mov r2, #0
- bl FUN_020AA824
- ldr r0, _021D87B8 ; =UNK04_0220FBC8
- mov r2, #2
- ldr r1, [r0, #4]
- ldr r0, _021D87CC ; =0x00003564
- strb r2, [r1, r0]
- pop {r4, r5, r6, pc}
- .align 2, 0
-_021D87B8: .word UNK04_0220FBC8
-_021D87BC: .word 0x00003565
-_021D87C0: .word MOD04_021D872C
-_021D87C4: .word 0x027FFFA8
-_021D87C8: .word 0x000034FC
-_021D87CC: .word 0x00003564
-
- thumb_func_start MOD04_021D87D0
-MOD04_021D87D0: ; 0x021D87D0
- push {r4, lr}
- ldr r1, _021D8810 ; =UNK04_0220FBC8
- ldr r2, [r1, #4]
- ldr r1, _021D8814 ; =0x00003560
- ldr r1, [r2, r1]
- cmp r1, #0
- bne _021D880A
- bl FUN_020ACD54
- add r4, r0, #0
- bne _021D87EA
- mov r0, #0
- pop {r4, pc}
-_021D87EA:
- mov r1, #0
- bl FUN_020ACBA0
- cmp r0, #0
- beq _021D87FE
- add r0, r4, #0
- bl FUN_020ACC84
- mov r0, #0
- pop {r4, pc}
-_021D87FE:
- ldr r0, _021D8810 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8814 ; =0x00003560
- str r4, [r1, r0]
- mov r0, #1
- pop {r4, pc}
-_021D880A:
- mov r0, #0
- pop {r4, pc}
- nop
-_021D8810: .word UNK04_0220FBC8
-_021D8814: .word 0x00003560
-
- thumb_func_start MOD04_021D8818
-MOD04_021D8818: ; 0x021D8818
- push {r3, lr}
- ldr r0, _021D8858 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D885C ; =0x00003560
- ldr r0, [r1, r0]
- cmp r0, #0
- beq _021D8852
- ldr r1, [r0, #0xc]
- cmp r1, #4
- bne _021D8852
- mov r1, #0
- bl FUN_020ACAB0
- cmp r0, #0
- beq _021D883A
- mov r0, #0
- pop {r3, pc}
-_021D883A:
- ldr r0, _021D8858 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D885C ; =0x00003560
- ldr r0, [r1, r0]
- bl FUN_020AADCC
- cmp r0, #0
- beq _021D884E
- mov r0, #1
- pop {r3, pc}
-_021D884E:
- mov r0, #0
- pop {r3, pc}
-_021D8852:
- mov r0, #0
- pop {r3, pc}
- nop
-_021D8858: .word UNK04_0220FBC8
-_021D885C: .word 0x00003560
-
- thumb_func_start MOD04_021D8860
-MOD04_021D8860: ; 0x021D8860
- push {r4, lr}
- add r4, r2, #0
- cmp r1, #0xc
- bhi _021D8902
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021D8874: ; jump table
- .short _021D8902 - _021D8874 - 2 ; case 0
- .short _021D888E - _021D8874 - 2 ; case 1
- .short _021D88F4 - _021D8874 - 2 ; case 2
- .short _021D88FC - _021D8874 - 2 ; case 3
- .short _021D88CE - _021D8874 - 2 ; case 4
- .short _021D8902 - _021D8874 - 2 ; case 5
- .short _021D8902 - _021D8874 - 2 ; case 6
- .short _021D88DE - _021D8874 - 2 ; case 7
- .short _021D88AE - _021D8874 - 2 ; case 8
- .short _021D88C2 - _021D8874 - 2 ; case 9
- .short _021D8902 - _021D8874 - 2 ; case 10
- .short _021D88FC - _021D8874 - 2 ; case 11
- .short _021D88FC - _021D8874 - 2 ; case 12
-_021D888E:
- ldr r0, _021D8904 ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D8908 ; =0x00003560
- ldr r1, [r2, r0]
- cmp r1, #0
- beq _021D88AA
- add r0, r4, #0
- mov r1, #3
- bl FUN_020ACAB0
- add r0, r4, #0
- bl FUN_020ACC84
- pop {r4, pc}
-_021D88AA:
- str r4, [r2, r0]
- pop {r4, pc}
-_021D88AE:
- add r0, r4, #0
- mov r1, #0
- bl FUN_020ACAB0
- add r0, r4, #0
- bl MOD04_021D8910
- bl MOD04_021D8C6C
- pop {r4, pc}
-_021D88C2:
- add r0, r4, #0
- bl MOD04_021D8910
- bl MOD04_021D8C6C
- pop {r4, pc}
-_021D88CE:
- add r0, r4, #0
- mov r1, #4
- bl FUN_020ACAB0
- add r0, r4, #0
- bl MOD04_021D8910
- pop {r4, pc}
-_021D88DE:
- add r0, r4, #0
- bl FUN_020AADCC
- cmp r0, #0
- beq _021D8902
- ldr r0, _021D8904 ; =UNK04_0220FBC8
- mov r2, #2
- ldr r1, [r0, #4]
- ldr r0, _021D890C ; =0x000034F8
- str r2, [r1, r0]
- pop {r4, pc}
-_021D88F4:
- add r0, r4, #0
- bl MOD04_021D8910
- pop {r4, pc}
-_021D88FC:
- add r0, r4, #0
- bl MOD04_021D8910
-_021D8902:
- pop {r4, pc}
- .align 2, 0
-_021D8904: .word UNK04_0220FBC8
-_021D8908: .word 0x00003560
-_021D890C: .word 0x000034F8
-
- thumb_func_start MOD04_021D8910
-MOD04_021D8910: ; 0x021D8910
- push {r4, lr}
- ldr r1, _021D893C ; =UNK04_0220FBC8
- add r4, r0, #0
- ldr r2, [r1, #4]
- ldr r1, _021D8940 ; =0x00003560
- ldr r1, [r2, r1]
- cmp r4, r1
- bne _021D8936
- bl FUN_020AACFC
- add r0, r4, #0
- bl FUN_020ACC84
- ldr r0, _021D893C ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8940 ; =0x00003560
- str r2, [r1, r0]
- pop {r4, pc}
-_021D8936:
- bl FUN_020ACC84
- pop {r4, pc}
- .align 2, 0
-_021D893C: .word UNK04_0220FBC8
-_021D8940: .word 0x00003560
-
- thumb_func_start MOD04_021D8944
-MOD04_021D8944: ; 0x021D8944
- push {r4, r5, r6, lr}
- bl OS_GetTick
- add r4, r0, #0
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- add r5, r1, #0
- ldr r0, [r0, #0xc]
- sub r1, r4, r0
- mov r0, #0xfa
- lsl r0, r0, #8
- mul r0, r1
- ldr r1, _021D8A40 ; =0x000082EA
- bl _u32_div_f
- ldr r1, _021D8A3C ; =UNK04_0220FBC8
- ldr r3, _021D8A44 ; =0x0000411A
- ldr r2, [r1, #8]
- sub r0, r0, r3
- add r2, r2, r0
- ldr r0, _021D8A48 ; =0xFFFFD8F0
- str r2, [r1, #8]
- cmp r2, r0
- bge _021D8976
- mov r0, #0
- str r0, [r1, #8]
-_021D8976:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- str r4, [r0, #0xc]
- str r5, [r0, #0x10]
- bl VCT_Main
- ldr r4, _021D8A3C ; =UNK04_0220FBC8
- ldr r0, _021D8A44 ; =0x0000411A
- ldr r1, [r4, #8]
- cmp r1, r0
- blt _021D899C
- add r6, r0, #0
- add r5, r0, #0
-_021D898E:
- bl VCT_Main
- ldr r0, [r4, #8]
- sub r0, r0, r6
- str r0, [r4, #8]
- cmp r0, r5
- bge _021D898E
-_021D899C:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- ldr r2, [r0, #4]
- ldr r0, _021D8A4C ; =0x0000358C
- ldr r1, [r2, r0]
- cmp r1, #0
- beq _021D89EC
- sub r0, r0, #4
- ldr r0, [r2, r0]
- cmp r0, #3
- bhi _021D89E2
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021D89BC: ; jump table
- .short _021D89C4 - _021D89BC - 2 ; case 0
- .short _021D89CC - _021D89BC - 2 ; case 1
- .short _021D89D4 - _021D89BC - 2 ; case 2
- .short _021D89DC - _021D89BC - 2 ; case 3
-_021D89C4:
- mov r0, #3
- bl PM_SetAmpGain
- b _021D89E2
-_021D89CC:
- mov r0, #2
- bl PM_SetAmpGain
- b _021D89E2
-_021D89D4:
- mov r0, #1
- bl PM_SetAmpGain
- b _021D89E2
-_021D89DC:
- mov r0, #0
- bl PM_SetAmpGain
-_021D89E2:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8A4C ; =0x0000358C
- str r2, [r1, r0]
-_021D89EC:
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8A50 ; =0x000034F8
- ldr r0, [r1, r0]
- cmp r0, #0
- beq _021D8A00
- cmp r0, #1
- beq _021D8A3A
- cmp r0, #2
- pop {r4, r5, r6, pc}
-_021D8A00:
- bl MOD04_021D8018
- cmp r0, #0
- bne _021D8A1E
- mov r0, #1
- bl MOD04_021D87D0
- cmp r0, #0
- beq _021D8A3A
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- mov r2, #1
- ldr r1, [r0, #4]
- ldr r0, _021D8A50 ; =0x000034F8
- str r2, [r1, r0]
- pop {r4, r5, r6, pc}
-_021D8A1E:
- bl MOD04_021D8018
- cmp r0, #1
- bne _021D8A3A
- mov r0, #0
- bl MOD04_021D8818
- cmp r0, #0
- beq _021D8A3A
- ldr r0, _021D8A3C ; =UNK04_0220FBC8
- mov r2, #2
- ldr r1, [r0, #4]
- ldr r0, _021D8A50 ; =0x000034F8
- str r2, [r1, r0]
-_021D8A3A:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_021D8A3C: .word UNK04_0220FBC8
-_021D8A40: .word 0x000082EA
-_021D8A44: .word 0x0000411A
-_021D8A48: .word 0xFFFFD8F0
-_021D8A4C: .word 0x0000358C
-_021D8A50: .word 0x000034F8
-
- thumb_func_start MOD04_021D8A54
-MOD04_021D8A54: ; 0x021D8A54
- push {r3, lr}
- ldr r3, _021D8A78 ; =UNK04_0220FBC8
- ldr r3, [r3, #4]
- cmp r3, #0
- bne _021D8A62
- mov r0, #0
- pop {r3, pc}
-_021D8A62:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl VCT_HandleData
- cmp r0, #0
- beq _021D8A72
- mov r0, #1
- pop {r3, pc}
-_021D8A72:
- mov r0, #0
- pop {r3, pc}
- nop
-_021D8A78: .word UNK04_0220FBC8
-
- thumb_func_start MOD04_021D8A7C
-MOD04_021D8A7C: ; 0x021D8A7C
- push {r4, r5, r6, r7, lr}
- sub sp, #0x34
- ldr r2, _021D8BC8 ; =UNK04_0220BAC0
- add r4, r1, #0
- ldrb r3, [r2]
- add r1, sp, #0x10
- add r5, r0, #0
- strb r3, [r1]
- ldrb r3, [r2, #1]
- ldrb r2, [r2, #2]
- strb r3, [r1, #1]
- strb r2, [r1, #2]
- ldr r1, _021D8BCC ; =UNK04_0220FBC8
- ldr r1, [r1, #4]
- cmp r1, #0
- bne _021D8ACA
- ldr r1, _021D8BD0 ; =0x000035DC
- bl AllocFromHeap
- ldr r2, _021D8BCC ; =UNK04_0220FBC8
- mov r1, #0x35
- str r0, [r2]
- add r0, #0x1f
- lsr r0, r0, #5
- lsl r0, r0, #5
- str r0, [r2, #4]
- lsl r1, r1, #8
- str r5, [r0, r1]
- add r0, r1, #0
- ldr r5, _021D8BD4 ; =UNK04_0220FBE0
- ldr r3, [r2, #4]
- sub r0, #0x40
- str r5, [r3, r0]
- ldr r0, [r2, #4]
- mov r3, #0
- sub r1, #0x3c
- str r3, [r0, r1]
- bl MOD04_021D868C
-_021D8ACA:
- ldr r5, _021D8BCC ; =UNK04_0220FBC8
- mov r7, #0x11
- ldr r0, [r5, #4]
- ldr r3, _021D8BD8 ; =0x00003568
- mov r1, #3
- str r1, [r0, r3]
- add r1, r3, #0
- ldr r0, [r5, #4]
- sub r1, #0xa8
- ldr r2, [r0, r1]
- add r1, r3, #4
- str r2, [r0, r1]
- lsl r7, r7, #6
- add r0, r3, #0
- ldr r1, [r5, #4]
- lsl r2, r7, #1
- add r0, #8
- str r2, [r1, r0]
- mov r2, #0x41
- add r0, r3, #0
- ldr r1, [r5, #4]
- lsl r2, r2, #6
- add r0, #0xc
- str r2, [r1, r0]
- add r0, r3, #0
- ldr r2, [r5, #4]
- mov r1, #1
- add r0, #0x10
- str r1, [r2, r0]
- add r2, r3, #0
- ldr r6, [r5, #4]
- mov r0, #0
- add r2, #0x14
- str r0, [r6, r2]
- add r2, r3, #0
- ldr r6, [r5, #4]
- add r2, #0x18
- str r0, [r6, r2]
- sub r0, r3, #3
- ldr r2, [r5, #4]
- sub r3, #0x64
- strb r1, [r2, r0]
- ldr r0, [r5, #4]
- add r2, sp, #0x10
- add r0, r0, r3
- bl NNS_SndStrmAllocChannel
- add r0, r5, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8BDC ; =0x00003504
- add r0, r1, r0
- mov r1, #0
- bl NNS_SndStrmSetVolume
- mov r0, #0x41
- str r0, [sp]
- mov r0, #2
- str r0, [sp, #4]
- ldr r0, _021D8BE0 ; =MOD04_021D8730
- add r1, r5, #0
- str r0, [sp, #8]
- mov r0, #0xd3
- ldr r2, [r1, #4]
- lsl r0, r0, #6
- ldr r2, [r2, r0]
- add r0, #0x44
- str r2, [sp, #0xc]
- ldr r3, [r1, #4]
- mov r2, #0x8f
- lsl r2, r2, #6
- add r0, r3, r0
- add r2, r3, r2
- mov r1, #1
- lsl r3, r7, #1
- bl NNS_SndStrmSetup
- ldr r2, _021D8BCC ; =UNK04_0220FBC8
- ldr r1, _021D8BE4 ; =0x000034F8
- ldr r0, [r2, #4]
- mov r5, #0
- str r5, [r0, r1]
- add r0, r1, #0
- ldr r3, [r2, #4]
- add r0, #0x68
- str r5, [r3, r0]
- mov r0, #1
- str r0, [sp, #0x1c]
- ldr r0, [r2, #4]
- sub r1, #0x30
- add r0, r0, r1
- str r0, [sp, #0x14]
- mov r0, #2
- str r0, [sp, #0x18]
- bl MOD04_021D8018
- add r1, sp, #0x10
- strb r0, [r1, #0x10]
- ldr r0, _021D8BE8 ; =MOD04_021D8860
- str r0, [sp, #0x2c]
- add r0, r5, #0
- str r0, [sp, #0x30]
- ldr r0, _021D8BCC ; =UNK04_0220FBC8
- ldr r0, [r0, #4]
- str r0, [sp, #0x24]
- mov r0, #0x8f
- lsl r0, r0, #6
- str r0, [sp, #0x28]
- add r0, sp, #0x14
- bl VCT_Init
- cmp r0, #0
- ldr r0, _021D8BCC ; =UNK04_0220FBC8
- add r2, r5, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8BEC ; =0x000034FC
- str r2, [r1, r0]
- add r0, r4, #0
- bl FUN_020AA7A0
- bl MOD04_021D8BF0
- mov r0, #1
- bl FUN_020AA760
- add sp, #0x34
- pop {r4, r5, r6, r7, pc}
- nop
-_021D8BC8: .word UNK04_0220BAC0
-_021D8BCC: .word UNK04_0220FBC8
-_021D8BD0: .word 0x000035DC
-_021D8BD4: .word UNK04_0220FBE0
-_021D8BD8: .word 0x00003568
-_021D8BDC: .word 0x00003504
-_021D8BE0: .word MOD04_021D8730
-_021D8BE4: .word 0x000034F8
-_021D8BE8: .word MOD04_021D8860
-_021D8BEC: .word 0x000034FC
-
- thumb_func_start MOD04_021D8BF0
-MOD04_021D8BF0: ; 0x021D8BF0
- ldr r0, _021D8BFC ; =UNK04_0220FBC8
- ldr r3, _021D8C00 ; =NNS_SndStrmStart
- ldr r1, [r0, #4]
- ldr r0, _021D8C04 ; =0x00003504
- add r0, r1, r0
- bx r3
- .align 2, 0
-_021D8BFC: .word UNK04_0220FBC8
-_021D8C00: .word NNS_SndStrmStart
-_021D8C04: .word 0x00003504
-
- thumb_func_start MOD04_021D8C08
-MOD04_021D8C08: ; 0x021D8C08
- push {r3, lr}
- ldr r0, _021D8C50 ; =UNK04_0220FBC8
- ldr r1, _021D8C54 ; =0x00003560
- ldr r2, [r0, #4]
- ldr r0, [r2, r1]
- cmp r0, #0
- beq _021D8C1E
- sub r1, #0x68
- ldr r1, [r2, r1]
- cmp r1, #0
- bne _021D8C24
-_021D8C1E:
- bl MOD04_021D8C6C
- pop {r3, pc}
-_021D8C24:
- cmp r1, #1
- bne _021D8C38
- mov r1, #2
- bl FUN_020ACBA0
- cmp r0, #0
- beq _021D8C38
- bl MOD04_021D8C6C
- pop {r3, pc}
-_021D8C38:
- ldr r0, _021D8C50 ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8C54 ; =0x00003560
- ldr r0, [r1, r0]
- mov r1, #1
- bl FUN_020ACBA0
- cmp r0, #0
- beq _021D8C4E
- bl MOD04_021D8C6C
-_021D8C4E:
- pop {r3, pc}
- .align 2, 0
-_021D8C50: .word UNK04_0220FBC8
-_021D8C54: .word 0x00003560
-
- thumb_func_start MOD04_021D8C58
-MOD04_021D8C58: ; 0x021D8C58
- ldr r1, _021D8C64 ; =UNK04_0220FBC8
- ldr r2, [r1, #4]
- ldr r1, _021D8C68 ; =0x000034C4
- str r0, [r2, r1]
- bx lr
- nop
-_021D8C64: .word UNK04_0220FBC8
-_021D8C68: .word 0x000034C4
-
- thumb_func_start MOD04_021D8C6C
-MOD04_021D8C6C: ; 0x021D8C6C
- push {r4, lr}
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- ldr r1, [r0]
- cmp r1, #0
- beq _021D8CBA
- ldr r1, [r0, #4]
- ldr r0, _021D8CC0 ; =0x000034C4
- ldr r4, [r1, r0]
- bl MIC_StopAutoSampling
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8CC4 ; =0x00003504
- add r0, r1, r0
- bl NNS_SndStrmStop
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- ldr r1, [r0, #4]
- ldr r0, _021D8CC4 ; =0x00003504
- add r0, r1, r0
- bl NNS_SndStrmFreeChannel
- bl VCT_Cleanup
- ldr r1, _021D8CBC ; =UNK04_0220FBC8
- mov r0, #0x35
- ldr r2, [r1, #4]
- lsl r0, r0, #8
- ldr r0, [r2, r0]
- ldr r1, [r1]
- bl FreeToHeapExplicit
- mov r1, #0
- ldr r0, _021D8CBC ; =UNK04_0220FBC8
- cmp r4, #0
- str r1, [r0]
- str r1, [r0, #4]
- beq _021D8CBA
- blx r4
-_021D8CBA:
- pop {r4, pc}
- .align 2, 0
-_021D8CBC: .word UNK04_0220FBC8
-_021D8CC0: .word 0x000034C4
-_021D8CC4: .word 0x00003504
-
- thumb_func_start MOD04_021D8CC8
-MOD04_021D8CC8: ; 0x021D8CC8
- push {r3, lr}
- sub sp, #0x10
- ldr r0, _021D8CEC ; =UNK04_0220FBC8
- ldr r0, [r0, #4]
- cmp r0, #0
- beq _021D8CE6
- add r0, sp, #0
- bl FUN_020AD144
- ldr r0, [sp, #4]
- cmp r0, #2
- ble _021D8CE6
- ldr r0, [sp]
- add sp, #0x10
- pop {r3, pc}
-_021D8CE6:
- mov r0, #0
- add sp, #0x10
- pop {r3, pc}
- .align 2, 0
-_021D8CEC: .word UNK04_0220FBC8
-
- thumb_func_start MOD04_021D8CF0
-MOD04_021D8CF0: ; 0x021D8CF0
- ldr r0, _021D8CFC ; =UNK04_0220FBC8
- mov r2, #1
- ldr r1, [r0, #4]
- ldr r0, _021D8D00 ; =0x000034FC
- str r2, [r1, r0]
- bx lr
- .align 2, 0
-_021D8CFC: .word UNK04_0220FBC8
-_021D8D00: .word 0x000034FC
-
- thumb_func_start MOD04_021D8D04
-MOD04_021D8D04: ; 0x021D8D04
- ldr r0, _021D8D10 ; =UNK04_0220FBC8
- mov r2, #0
- ldr r1, [r0, #4]
- ldr r0, _021D8D14 ; =0x000034FC
- str r2, [r1, r0]
- bx lr
- .align 2, 0
-_021D8D10: .word UNK04_0220FBC8
-_021D8D14: .word 0x000034FC
-
- .section .rodata
+ .section .bss
- .global UNK04_0220BAC0
-UNK04_0220BAC0: ; 0x0220BAC0
- .byte 0x0D, 0x0D, 0x0D
+ .global UNK04_0220FBC0
+UNK04_0220FBC0: ; 0x0220FBC0
+ .space 0x8
.section .data
+
.balign 4
+
.global UNK04_0220BEA0
UNK04_0220BEA0: ; 0x0220BEA0
.asciz "pokemondpds"
+
.balign 4
+
.global UNK04_0220BEAC
UNK04_0220BEAC: ; 0x0220BEAC
.asciz "1vTlwb"
-
- .section .bss
- .global UNK04_0220FBC0
-UNK04_0220FBC0: ; 0x0220FBC0
- .space 0x8
-
- .global UNK04_0220FBC8
-UNK04_0220FBC8: ; 0x0220FBC8
- .space 0x18
-
- .global UNK04_0220FBE0
-UNK04_0220FBE0: ; 0x0220FBE0
- .space 0x880
diff --git a/arm9/modules/04/asm/mod04_021D868C.s b/arm9/modules/04/asm/mod04_021D868C.s
new file mode 100644
index 00000000..4921962f
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021D868C.s
@@ -0,0 +1,845 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD04_021D868C
+MOD04_021D868C: ; 0x021D868C
+ push {r3, r4, r5, lr}
+ bl MIC_Init
+ bl PM_Init
+ mov r0, #1
+ bl PM_SetAmp
+ mov r0, #3
+ bl PM_SetAmpGain
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r3, _021D871C ; =0x00003584
+ add r5, r2, #0
+ str r2, [r1, r3]
+ add r1, r3, #0
+ ldr r4, [r0, #4]
+ add r1, #0xc
+ str r2, [r4, r1]
+ ldr r4, [r0, #4]
+ add r1, r3, #4
+ str r2, [r4, r1]
+ add r1, r3, #0
+ ldr r4, [r0, #4]
+ add r1, #8
+ str r2, [r4, r1]
+ ldr r1, [r0, #4]
+ add r3, #0x10
+ str r2, [r1, r3]
+ ldr r3, _021D8720 ; =0x00003598
+ add r1, r2, #0
+_021D86CE:
+ ldr r4, [r0, #4]
+ add r2, r2, #1
+ add r4, r4, r5
+ add r5, r5, #2
+ strh r1, [r4, r3]
+ cmp r2, #0x10
+ blt _021D86CE
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8724 ; =0x000035B8
+ str r1, [r2, r0]
+ mov r0, #1
+ bl FUN_020AA770
+ bl NNS_SndInit
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8728 ; =0x00003504
+ add r0, r1, r0
+ bl NNS_SndStrmInit
+ ldr r1, _021D8718 ; =UNK04_0220FBC8
+ mov r0, #0
+ ldr r2, [r1, #4]
+ mov r1, #0xb1
+ lsl r1, r1, #6
+ add r1, r2, r1
+ mov r2, #0x22
+ lsl r2, r2, #6
+ bl MIi_CpuClearFast
+ ldr r0, _021D8718 ; =UNK04_0220FBC8
+ mov r1, #0
+ str r1, [r0, #8]
+ pop {r3, r4, r5, pc}
+ nop
+_021D8718: .word UNK04_0220FBC8
+_021D871C: .word 0x00003584
+_021D8720: .word 0x00003598
+_021D8724: .word 0x000035B8
+_021D8728: .word 0x00003504
+
+ thumb_func_start MOD04_021D872C
+MOD04_021D872C: ; 0x021D872C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD04_021D8730
+MOD04_021D8730: ; 0x021D8730
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r3, #0
+ ldr r4, [sp, #0x14]
+ cmp r0, #0
+ bne _021D8748
+ ldr r0, [r6]
+ mov r1, #0
+ add r2, r5, #0
+ bl MI_CpuFill8
+ pop {r4, r5, r6, pc}
+_021D8748:
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D87BC ; =0x00003565
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _021D876A
+ add r0, r0, #3
+ add r0, r2, r0
+ ldr r1, _021D87C0 ; =MOD04_021D872C
+ mov r2, #0
+ bl MIC_StartAutoSamplingAsync
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D87BC ; =0x00003565
+ strb r2, [r1, r0]
+_021D876A:
+ bl MIC_GetLastSamplingAddress
+ sub r0, r0, r4
+ cmp r0, r5
+ bhs _021D8776
+ add r4, r4, r5
+_021D8776:
+ ldr r0, _021D87C4 ; =0x027FFFA8
+ ldrh r1, [r0]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _021D878E
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ mov r0, #0xb1
+ lsl r0, r0, #6
+ add r4, r1, r0
+_021D878E:
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D87C8 ; =0x000034FC
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021D87A2
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020AABDC
+_021D87A2:
+ ldr r0, [r6]
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_020AA824
+ ldr r0, _021D87B8 ; =UNK04_0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D87CC ; =0x00003564
+ strb r2, [r1, r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D87B8: .word UNK04_0220FBC8
+_021D87BC: .word 0x00003565
+_021D87C0: .word MOD04_021D872C
+_021D87C4: .word 0x027FFFA8
+_021D87C8: .word 0x000034FC
+_021D87CC: .word 0x00003564
+
+ thumb_func_start MOD04_021D87D0
+MOD04_021D87D0: ; 0x021D87D0
+ push {r4, lr}
+ ldr r1, _021D8810 ; =UNK04_0220FBC8
+ ldr r2, [r1, #4]
+ ldr r1, _021D8814 ; =0x00003560
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021D880A
+ bl FUN_020ACD54
+ add r4, r0, #0
+ bne _021D87EA
+ mov r0, #0
+ pop {r4, pc}
+_021D87EA:
+ mov r1, #0
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D87FE
+ add r0, r4, #0
+ bl FUN_020ACC84
+ mov r0, #0
+ pop {r4, pc}
+_021D87FE:
+ ldr r0, _021D8810 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8814 ; =0x00003560
+ str r4, [r1, r0]
+ mov r0, #1
+ pop {r4, pc}
+_021D880A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D8810: .word UNK04_0220FBC8
+_021D8814: .word 0x00003560
+
+ thumb_func_start MOD04_021D8818
+MOD04_021D8818: ; 0x021D8818
+ push {r3, lr}
+ ldr r0, _021D8858 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D885C ; =0x00003560
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8852
+ ldr r1, [r0, #0xc]
+ cmp r1, #4
+ bne _021D8852
+ mov r1, #0
+ bl FUN_020ACAB0
+ cmp r0, #0
+ beq _021D883A
+ mov r0, #0
+ pop {r3, pc}
+_021D883A:
+ ldr r0, _021D8858 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D885C ; =0x00003560
+ ldr r0, [r1, r0]
+ bl FUN_020AADCC
+ cmp r0, #0
+ beq _021D884E
+ mov r0, #1
+ pop {r3, pc}
+_021D884E:
+ mov r0, #0
+ pop {r3, pc}
+_021D8852:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8858: .word UNK04_0220FBC8
+_021D885C: .word 0x00003560
+
+ thumb_func_start MOD04_021D8860
+MOD04_021D8860: ; 0x021D8860
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r1, #0xc
+ bhi _021D8902
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8874: ; jump table
+ .short _021D8902 - _021D8874 - 2 ; case 0
+ .short _021D888E - _021D8874 - 2 ; case 1
+ .short _021D88F4 - _021D8874 - 2 ; case 2
+ .short _021D88FC - _021D8874 - 2 ; case 3
+ .short _021D88CE - _021D8874 - 2 ; case 4
+ .short _021D8902 - _021D8874 - 2 ; case 5
+ .short _021D8902 - _021D8874 - 2 ; case 6
+ .short _021D88DE - _021D8874 - 2 ; case 7
+ .short _021D88AE - _021D8874 - 2 ; case 8
+ .short _021D88C2 - _021D8874 - 2 ; case 9
+ .short _021D8902 - _021D8874 - 2 ; case 10
+ .short _021D88FC - _021D8874 - 2 ; case 11
+ .short _021D88FC - _021D8874 - 2 ; case 12
+_021D888E:
+ ldr r0, _021D8904 ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8908 ; =0x00003560
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D88AA
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl FUN_020ACC84
+ pop {r4, pc}
+_021D88AA:
+ str r4, [r2, r0]
+ pop {r4, pc}
+_021D88AE:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl MOD04_021D8910
+ bl MOD04_021D8C6C
+ pop {r4, pc}
+_021D88C2:
+ add r0, r4, #0
+ bl MOD04_021D8910
+ bl MOD04_021D8C6C
+ pop {r4, pc}
+_021D88CE:
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl MOD04_021D8910
+ pop {r4, pc}
+_021D88DE:
+ add r0, r4, #0
+ bl FUN_020AADCC
+ cmp r0, #0
+ beq _021D8902
+ ldr r0, _021D8904 ; =UNK04_0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D890C ; =0x000034F8
+ str r2, [r1, r0]
+ pop {r4, pc}
+_021D88F4:
+ add r0, r4, #0
+ bl MOD04_021D8910
+ pop {r4, pc}
+_021D88FC:
+ add r0, r4, #0
+ bl MOD04_021D8910
+_021D8902:
+ pop {r4, pc}
+ .align 2, 0
+_021D8904: .word UNK04_0220FBC8
+_021D8908: .word 0x00003560
+_021D890C: .word 0x000034F8
+
+ thumb_func_start MOD04_021D8910
+MOD04_021D8910: ; 0x021D8910
+ push {r4, lr}
+ ldr r1, _021D893C ; =UNK04_0220FBC8
+ add r4, r0, #0
+ ldr r2, [r1, #4]
+ ldr r1, _021D8940 ; =0x00003560
+ ldr r1, [r2, r1]
+ cmp r4, r1
+ bne _021D8936
+ bl FUN_020AACFC
+ add r0, r4, #0
+ bl FUN_020ACC84
+ ldr r0, _021D893C ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8940 ; =0x00003560
+ str r2, [r1, r0]
+ pop {r4, pc}
+_021D8936:
+ bl FUN_020ACC84
+ pop {r4, pc}
+ .align 2, 0
+_021D893C: .word UNK04_0220FBC8
+_021D8940: .word 0x00003560
+
+ thumb_func_start MOD04_021D8944
+MOD04_021D8944: ; 0x021D8944
+ push {r4, r5, r6, lr}
+ bl OS_GetTick
+ add r4, r0, #0
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ add r5, r1, #0
+ ldr r0, [r0, #0xc]
+ sub r1, r4, r0
+ mov r0, #0xfa
+ lsl r0, r0, #8
+ mul r0, r1
+ ldr r1, _021D8A40 ; =0x000082EA
+ bl _u32_div_f
+ ldr r1, _021D8A3C ; =UNK04_0220FBC8
+ ldr r3, _021D8A44 ; =0x0000411A
+ ldr r2, [r1, #8]
+ sub r0, r0, r3
+ add r2, r2, r0
+ ldr r0, _021D8A48 ; =0xFFFFD8F0
+ str r2, [r1, #8]
+ cmp r2, r0
+ bge _021D8976
+ mov r0, #0
+ str r0, [r1, #8]
+_021D8976:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ str r4, [r0, #0xc]
+ str r5, [r0, #0x10]
+ bl VCT_Main
+ ldr r4, _021D8A3C ; =UNK04_0220FBC8
+ ldr r0, _021D8A44 ; =0x0000411A
+ ldr r1, [r4, #8]
+ cmp r1, r0
+ blt _021D899C
+ add r6, r0, #0
+ add r5, r0, #0
+_021D898E:
+ bl VCT_Main
+ ldr r0, [r4, #8]
+ sub r0, r0, r6
+ str r0, [r4, #8]
+ cmp r0, r5
+ bge _021D898E
+_021D899C:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8A4C ; =0x0000358C
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D89EC
+ sub r0, r0, #4
+ ldr r0, [r2, r0]
+ cmp r0, #3
+ bhi _021D89E2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D89BC: ; jump table
+ .short _021D89C4 - _021D89BC - 2 ; case 0
+ .short _021D89CC - _021D89BC - 2 ; case 1
+ .short _021D89D4 - _021D89BC - 2 ; case 2
+ .short _021D89DC - _021D89BC - 2 ; case 3
+_021D89C4:
+ mov r0, #3
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89CC:
+ mov r0, #2
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89D4:
+ mov r0, #1
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89DC:
+ mov r0, #0
+ bl PM_SetAmpGain
+_021D89E2:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A4C ; =0x0000358C
+ str r2, [r1, r0]
+_021D89EC:
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8A00
+ cmp r0, #1
+ beq _021D8A3A
+ cmp r0, #2
+ pop {r4, r5, r6, pc}
+_021D8A00:
+ bl MOD04_021D8018
+ cmp r0, #0
+ bne _021D8A1E
+ mov r0, #1
+ bl MOD04_021D87D0
+ cmp r0, #0
+ beq _021D8A3A
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ str r2, [r1, r0]
+ pop {r4, r5, r6, pc}
+_021D8A1E:
+ bl MOD04_021D8018
+ cmp r0, #1
+ bne _021D8A3A
+ mov r0, #0
+ bl MOD04_021D8818
+ cmp r0, #0
+ beq _021D8A3A
+ ldr r0, _021D8A3C ; =UNK04_0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ str r2, [r1, r0]
+_021D8A3A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8A3C: .word UNK04_0220FBC8
+_021D8A40: .word 0x000082EA
+_021D8A44: .word 0x0000411A
+_021D8A48: .word 0xFFFFD8F0
+_021D8A4C: .word 0x0000358C
+_021D8A50: .word 0x000034F8
+
+ thumb_func_start MOD04_021D8A54
+MOD04_021D8A54: ; 0x021D8A54
+ push {r3, lr}
+ ldr r3, _021D8A78 ; =UNK04_0220FBC8
+ ldr r3, [r3, #4]
+ cmp r3, #0
+ bne _021D8A62
+ mov r0, #0
+ pop {r3, pc}
+_021D8A62:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl VCT_HandleData
+ cmp r0, #0
+ beq _021D8A72
+ mov r0, #1
+ pop {r3, pc}
+_021D8A72:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8A78: .word UNK04_0220FBC8
+
+ thumb_func_start MOD04_021D8A7C
+MOD04_021D8A7C: ; 0x021D8A7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r2, _021D8BC8 ; =UNK04_0220BAC0
+ add r4, r1, #0
+ ldrb r3, [r2]
+ add r1, sp, #0x10
+ add r5, r0, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ ldrb r2, [r2, #2]
+ strb r3, [r1, #1]
+ strb r2, [r1, #2]
+ ldr r1, _021D8BCC ; =UNK04_0220FBC8
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ bne _021D8ACA
+ ldr r1, _021D8BD0 ; =0x000035DC
+ bl AllocFromHeap
+ ldr r2, _021D8BCC ; =UNK04_0220FBC8
+ mov r1, #0x35
+ str r0, [r2]
+ add r0, #0x1f
+ lsr r0, r0, #5
+ lsl r0, r0, #5
+ str r0, [r2, #4]
+ lsl r1, r1, #8
+ str r5, [r0, r1]
+ add r0, r1, #0
+ ldr r5, _021D8BD4 ; =UNK04_0220FBE0
+ ldr r3, [r2, #4]
+ sub r0, #0x40
+ str r5, [r3, r0]
+ ldr r0, [r2, #4]
+ mov r3, #0
+ sub r1, #0x3c
+ str r3, [r0, r1]
+ bl MOD04_021D868C
+_021D8ACA:
+ ldr r5, _021D8BCC ; =UNK04_0220FBC8
+ mov r7, #0x11
+ ldr r0, [r5, #4]
+ ldr r3, _021D8BD8 ; =0x00003568
+ mov r1, #3
+ str r1, [r0, r3]
+ add r1, r3, #0
+ ldr r0, [r5, #4]
+ sub r1, #0xa8
+ ldr r2, [r0, r1]
+ add r1, r3, #4
+ str r2, [r0, r1]
+ lsl r7, r7, #6
+ add r0, r3, #0
+ ldr r1, [r5, #4]
+ lsl r2, r7, #1
+ add r0, #8
+ str r2, [r1, r0]
+ mov r2, #0x41
+ add r0, r3, #0
+ ldr r1, [r5, #4]
+ lsl r2, r2, #6
+ add r0, #0xc
+ str r2, [r1, r0]
+ add r0, r3, #0
+ ldr r2, [r5, #4]
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r2, r0]
+ add r2, r3, #0
+ ldr r6, [r5, #4]
+ mov r0, #0
+ add r2, #0x14
+ str r0, [r6, r2]
+ add r2, r3, #0
+ ldr r6, [r5, #4]
+ add r2, #0x18
+ str r0, [r6, r2]
+ sub r0, r3, #3
+ ldr r2, [r5, #4]
+ sub r3, #0x64
+ strb r1, [r2, r0]
+ ldr r0, [r5, #4]
+ add r2, sp, #0x10
+ add r0, r0, r3
+ bl NNS_SndStrmAllocChannel
+ add r0, r5, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8BDC ; =0x00003504
+ add r0, r1, r0
+ mov r1, #0
+ bl NNS_SndStrmSetVolume
+ mov r0, #0x41
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _021D8BE0 ; =MOD04_021D8730
+ add r1, r5, #0
+ str r0, [sp, #8]
+ mov r0, #0xd3
+ ldr r2, [r1, #4]
+ lsl r0, r0, #6
+ ldr r2, [r2, r0]
+ add r0, #0x44
+ str r2, [sp, #0xc]
+ ldr r3, [r1, #4]
+ mov r2, #0x8f
+ lsl r2, r2, #6
+ add r0, r3, r0
+ add r2, r3, r2
+ mov r1, #1
+ lsl r3, r7, #1
+ bl NNS_SndStrmSetup
+ ldr r2, _021D8BCC ; =UNK04_0220FBC8
+ ldr r1, _021D8BE4 ; =0x000034F8
+ ldr r0, [r2, #4]
+ mov r5, #0
+ str r5, [r0, r1]
+ add r0, r1, #0
+ ldr r3, [r2, #4]
+ add r0, #0x68
+ str r5, [r3, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ ldr r0, [r2, #4]
+ sub r1, #0x30
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x18]
+ bl MOD04_021D8018
+ add r1, sp, #0x10
+ strb r0, [r1, #0x10]
+ ldr r0, _021D8BE8 ; =MOD04_021D8860
+ str r0, [sp, #0x2c]
+ add r0, r5, #0
+ str r0, [sp, #0x30]
+ ldr r0, _021D8BCC ; =UNK04_0220FBC8
+ ldr r0, [r0, #4]
+ str r0, [sp, #0x24]
+ mov r0, #0x8f
+ lsl r0, r0, #6
+ str r0, [sp, #0x28]
+ add r0, sp, #0x14
+ bl VCT_Init
+ cmp r0, #0
+ ldr r0, _021D8BCC ; =UNK04_0220FBC8
+ add r2, r5, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8BEC ; =0x000034FC
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_020AA7A0
+ bl MOD04_021D8BF0
+ mov r0, #1
+ bl FUN_020AA760
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8BC8: .word UNK04_0220BAC0
+_021D8BCC: .word UNK04_0220FBC8
+_021D8BD0: .word 0x000035DC
+_021D8BD4: .word UNK04_0220FBE0
+_021D8BD8: .word 0x00003568
+_021D8BDC: .word 0x00003504
+_021D8BE0: .word MOD04_021D8730
+_021D8BE4: .word 0x000034F8
+_021D8BE8: .word MOD04_021D8860
+_021D8BEC: .word 0x000034FC
+
+ thumb_func_start MOD04_021D8BF0
+MOD04_021D8BF0: ; 0x021D8BF0
+ ldr r0, _021D8BFC ; =UNK04_0220FBC8
+ ldr r3, _021D8C00 ; =NNS_SndStrmStart
+ ldr r1, [r0, #4]
+ ldr r0, _021D8C04 ; =0x00003504
+ add r0, r1, r0
+ bx r3
+ .align 2, 0
+_021D8BFC: .word UNK04_0220FBC8
+_021D8C00: .word NNS_SndStrmStart
+_021D8C04: .word 0x00003504
+
+ thumb_func_start MOD04_021D8C08
+MOD04_021D8C08: ; 0x021D8C08
+ push {r3, lr}
+ ldr r0, _021D8C50 ; =UNK04_0220FBC8
+ ldr r1, _021D8C54 ; =0x00003560
+ ldr r2, [r0, #4]
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ beq _021D8C1E
+ sub r1, #0x68
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021D8C24
+_021D8C1E:
+ bl MOD04_021D8C6C
+ pop {r3, pc}
+_021D8C24:
+ cmp r1, #1
+ bne _021D8C38
+ mov r1, #2
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D8C38
+ bl MOD04_021D8C6C
+ pop {r3, pc}
+_021D8C38:
+ ldr r0, _021D8C50 ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8C54 ; =0x00003560
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D8C4E
+ bl MOD04_021D8C6C
+_021D8C4E:
+ pop {r3, pc}
+ .align 2, 0
+_021D8C50: .word UNK04_0220FBC8
+_021D8C54: .word 0x00003560
+
+ thumb_func_start MOD04_021D8C58
+MOD04_021D8C58: ; 0x021D8C58
+ ldr r1, _021D8C64 ; =UNK04_0220FBC8
+ ldr r2, [r1, #4]
+ ldr r1, _021D8C68 ; =0x000034C4
+ str r0, [r2, r1]
+ bx lr
+ nop
+_021D8C64: .word UNK04_0220FBC8
+_021D8C68: .word 0x000034C4
+
+ thumb_func_start MOD04_021D8C6C
+MOD04_021D8C6C: ; 0x021D8C6C
+ push {r4, lr}
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D8CBA
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC0 ; =0x000034C4
+ ldr r4, [r1, r0]
+ bl MIC_StopAutoSampling
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC4 ; =0x00003504
+ add r0, r1, r0
+ bl NNS_SndStrmStop
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC4 ; =0x00003504
+ add r0, r1, r0
+ bl NNS_SndStrmFreeChannel
+ bl VCT_Cleanup
+ ldr r1, _021D8CBC ; =UNK04_0220FBC8
+ mov r0, #0x35
+ ldr r2, [r1, #4]
+ lsl r0, r0, #8
+ ldr r0, [r2, r0]
+ ldr r1, [r1]
+ bl FreeToHeapExplicit
+ mov r1, #0
+ ldr r0, _021D8CBC ; =UNK04_0220FBC8
+ cmp r4, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ beq _021D8CBA
+ blx r4
+_021D8CBA:
+ pop {r4, pc}
+ .align 2, 0
+_021D8CBC: .word UNK04_0220FBC8
+_021D8CC0: .word 0x000034C4
+_021D8CC4: .word 0x00003504
+
+ thumb_func_start MOD04_021D8CC8
+MOD04_021D8CC8: ; 0x021D8CC8
+ push {r3, lr}
+ sub sp, #0x10
+ ldr r0, _021D8CEC ; =UNK04_0220FBC8
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D8CE6
+ add r0, sp, #0
+ bl FUN_020AD144
+ ldr r0, [sp, #4]
+ cmp r0, #2
+ ble _021D8CE6
+ ldr r0, [sp]
+ add sp, #0x10
+ pop {r3, pc}
+_021D8CE6:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, pc}
+ .align 2, 0
+_021D8CEC: .word UNK04_0220FBC8
+
+ thumb_func_start MOD04_021D8CF0
+MOD04_021D8CF0: ; 0x021D8CF0
+ ldr r0, _021D8CFC ; =UNK04_0220FBC8
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _021D8D00 ; =0x000034FC
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8CFC: .word UNK04_0220FBC8
+_021D8D00: .word 0x000034FC
+
+ thumb_func_start MOD04_021D8D04
+MOD04_021D8D04: ; 0x021D8D04
+ ldr r0, _021D8D10 ; =UNK04_0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8D14 ; =0x000034FC
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8D10: .word UNK04_0220FBC8
+_021D8D14: .word 0x000034FC
+
+ .section .rodata
+
+ .global UNK04_0220BAC0
+UNK04_0220BAC0: ; 0x0220BAC0
+ .byte 0x0D, 0x0D, 0x0D
+
+ .section .bss
+
+ .global UNK04_0220FBC8
+UNK04_0220FBC8: ; 0x0220FBC8
+ .space 0x18
+
+ .global UNK04_0220FBE0
+UNK04_0220FBE0: ; 0x0220FBE0
+ .space 0x880
diff --git a/arm9/modules/04/asm/mod04_021D8D18.s b/arm9/modules/04/asm/mod04_021D8D18.s
new file mode 100644
index 00000000..b91bc85a
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021D8D18.s
@@ -0,0 +1,1233 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021D8D18
+MOD04_021D8D18: ; 0x021D8D18
+ stmdb sp!, {r4, lr}
+ ldr r2, _021D8D58 ; =UNK04_02210468
+ ldr r1, _021D8D5C ; =0x000013D8
+ ldr r2, [r2]
+ mov r4, r0
+ add r0, r2, r1
+ bl OS_LockMutex
+ ldr r2, _021D8D58 ; =UNK04_02210468
+ ldr r1, _021D8D5C ; =0x000013D8
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ str r4, [r0, #4]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl OS_UnlockMutex
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D8D58: .word UNK04_02210468
+_021D8D5C: .word 0x000013D8
+ arm_func_end MOD04_021D8D18
+
+ arm_func_start MOD04_021D8D60
+MOD04_021D8D60: ; 0x021D8D60
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x98
+ ldr r4, _021D8EE0 ; =UNK04_0221046C
+ mov r3, #0
+ ldr r5, [r4, #4]
+ ldr ip, [r4]
+ cmp r5, r3
+ mov r5, r0
+ mov r6, r1
+ mov r4, r2
+ cmpeq ip, r3
+ bne _021D8DC0
+ ldr r0, _021D8EE4 ; =UNK04_0220BEF8
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8EE8 ; =UNK04_0220BF04
+ ldr r2, _021D8EE4 ; =UNK04_0220BEF8
+ mov r0, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021D8E18
+ add sp, sp, #0x98
+ mov r0, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021D8DC0:
+ ldr r0, _021D8EEC ; =UNK04_0220BF0C
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8EE8 ; =UNK04_0220BF04
+ ldr r2, _021D8EEC ; =UNK04_0220BF0C
+ mov r0, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8EF0 ; =UNK04_0220BF14
+ mov r0, r5
+ mov r2, r6
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D8E18:
+ ldr r1, _021D8EE0 ; =UNK04_0221046C
+ add r0, sp, #0
+ bl MOD04_021D9F78
+ cmp r0, #0
+ addeq sp, sp, #0x98
+ moveq r0, #5
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _021D8EF4 ; =UNK04_0221048C
+ add r1, sp, #0
+ ldr r2, [r0]
+ mov r0, r5
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ addeq sp, sp, #0x98
+ moveq r0, #8
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _021D8EF8 ; =UNK04_02210460
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021D8E94
+ ldr r0, _021D8EFC ; =UNK04_0220BF1C
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D8F00 ; =UNK04_0220BF20
+ ldr r2, _021D8EFC ; =UNK04_0220BF1C
+ mov r0, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D8E94:
+ mov r0, r4
+ bl wcslen
+ cmp r0, #0
+ beq _021D8ED4
+ mov r0, r4
+ bl wcslen
+ mov r3, r0
+ ldr r1, _021D8F04 ; =UNK04_0220BF28
+ mov r0, r5
+ mov r2, r4
+ mov r3, r3, lsl #1
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x98
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D8ED4:
+ mov r0, #0
+ add sp, sp, #0x98
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021D8EE0: .word UNK04_0221046C
+_021D8EE4: .word UNK04_0220BEF8
+_021D8EE8: .word UNK04_0220BF04
+_021D8EEC: .word UNK04_0220BF0C
+_021D8EF0: .word UNK04_0220BF14
+_021D8EF4: .word UNK04_0221048C
+_021D8EF8: .word UNK04_02210460
+_021D8EFC: .word UNK04_0220BF1C
+_021D8F00: .word UNK04_0220BF20
+_021D8F04: .word UNK04_0220BF28
+ arm_func_end MOD04_021D8D60
+
+ arm_func_start MOD04_021D8F08
+MOD04_021D8F08: ; 0x021D8F08
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021D91BC ; =UNK04_02210468
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [sp]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ ldr r1, _021D91C0 ; =UNK04_0220BF34
+ bl MOD04_021DA388
+ str r0, [sp]
+ cmp r0, #0
+ beq _021D8F40
+ bl MOD04_021DCA84
+_021D8F40:
+ ldr r0, _021D91BC ; =UNK04_02210468
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _021D91C4 ; =errno
+ str r2, [sp]
+ str r2, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x314]
+ ldr r1, _021D91C8 ; =UNK04_0220BF3C
+ bl MOD04_021DA388
+ bl atol
+ ldr r1, _021D91C4 ; =errno
+ ldr r1, [r1]
+ cmp r1, #0x22
+ bne _021D8F9C
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91CC ; =0x00004E85
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xc
+ ldmia sp!, {r4, r5, pc}
+_021D8F9C:
+ cmp r0, #0xc8
+ beq _021D8FC8
+ ldr r2, _021D91BC ; =UNK04_02210468
+ ldr r1, _021D91D0 ; =0x000059D8
+ ldr r2, [r2]
+ add r1, r0, r1
+ add r0, r2, #0x1000
+ str r1, [r0, #8]
+ add sp, sp, #4
+ mov r0, #0x12
+ ldmia sp!, {r4, r5, pc}
+_021D8FC8:
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91D4 ; =0x0000100C
+ ldr r3, [r0]
+ ldr r1, _021D91D8 ; =UNK04_0220BF48
+ add r0, r3, #0x1000
+ ldr r0, [r0, #0x314]
+ add r2, r3, r2
+ mov r3, #4
+ bl MOD04_021DA334
+ cmp r0, #0
+ bgt _021D9014
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91CC ; =0x00004E85
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xe
+ ldmia sp!, {r4, r5, pc}
+_021D9014:
+ ldr r1, _021D91BC ; =UNK04_02210468
+ ldr r0, _021D91D4 ; =0x0000100C
+ ldr r2, [r1]
+ add r1, sp, #0
+ add r0, r2, r0
+ mov r2, #0xa
+ bl strtol
+ ldr r2, _021D91BC ; =UNK04_02210468
+ ldr r1, _021D91D4 ; =0x0000100C
+ ldr r5, [r2]
+ mov r4, r0
+ add r0, r5, r1
+ bl strlen
+ ldr r1, _021D91D4 ; =0x0000100C
+ ldr r2, [sp]
+ add r1, r5, r1
+ add r0, r1, r0
+ cmp r2, r0
+ ldrne r1, _021D91CC ; =0x00004E85
+ addne r0, r5, #0x1000
+ strne r1, [r0, #8]
+ addne sp, sp, #4
+ movne r0, #0xc
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D91DC ; =0x00004E20
+ add r1, r5, #0x1000
+ add r0, r4, r0
+ str r0, [r1, #8]
+ cmp r4, #0x64
+ bge _021D91B0
+ ldr ip, _021D91BC ; =UNK04_02210468
+ mov r0, #0
+ ldr r1, [ip]
+ ldr r5, _021D91E0 ; =0x00001052
+ add r1, r1, #0x1000
+ strb r0, [r1, #0x52]
+ ldr r2, [ip]
+ ldr r1, _021D91E4 ; =UNK04_0220BF54
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x1f]
+ ldr r2, [ip]
+ ldr r3, _021D91E8 ; =0x0000012D
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x17f]
+ ldr r2, [ip]
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x10]
+ ldr r2, [ip]
+ add r2, r2, #0x1000
+ strb r0, [r2, #0x188]
+ ldr r2, [ip]
+ add r0, r2, #0x1000
+ ldr r0, [r0, #0x314]
+ add r2, r2, r5
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91EC ; =0x0000101F
+ ldr r3, [r0]
+ ldr r1, _021D91F0 ; =UNK04_0220BF5C
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #0x33
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91F4 ; =0x0000117F
+ ldr r3, [r0]
+ ldr r1, _021D91F8 ; =UNK04_0220BF64
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #9
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D91FC ; =0x00001010
+ ldr r3, [r0]
+ ldr r1, _021D9200 ; =UNK04_0220BF70
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #0xf
+ bl MOD04_021DA334
+ ldr r0, _021D91BC ; =UNK04_02210468
+ ldr r2, _021D9204 ; =0x00001188
+ ldr r3, [r0]
+ ldr r1, _021D9208 ; =UNK04_0220BF7C
+ add r0, r3, #0x1000
+ add r2, r3, r2
+ ldr r0, [r0, #0x314]
+ mov r3, #0x41
+ bl MOD04_021DA2F4
+ ldr r0, _021D91BC ; =UNK04_02210468
+ mov r1, #0
+ ldr r0, [r0]
+ cmp r4, #0x28
+ add r0, r0, #0x1000
+ strb r1, [r0, #0x1b3]
+ ldrne r0, _021D920C ; =UNK04_02210464
+ movne r1, #1
+ strne r1, [r0]
+ ldreq r0, _021D920C ; =UNK04_02210464
+ moveq r1, #2
+ streq r1, [r0]
+_021D91B0:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021D91BC: .word UNK04_02210468
+_021D91C0: .word UNK04_0220BF34
+_021D91C4: .word errno
+_021D91C8: .word UNK04_0220BF3C
+_021D91CC: .word 0x00004E85
+_021D91D0: .word 0x000059D8
+_021D91D4: .word 0x0000100C
+_021D91D8: .word UNK04_0220BF48
+_021D91DC: .word 0x00004E20
+_021D91E0: .word 0x00001052
+_021D91E4: .word UNK04_0220BF54
+_021D91E8: .word 0x0000012D
+_021D91EC: .word 0x0000101F
+_021D91F0: .word UNK04_0220BF5C
+_021D91F4: .word 0x0000117F
+_021D91F8: .word UNK04_0220BF64
+_021D91FC: .word 0x00001010
+_021D9200: .word UNK04_0220BF70
+_021D9204: .word 0x00001188
+_021D9208: .word UNK04_0220BF7C
+_021D920C: .word UNK04_02210464
+ arm_func_end MOD04_021D8F08
+
+ arm_func_start MOD04_021D9210
+MOD04_021D9210: ; 0x021D9210
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, r0, #0x1000
+ ldr r0, [r2, #0x314]
+ ldr r5, [r2, #0x20c]
+ ldr r4, [r2, #0x210]
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021D9260
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D93F8 ; =0x00004E84
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xe
+ ldmia sp!, {r4, r5, pc}
+_021D9260:
+ bl MOD04_021D8F08
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0xe
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r1, _021D93F8 ; =0x00004E84
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r2, [r0, #8]
+ cmp r2, r1
+ bge _021D9334
+ ldr r0, _021D93FC ; =0x00004E22
+ cmp r2, r0
+ bne _021D9328
+ ldr r0, _021D9400 ; =UNK04_0220BF88
+ ldr r1, _021D9404 ; =0x0000071F
+ blx r5
+ movs r5, r0
+ bne _021D92D0
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D93F8 ; =0x00004E84
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #2
+ ldmia sp!, {r4, r5, pc}
+_021D92D0:
+ add r1, r5, #0x1f
+ ldr r0, _021D9408 ; =UNK04_0221046C
+ bic r1, r1, #0x1f
+ bl FUN_02096710
+ cmp r0, #1
+ beq _021D9318
+ ldr r0, _021D940C ; =UNK04_0220BF98
+ mov r1, r5
+ mov r2, #0
+ blx r4
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D93F8 ; =0x00004E84
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0xf
+ ldmia sp!, {r4, r5, pc}
+_021D9318:
+ ldr r0, _021D940C ; =UNK04_0220BF98
+ mov r1, r5
+ mov r2, #0
+ blx r4
+_021D9328:
+ add sp, sp, #4
+ mov r0, #0x15
+ ldmia sp!, {r4, r5, pc}
+_021D9334:
+ ldr r0, _021D9410 ; =0x00004E88
+ cmp r2, r0
+ beq _021D9350
+ ldr r0, _021D9414 ; =0x00004E8C
+ cmp r2, r0
+ beq _021D9378
+ b _021D93E8
+_021D9350:
+ ldr r0, _021D9408 ; =UNK04_0221046C
+ bl FUN_02096570
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D9410 ; =0x00004E88
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0x10
+ ldmia sp!, {r4, r5, pc}
+_021D9378:
+ ldr r0, _021D9400 ; =UNK04_0220BF88
+ mov r1, #0x700
+ blx r5
+ movs r5, r0
+ bne _021D93AC
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D9414 ; =0x00004E8C
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0x11
+ ldmia sp!, {r4, r5, pc}
+_021D93AC:
+ add r0, r5, #0x1f
+ bic r0, r0, #0x1f
+ bl DWCi_AUTH_MakeWiFiID
+ ldr r0, _021D940C ; =UNK04_0220BF98
+ mov r1, r5
+ mov r2, #0
+ blx r4
+ ldr r0, _021D93F4 ; =UNK04_02210468
+ ldr r2, _021D9414 ; =0x00004E8C
+ ldr r1, [r0]
+ add sp, sp, #4
+ add r1, r1, #0x1000
+ str r2, [r1, #8]
+ mov r0, #0x11
+ ldmia sp!, {r4, r5, pc}
+_021D93E8:
+ mov r0, #0x12
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021D93F4: .word UNK04_02210468
+_021D93F8: .word 0x00004E84
+_021D93FC: .word 0x00004E22
+_021D9400: .word UNK04_0220BF88
+_021D9404: .word 0x0000071F
+_021D9408: .word UNK04_0221046C
+_021D940C: .word UNK04_0220BF98
+_021D9410: .word 0x00004E88
+_021D9414: .word 0x00004E8C
+ arm_func_end MOD04_021D9210
+
+ arm_func_start MOD04_021D9418
+MOD04_021D9418: ; 0x021D9418
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x14
+ mov sb, #0
+ mov r0, #1
+ ldr r7, _021D96D4 ; =0x00001388
+ ldr fp, _021D96D8 ; =0x000082EA
+ ldr r5, _021D96DC ; =UNK04_02210468
+ ldr r4, _021D96E0 ; =0x000013D8
+ mov r6, sb
+ str sb, [sp, #8]
+ str sb, [sp, #0xc]
+ str r0, [sp, #4]
+_021D9448:
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x314]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021D9470
+ ldr r0, _021D96E4 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021D9470:
+ ldr r0, [r5]
+ add r1, r0, #0x1000
+ ldr r0, [r1, #0x314]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x20]
+ cmp r0, #8
+ beq _021D9518
+ ldr r0, _021D96E8 ; =0x00004E84
+ str r0, [r1, #8]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x20]
+ cmp r0, #7
+ bne _021D94C0
+ mov r0, #0x14
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D94C0:
+ cmp sb, #2
+ ble _021D9508
+ cmp r0, #2
+ bne _021D94E0
+ mov r0, #9
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D94E0:
+ cmp r0, #3
+ bne _021D94F8
+ mov r0, #0xb
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D94F8:
+ mov r0, #0xd
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D9508:
+ ldr r0, [sp, #4]
+ add sb, sb, #1
+ str r0, [sp]
+ b _021D9598
+_021D9518:
+ bl MOD04_021D9210
+ cmp r0, #0x10
+ beq _021D9544
+ cmp r0, #0x11
+ beq _021D956C
+ cmp r0, #0x15
+ bne _021D9578
+ mov r0, #0x15
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D9544:
+ cmp sb, #2
+ ble _021D955C
+ mov r0, #0x10
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D955C:
+ ldr r0, [sp, #8]
+ add sb, sb, #1
+ str r0, [sp]
+ b _021D9598
+_021D956C:
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D9578:
+ cmp sb, #2
+ blt _021D958C
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D958C:
+ ldr r0, [sp, #4]
+ add sb, sb, #1
+ str r0, [sp]
+_021D9598:
+ bl OS_GetTick
+ mov r8, r0
+ mov sl, r1
+ bl OS_GetTick
+ subs r2, r0, r8
+ sbc r0, r1, sl
+ mov r1, r0, lsl #6
+ ldr r3, [sp, #0xc]
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ mov r2, fp
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, r7
+ bhs _021D965C
+_021D95D4:
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl OS_LockMutex
+ ldr r2, [r5]
+ add r1, r2, #0x1000
+ ldr r0, [r1, #0x3f0]
+ cmp r0, #1
+ bne _021D961C
+ ldr r2, _021D96E8 ; =0x00004E84
+ ldr r0, _021D96E0 ; =0x000013D8
+ str r2, [r1, #8]
+ ldr r1, [r5]
+ add r0, r1, r0
+ bl OS_UnlockMutex
+ mov r0, #0x14
+ bl MOD04_021D8D18
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D961C:
+ add r0, r2, r4
+ bl OS_UnlockMutex
+ mov r0, r7
+ bl OS_Sleep
+ bl OS_GetTick
+ subs r2, r0, r8
+ sbc r0, r1, sl
+ mov r1, r0, lsl #6
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ mov r2, fp
+ mov r3, r6
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, r7
+ blo _021D95D4
+_021D965C:
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DAE4C
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl OS_LockMutex
+ ldr r0, [sp]
+ bl MOD04_021D96EC
+ ldr r1, [r5]
+ add r1, r1, #0x1000
+ str r0, [r1, #4]
+ ldr r2, [r5]
+ add r1, r2, #0x1000
+ ldr r0, [r1, #4]
+ cmp r0, #0
+ beq _021D96C0
+ ldr r2, _021D96E8 ; =0x00004E84
+ ldr r0, _021D96E0 ; =0x000013D8
+ str r2, [r1, #8]
+ ldr r1, [r5]
+ add r0, r1, r0
+ bl OS_UnlockMutex
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021D96C0:
+ add r0, r2, r4
+ bl OS_UnlockMutex
+ b _021D9448
+ arm_func_end MOD04_021D9418
+
+ arm_func_start MOD04_021D96CC
+MOD04_021D96CC: ; 0x021D96CC
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021D96D4: .word 0x00001388
+_021D96D8: .word 0x000082EA
+_021D96DC: .word UNK04_02210468
+_021D96E0: .word 0x000013D8
+_021D96E4: .word 0x00001B34
+_021D96E8: .word 0x00004E84
+ arm_func_end MOD04_021D96CC
+
+ arm_func_start MOD04_021D96EC
+MOD04_021D96EC: ; 0x021D96EC
+ stmdb sp!, {r4, lr}
+ ldr r1, _021D97E0 ; =UNK04_0220BEB4
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, _021D97E4 ; =UNK04_0220BFA4
+ bl strcmp
+ cmp r0, #0
+ ldrne r0, _021D97E0 ; =UNK04_0220BEB4
+ movne r1, #1
+ strne r1, [r0, #0x14]
+ ldr r0, _021D97E8 ; =UNK04_02210468
+ ldr r1, _021D97E0 ; =UNK04_0220BEB4
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r2, [r0, #0x20c]
+ str r2, [r1, #0xc]
+ ldr r2, [r0, #0x210]
+ str r2, [r1, #0x10]
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DB608
+ cmp r0, #0
+ movne r0, #4
+ ldmneia sp!, {r4, pc}
+ cmp r4, #1
+ bne _021D9758
+ ldr r0, _021D97EC ; =UNK04_0221046C
+ bl DWCi_BM_GetWiFiInfo
+_021D9758:
+ ldr r0, _021D97E8 ; =UNK04_02210468
+ ldr r2, _021D97F0 ; =0x000011CC
+ ldr r3, [r0]
+ add r0, r3, #0x1000
+ ldr r0, [r0, #0x314]
+ add r1, r3, #0x1200
+ add r2, r3, r2
+ bl MOD04_021D8D60
+ ldr r2, _021D97E8 ; =UNK04_02210468
+ ldr r1, [r2]
+ add r1, r1, #0x1000
+ str r0, [r1, #4]
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ movne r0, #4
+ ldmneia sp!, {r4, pc}
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DB570
+ cmp r0, #0
+ movne r0, #4
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021D97F4 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ ldr r1, _021D97E8 ; =UNK04_02210468
+ ldr r2, [r1]
+ sub r1, r0, #1
+ add r0, r2, #0x1000
+ ldr r0, [r0, #0x314]
+ bl MOD04_021DB4A4
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D97E0: .word UNK04_0220BEB4
+_021D97E4: .word UNK04_0220BFA4
+_021D97E8: .word UNK04_02210468
+_021D97EC: .word UNK04_0221046C
+_021D97F0: .word 0x000011CC
+_021D97F4: .word OSi_ThreadInfo
+ arm_func_end MOD04_021D96EC
+
+ arm_func_start MOD04_021D97F8
+MOD04_021D97F8: ; 0x021D97F8
+ stmdb sp!, {r4, lr}
+ ldr r1, _021D9874 ; =UNK04_02210468
+ mov r4, r0
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021D981C
+ mov r1, #0
+ mov r2, #0x1c4
+ bl MI_CpuFill8
+_021D981C:
+ ldr r1, _021D9874 ; =UNK04_02210468
+ ldr r0, _021D9878 ; =0x00001008
+ ldr r2, [r1]
+ mov r1, r4
+ add r0, r2, r0
+ mov r2, #0x1c4
+ bl MI_CpuCopy8
+ ldr r1, [r4]
+ ldr r0, _021D987C ; =0x00004E20
+ cmp r1, r0
+ blt _021D9854
+ ldr r0, _021D9880 ; =0x00007530
+ cmp r1, r0
+ blt _021D985C
+_021D9854:
+ ldr r0, _021D9884 ; =0x00005206
+ str r0, [r4]
+_021D985C:
+ ldr r1, [r4]
+ ldr r0, _021D9888 ; =0x00004E84
+ cmp r1, r0
+ rsbge r0, r1, #0
+ strge r0, [r4]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D9874: .word UNK04_02210468
+_021D9878: .word 0x00001008
+_021D987C: .word 0x00004E20
+_021D9880: .word 0x00007530
+_021D9884: .word 0x00005206
+_021D9888: .word 0x00004E84
+ arm_func_end MOD04_021D97F8
+
+ arm_func_start MOD04_021D988C
+MOD04_021D988C: ; 0x021D988C
+ stmdb sp!, {r4, lr}
+ ldr r0, _021D98D4 ; =UNK04_02210468
+ ldr r1, [r0]
+ cmp r1, #0
+ moveq r0, #0x16
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _021D98D8 ; =0x000013D8
+ add r0, r1, r0
+ bl OS_LockMutex
+ ldr r1, _021D98D4 ; =UNK04_02210468
+ ldr r0, _021D98D8 ; =0x000013D8
+ ldr r2, [r1]
+ add r1, r2, #0x1000
+ add r0, r2, r0
+ ldr r4, [r1, #4]
+ bl OS_UnlockMutex
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D98D4: .word UNK04_02210468
+_021D98D8: .word 0x000013D8
+ arm_func_end MOD04_021D988C
+
+ arm_func_start MOD04_021D98DC
+MOD04_021D98DC: ; 0x021D98DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021D9914 ; =UNK04_02210468
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x384]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021D9918 ; =0x00001318
+ add r0, r1, r0
+ bl OS_JoinThread
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021D9914: .word UNK04_02210468
+_021D9918: .word 0x00001318
+ arm_func_end MOD04_021D98DC
+
+ arm_func_start MOD04_021D991C
+MOD04_021D991C: ; 0x021D991C
+ stmdb sp!, {r4, lr}
+ ldr r0, _021D996C ; =UNK04_02210468
+ ldr r0, [r0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r1, r0, #0x1000
+ ldr r0, [r1, #0x314]
+ ldr r4, [r1, #0x210]
+ cmp r0, #0
+ beq _021D9948
+ bl MOD04_021DAE4C
+_021D9948:
+ ldr r1, _021D996C ; =UNK04_02210468
+ ldr r0, _021D9970 ; =UNK04_0220BFC4
+ ldr r1, [r1]
+ mov r2, #0
+ blx r4
+ ldr r0, _021D996C ; =UNK04_02210468
+ mov r1, #0
+ str r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021D996C: .word UNK04_02210468
+_021D9970: .word UNK04_0220BFC4
+ arm_func_end MOD04_021D991C
+
+ arm_func_start MOD04_021D9974
+MOD04_021D9974: ; 0x021D9974
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021D9A0C ; =UNK04_02210468
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021D9A10 ; =0x000013D8
+ add r0, r1, r0
+ bl OS_LockMutex
+ ldr r2, _021D9A0C ; =UNK04_02210468
+ mov r3, #1
+ ldr r0, [r2]
+ ldr r1, _021D9A10 ; =0x000013D8
+ add r0, r0, #0x1000
+ str r3, [r0, #0x3f0]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl OS_UnlockMutex
+ ldr r0, _021D9A0C ; =UNK04_02210468
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x314]
+ cmp r0, #0
+ beq _021D99DC
+ bl MOD04_021DB440
+_021D99DC:
+ ldr r0, _021D9A0C ; =UNK04_02210468
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x384]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021D9A14 ; =0x00001318
+ add r0, r1, r0
+ bl OS_JoinThread
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021D9A0C: .word UNK04_02210468
+_021D9A10: .word 0x000013D8
+_021D9A14: .word 0x00001318
+ arm_func_end MOD04_021D9974
+
+ arm_func_start MOD04_021D9A18
+MOD04_021D9A18: ; 0x021D9A18
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r1, _021D9ABC ; =UNK04_02210468
+ ldr r0, _021D9AC0 ; =0x000013D8
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_InitMutex
+ ldr r1, _021D9ABC ; =UNK04_02210468
+ mov r2, #0
+ ldr r0, [r1]
+ add r0, r0, #0x1000
+ str r2, [r0, #0x3f0]
+ ldr r1, [r1]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x384]
+ cmp r0, #0
+ beq _021D9A74
+ ldr r0, _021D9AC4 ; =0x00001318
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+_021D9A74:
+ ldr r2, _021D9ABC ; =UNK04_02210468
+ ldr r0, _021D9AC4 ; =0x00001318
+ ldr lr, [r2]
+ mov r3, #0x1000
+ ldr r1, _021D9AC8 ; =MOD04_021D9418
+ str r3, [sp]
+ mov ip, #0x10
+ add r0, lr, r0
+ add r3, lr, #0x1000
+ str ip, [sp, #4]
+ bl OS_CreateThread
+ ldr r1, _021D9ABC ; =UNK04_02210468
+ ldr r0, _021D9AC4 ; =0x00001318
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021D9ABC: .word UNK04_02210468
+_021D9AC0: .word 0x000013D8
+_021D9AC4: .word 0x00001318
+_021D9AC8: .word MOD04_021D9418
+ arm_func_end MOD04_021D9A18
+
+ arm_func_start MOD04_021D9ACC
+MOD04_021D9ACC: ; 0x021D9ACC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021D9BFC ; =UNK04_02210468
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ addne sp, sp, #4
+ ldr r2, [r5, #0x40]
+ movne r0, #2
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D9C00 ; =UNK04_0220BFD4
+ ldr r1, _021D9C04 ; =0x000013F4
+ blx r2
+ ldr r1, _021D9BFC ; =UNK04_02210468
+ cmp r0, #0
+ str r0, [r1]
+ addeq sp, sp, #4
+ moveq r0, #2
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, _021D9C04 ; =0x000013F4
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021D9BFC ; =UNK04_02210468
+ ldr r2, _021D9C08 ; =0x00001008
+ ldr r0, [r1]
+ ldr r3, _021D9C0C ; =UNK04_02210464
+ add r0, r0, #0x1000
+ str r4, [r0, #0x314]
+ ldr r0, [r1]
+ mov r1, #0
+ add r0, r0, r2
+ mov r2, #0x1c4
+ str r1, [r3]
+ bl MI_CpuFill8
+ ldr r2, _021D9BFC ; =UNK04_02210468
+ ldr r3, _021D9C10 ; =0x00004E84
+ ldr r0, [r2]
+ ldr r1, _021D9C14 ; =0x000011CC
+ add r0, r0, #0x1000
+ str r3, [r0, #8]
+ ldr lr, [r2]
+ mov r4, #4
+ add ip, lr, r1
+_021D9B7C:
+ ldmia r5!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ subs r4, r4, #1
+ bne _021D9B7C
+ ldmia r5, {r0, r1}
+ stmia ip, {r0, r1}
+ add r0, lr, #0x1100
+ mov r2, #0
+ strh r2, [r0, #0xfe]
+ ldr r1, _021D9BFC ; =UNK04_02210468
+ mov r0, #1
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ strb r2, [r1, #0x20b]
+ bl MOD04_021D96EC
+ ldr r2, _021D9BFC ; =UNK04_02210468
+ ldr r1, [r2]
+ add r1, r1, #0x1000
+ str r0, [r1, #4]
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021D9C18 ; =UNK04_02210460
+ mov r1, #0
+ str r1, [r0]
+ bl MOD04_021D9A18
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021D9BFC: .word UNK04_02210468
+_021D9C00: .word UNK04_0220BFD4
+_021D9C04: .word 0x000013F4
+_021D9C08: .word 0x00001008
+_021D9C0C: .word UNK04_02210464
+_021D9C10: .word 0x00004E84
+_021D9C14: .word 0x000011CC
+_021D9C18: .word UNK04_02210460
+ arm_func_end MOD04_021D9ACC
+
+ arm_func_start MOD04_021D9C1C
+MOD04_021D9C1C: ; 0x021D9C1C
+ ldr r1, _021D9C28 ; =UNK04_0220BEB4
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_021D9C28: .word UNK04_0220BEB4
+ arm_func_end MOD04_021D9C1C
+
+ .section .data
+
+ .global UNK04_0220BEB4
+UNK04_0220BEB4: ; 0x0220BEB4
+ .word UNK04_0220BED0
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00
+
+ .global UNK04_0220BED0
+UNK04_0220BED0: ; 0x0220BED0
+ .asciz "https://nas.test.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220BEF8
+UNK04_0220BEF8: ; 0x0220BEF8
+ .asciz "acctcreate"
+
+ .balign 4, 0
+ .global UNK04_0220BF04
+UNK04_0220BF04: ; 0x0220BF04
+ .asciz "action"
+
+ .balign 4, 0
+ .global UNK04_0220BF0C
+UNK04_0220BF0C: ; 0x0220BF0C
+ .asciz "login"
+
+ .balign 4, 0
+ .global UNK04_0220BF14
+UNK04_0220BF14: ; 0x0220BF14
+ .asciz "gsbrcd"
+
+ .balign 4, 0
+ .global UNK04_0220BF1C
+UNK04_0220BF1C: ; 0x0220BF1C
+ .asciz "Y"
+
+ .balign 4, 0
+ .global UNK04_0220BF20
+UNK04_0220BF20: ; 0x0220BF20
+ .asciz "iswfc"
+
+ .balign 4, 0
+ .global UNK04_0220BF28
+UNK04_0220BF28: ; 0x0220BF28
+ .asciz "ingamesn"
+
+ .balign 4, 0
+ .global UNK04_0220BF34
+UNK04_0220BF34: ; 0x0220BF34
+ .asciz "Date"
+
+ .balign 4, 0
+ .global UNK04_0220BF3C
+UNK04_0220BF3C: ; 0x0220BF3C
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220BF48
+UNK04_0220BF48: ; 0x0220BF48
+ .asciz "returncd"
+
+ .balign 4, 0
+ .global UNK04_0220BF54
+UNK04_0220BF54: ; 0x0220BF54
+ .asciz "token"
+
+ .balign 4, 0
+ .global UNK04_0220BF5C
+UNK04_0220BF5C: ; 0x0220BF5C
+ .asciz "locator"
+
+ .balign 4, 0
+ .global UNK04_0220BF64
+UNK04_0220BF64: ; 0x0220BF64
+ .asciz "challenge"
+
+ .balign 4, 0
+ .global UNK04_0220BF70
+UNK04_0220BF70: ; 0x0220BF70
+ .asciz "datetime"
+
+ .balign 4, 0
+ .global UNK04_0220BF7C
+UNK04_0220BF7C: ; 0x0220BF7C
+ .asciz "Set-Cookie"
+
+ .balign 4, 0
+ .global UNK04_0220BF88
+UNK04_0220BF88: ; 0x0220BF88
+ .asciz "ALLOC bmwork"
+
+ .balign 4, 0
+ .global UNK04_0220BF98
+UNK04_0220BF98: ; 0x0220BF98
+ .asciz "FREE bmwork"
+
+ .balign 4, 0
+ .global UNK04_0220BFA4
+UNK04_0220BFA4: ; 0x0220BFA4
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220BFC4
+UNK04_0220BFC4: ; 0x0220BFC4
+ .asciz "FREE DWCauth"
+
+ .balign 4, 0
+ .global UNK04_0220BFD4
+UNK04_0220BFD4: ; 0x0220BFD4
+ .asciz "ALLOC DWCauth"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210460
+UNK04_02210460: ; 0x02210460
+ .space 0x4
+
+ .global UNK04_02210464
+UNK04_02210464: ; 0x02210464
+ .space 0x4
+
+ .global UNK04_02210468
+UNK04_02210468: ; 0x02210468
+ .space 0x4
+
+ .global UNK04_0221046C
+UNK04_0221046C: ; 0x0221046C
+ .space 0x14
+
+ .global UNK04_02210480
+UNK04_02210480: ; 0x02210480
+ .space 0x4
+
+ .global UNK04_02210484
+UNK04_02210484: ; 0x02210484
+ .space 0x4
+
+ .global UNK04_02210488
+UNK04_02210488: ; 0x02210488
+ .space 0x4
+
+ .global UNK04_0221048C
+UNK04_0221048C: ; 0x0221048C
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s
new file mode 100644
index 00000000..fdff3193
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021D9C2C.s
@@ -0,0 +1,549 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021D9C2C
+MOD04_021D9C2C: ; 0x021D9C2C
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x28
+ mov r4, r2
+ mov r6, r0
+ mov r5, r1
+ mov ip, #2
+ ldr r2, _021D9F30 ; =UNK04_0220BFE4
+ add r0, sp, #4
+ mov r1, #0x21
+ mov r3, #1
+ str ip, [sp]
+ bl OS_SNPrintf
+ add r0, sp, #4
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F34 ; =UNK04_0220BFF0
+ mov r0, r6
+ add r2, sp, #4
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r5
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F38 ; =UNK04_0220BFF8
+ mov r0, r6
+ mov r2, r5
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0xe
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F3C ; =UNK04_0220C000
+ mov r0, r6
+ add r2, r5, #0xe
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x41
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F40 ; =UNK04_0220C008
+ mov r0, r6
+ add r2, r5, #0x41
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x6f
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F44 ; =UNK04_0220C010
+ mov r0, r6
+ add r2, r5, #0x6f
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x15
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F48 ; =UNK04_0220C018
+ mov r0, r6
+ add r2, r5, #0x15
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x1a
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F4C ; =UNK04_0220C020
+ mov r0, r6
+ add r2, r5, #0x1a
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x1d
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F50 ; =UNK04_0220C028
+ mov r0, r6
+ add r2, r5, #0x1d
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x1f
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F54 ; =UNK04_0220C030
+ mov r0, r6
+ add r2, r5, #0x1f
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x2c
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F58 ; =UNK04_0220C038
+ mov r0, r6
+ add r2, r5, #0x2c
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x2f
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F5C ; =UNK04_0220C040
+ mov r0, r6
+ add r2, r5, #0x2f
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x34
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F60 ; =UNK04_0220C048
+ mov r0, r6
+ add r2, r5, #0x34
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r0, r5, #0x7e
+ bl wcslen
+ mov r3, r0
+ ldr r1, _021D9F64 ; =UNK04_0220C050
+ mov r0, r6
+ add r2, r5, #0x7e
+ mov r3, r3, lsl #1
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ cmp r4, #1
+ bne _021D9ED0
+ add r0, r5, #0x4e
+ bl strlen
+ mov r3, r0
+ ldr r1, _021D9F68 ; =UNK04_0220C058
+ mov r0, r6
+ add r2, r5, #0x4e
+ bl MOD04_021DAB68
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+_021D9ED0:
+ ldr r2, _021D9F6C ; =UNK04_0220C060
+ mov ip, #2
+ add r0, sp, #4
+ mov r1, #0x21
+ mov r3, #1
+ str ip, [sp]
+ bl OS_SNPrintf
+ ldr r1, _021D9F70 ; =UNK04_0220C078
+ add r2, sp, #4
+ mov r0, r6
+ bl MOD04_021DAC98
+ cmp r0, #0
+ addne sp, sp, #0x28
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r1, _021D9F74 ; =UNK04_0220C084
+ mov r0, r6
+ add r2, r5, #0x15
+ bl MOD04_021DAC98
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021D9F30: .word UNK04_0220BFE4
+_021D9F34: .word UNK04_0220BFF0
+_021D9F38: .word UNK04_0220BFF8
+_021D9F3C: .word UNK04_0220C000
+_021D9F40: .word UNK04_0220C008
+_021D9F44: .word UNK04_0220C010
+_021D9F48: .word UNK04_0220C018
+_021D9F4C: .word UNK04_0220C020
+_021D9F50: .word UNK04_0220C028
+_021D9F54: .word UNK04_0220C030
+_021D9F58: .word UNK04_0220C038
+_021D9F5C: .word UNK04_0220C040
+_021D9F60: .word UNK04_0220C048
+_021D9F64: .word UNK04_0220C050
+_021D9F68: .word UNK04_0220C058
+_021D9F6C: .word UNK04_0220C060
+_021D9F70: .word UNK04_0220C078
+_021D9F74: .word UNK04_0220C084
+ arm_func_end MOD04_021D9C2C
+
+ arm_func_start MOD04_021D9F78
+MOD04_021D9F78: ; 0x021D9F78
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0x8c
+ mov r6, r1
+ mov r1, #0
+ mov r2, #0x94
+ mov r4, r0
+ bl MI_CpuFill8
+ ldr r3, [r6]
+ ldr r5, [r6, #4]
+ mov r0, #0
+ cmp r5, r0
+ cmpeq r3, r0
+ beq _021D9FC4
+ ldr r2, _021DA218 ; =UNK04_0220C094
+ mov r0, r4
+ mov r1, #0xe
+ str r5, [sp]
+ bl OS_SNPrintf
+ b _021D9FE0
+_021D9FC4:
+ ldr r3, [r6, #8]
+ ldr r5, [r6, #0xc]
+ ldr r2, _021DA218 ; =UNK04_0220C094
+ mov r0, r4
+ mov r1, #0xe
+ str r5, [sp]
+ bl OS_SNPrintf
+_021D9FE0:
+ ldrh r3, [r6, #0x10]
+ ldr r2, _021DA21C ; =UNK04_0220C09C
+ add r0, r4, #0xe
+ mov r1, #7
+ bl OS_SNPrintf
+ ldr r0, _021DA220 ; =0x027FFE0C
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DA008
+ bl OS_Terminate
+_021DA008:
+ ldr r0, _021DA220 ; =0x027FFE0C
+ add r1, r4, #0x15
+ mov r2, #4
+ bl MI_CpuCopy8
+ ldr r0, _021DA224 ; =0x027FFE10
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DA02C
+ bl OS_Terminate
+_021DA02C:
+ ldr r0, _021DA224 ; =0x027FFE10
+ add r1, r4, #0x1a
+ mov r2, #2
+ bl MI_CpuCopy8
+ mov r1, #0x30
+ add r0, sp, #0x16
+ strb r1, [r4, #0x1d]
+ bl OS_GetMacAddress
+ ldr r5, _021DA228 ; =UNK04_0220C0A4
+ add r7, sp, #0x16
+ add r6, r4, #0x1f
+ mov r8, #0
+_021DA05C:
+ ldrb r2, [r7]
+ mov r0, r6
+ mov r1, r5
+ bl OS_SPrintf
+ add r8, r8, #1
+ cmp r8, #6
+ add r7, r7, #1
+ add r6, r6, #2
+ blt _021DA05C
+ add r0, sp, #0x38
+ bl OS_GetOwnerInfo
+ ldrb r0, [sp, #0x38]
+ ldr r2, _021DA228 ; =UNK04_0220C0A4
+ mov r1, #3
+ cmp r0, #6
+ movhi r0, #1
+ strhib r0, [sp, #0x38]
+ ldrb r3, [sp, #0x38]
+ add r0, r4, #0x2c
+ bl OS_SNPrintf
+ add r0, sp, #0x3c
+ add r1, r4, #0x7e
+ mov r2, #0x14
+ bl MI_CpuCopy8
+ ldrb r1, [sp, #0x3b]
+ ldr r2, _021DA22C ; =UNK04_0220C0AC
+ add r0, r4, #0x2f
+ str r1, [sp]
+ ldrb r3, [sp, #0x3a]
+ mov r1, #5
+ bl OS_SNPrintf
+ add r0, sp, #0x1c
+ bl RTC_GetDate
+ cmp r0, #0
+ bne _021DA0F8
+ add r0, sp, #0x2c
+ bl RTC_GetTime
+ cmp r0, #0
+ beq _021DA104
+_021DA0F8:
+ add sp, sp, #0x8c
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DA104:
+ ldr r0, [sp, #0x20]
+ ldr r2, _021DA230 ; =UNK04_0220C0B8
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ add r0, r4, #0x34
+ str r1, [sp, #4]
+ ldr r3, [sp, #0x2c]
+ mov r1, #0xd
+ str r3, [sp, #8]
+ ldr r3, [sp, #0x30]
+ str r3, [sp, #0xc]
+ ldr r3, [sp, #0x34]
+ str r3, [sp, #0x10]
+ ldr r3, [sp, #0x1c]
+ bl OS_SNPrintf
+ bl OS_DisableInterrupts
+ mov sb, r0
+ bl WCM_GetApMacAddress
+ mov r8, r0
+ mov r1, #6
+ bl DC_InvalidateRange
+ cmp r8, #0
+ bne _021DA174
+ mov r0, sb
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x8c
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DA174:
+ add r7, r4, #0x41
+ mov r6, #0
+ ldr r5, _021DA228 ; =UNK04_0220C0A4
+_021DA180:
+ ldrb r2, [r8, r6]
+ mov r0, r7
+ mov r1, r5
+ bl OS_SPrintf
+ add r6, r6, #1
+ cmp r6, #6
+ add r7, r7, #2
+ blt _021DA180
+ bl MOD04_021EBAB8
+ mov r3, r0
+ ldr r2, _021DA234 ; =UNK04_0220C0D4
+ add r0, r4, #0x6f
+ mov r1, #0xe
+ bl OS_SNPrintf
+ add r0, sp, #0x14
+ bl WCM_GetApEssid
+ mov r5, r0
+ mov r1, #0x20
+ bl DC_InvalidateRange
+ cmp r5, #0
+ bne _021DA1E8
+ mov r0, sb
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x8c
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DA1E8:
+ mov r0, r5
+ add r1, r4, #0x72
+ bl MOD04_021EE5F4
+ mov r0, r5
+ add r1, r4, #0x4e
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ mov r0, sb
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, sp, #0x8c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021DA218: .word UNK04_0220C094
+_021DA21C: .word UNK04_0220C09C
+_021DA220: .word 0x027FFE0C
+_021DA224: .word 0x027FFE10
+_021DA228: .word UNK04_0220C0A4
+_021DA22C: .word UNK04_0220C0AC
+_021DA230: .word UNK04_0220C0B8
+_021DA234: .word UNK04_0220C0D4
+ arm_func_end MOD04_021D9F78
+
+ arm_func_start MOD04_021DA238
+MOD04_021DA238: ; 0x021DA238
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x18
+ mov r4, r0
+ add r0, sp, #0
+ bl DWCi_BM_GetWiFiInfo
+ add r1, sp, #0
+ mov r0, r4
+ bl MOD04_021D9F78
+ add sp, sp, #0x18
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DA238
+
+ .section .data
+
+ .global UNK04_0220BFE4
+UNK04_0220BFE4: ; 0x0220BFE4
+ .asciz "%03d%03d"
+
+ .balign 4, 0
+ .global UNK04_0220BFF0
+UNK04_0220BFF0: ; 0x0220BFF0
+ .asciz "sdkver"
+
+ .balign 4, 0
+ .global UNK04_0220BFF8
+UNK04_0220BFF8: ; 0x0220BFF8
+ .asciz "userid"
+
+ .balign 4, 0
+ .global UNK04_0220C000
+UNK04_0220C000: ; 0x0220C000
+ .asciz "passwd"
+
+ .balign 4, 0
+ .global UNK04_0220C008
+UNK04_0220C008: ; 0x0220C008
+ .asciz "bssid"
+
+ .balign 4, 0
+ .global UNK04_0220C010
+UNK04_0220C010: ; 0x0220C010
+ .asciz "apinfo"
+
+ .balign 4, 0
+ .global UNK04_0220C018
+UNK04_0220C018: ; 0x0220C018
+ .asciz "gamecd"
+
+ .balign 4, 0
+ .global UNK04_0220C020
+UNK04_0220C020: ; 0x0220C020
+ .asciz "makercd"
+
+ .balign 4, 0
+ .global UNK04_0220C028
+UNK04_0220C028: ; 0x0220C028
+ .asciz "unitcd"
+
+ .balign 4, 0
+ .global UNK04_0220C030
+UNK04_0220C030: ; 0x0220C030
+ .asciz "macadr"
+
+ .balign 4, 0
+ .global UNK04_0220C038
+UNK04_0220C038: ; 0x0220C038
+ .asciz "lang"
+
+ .balign 4, 0
+ .global UNK04_0220C040
+UNK04_0220C040: ; 0x0220C040
+ .asciz "birth"
+
+ .balign 4, 0
+ .global UNK04_0220C048
+UNK04_0220C048: ; 0x0220C048
+ .asciz "devtime"
+
+ .balign 4, 0
+ .global UNK04_0220C050
+UNK04_0220C050: ; 0x0220C050
+ .asciz "devname"
+
+ .balign 4, 0
+ .global UNK04_0220C058
+UNK04_0220C058: ; 0x0220C058
+ .asciz "ssid"
+
+ .balign 4, 0
+ .global UNK04_0220C060
+UNK04_0220C060: ; 0x0220C060
+ .asciz "Nitro WiFi SDK/%d.%d"
+
+ .balign 4, 0
+ .global UNK04_0220C078
+UNK04_0220C078: ; 0x0220C078
+ .asciz "User-Agent"
+
+ .balign 4, 0
+ .global UNK04_0220C084
+UNK04_0220C084: ; 0x0220C084
+ .asciz "HTTP_X_GAMECD"
+
+ .balign 4, 0
+ .global UNK04_0220C094
+UNK04_0220C094: ; 0x0220C094
+ .asciz "%013llu"
+
+ .balign 4, 0
+ .global UNK04_0220C09C
+UNK04_0220C09C: ; 0x0220C09C
+ .asciz "%03u"
+
+ .balign 4, 0
+ .global UNK04_0220C0A4
+UNK04_0220C0A4: ; 0x0220C0A4
+ .asciz "%02x"
+
+ .balign 4, 0
+ .global UNK04_0220C0AC
+UNK04_0220C0AC: ; 0x0220C0AC
+ .asciz "%02x%02x"
+
+ .balign 4, 0
+ .global UNK04_0220C0B8
+UNK04_0220C0B8: ; 0x0220C0B8
+ .asciz "%02d%02d%02d%02d%02d%02d"
+
+ .balign 4, 0
+ .global UNK04_0220C0D4
+UNK04_0220C0D4: ; 0x0220C0D4
+ .asciz "%02d:0000000-00"
+
+ .balign 4, 0
diff --git a/arm9/modules/04/asm/mod04_021DA260.s b/arm9/modules/04/asm/mod04_021DA260.s
new file mode 100644
index 00000000..de6114d7
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DA260.s
@@ -0,0 +1,1689 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DA260
+MOD04_021DA260: ; 0x021DA260
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ add r0, r0, #0x1000
+ mov sb, r2
+ cmp sb, #0
+ ldr r8, [r0, #0x14]
+ mov sl, r1
+ mov r7, #0
+ addle sp, sp, #4
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r6, r7
+ mov r5, r7
+ mov fp, r7
+ mov r4, r7
+_021DA298:
+ ldr r1, [sl, r7, lsl #3]
+ cmp r1, #0
+ beq _021DA2B4
+ ldr r0, _021DA2EC ; =UNK04_0220C110
+ mov r2, r6
+ blx r8
+ str r5, [sl, r7, lsl #3]
+_021DA2B4:
+ add r0, sl, r7, lsl #3
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _021DA2D8
+ ldr r0, _021DA2F0 ; =UNK04_0220C12C
+ mov r2, fp
+ blx r8
+ add r0, sl, r7, lsl #3
+ str r4, [r0, #4]
+_021DA2D8:
+ add r7, r7, #1
+ cmp r7, sb
+ blt _021DA298
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DA2EC: .word UNK04_0220C110
+_021DA2F0: .word UNK04_0220C12C
+ arm_func_end MOD04_021DA260
+
+ arm_func_start MOD04_021DA2F4
+MOD04_021DA2F4: ; 0x021DA2F4
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r2
+ mov r5, r3
+ bl MOD04_021DA388
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl strlen
+ cmp r0, r5
+ movge r0, #0
+ ldmgeia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ mov r1, r4
+ bl strcpy
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DA2F4
+
+ arm_func_start MOD04_021DA334
+MOD04_021DA334: ; 0x021DA334
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r2
+ mov r5, r3
+ bl MOD04_021DA388
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl strlen
+ mov r1, r0
+ mov r0, r4
+ mov r2, r6
+ mov r3, r5
+ bl MOD04_021DD36C
+ mvn r1, #0
+ cmp r0, r1
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r0, r5
+ ldmhsia sp!, {r4, r5, r6, pc}
+ mov r1, #0
+ strb r1, [r6, r0]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DA334
+
+ arm_func_start MOD04_021DA388
+MOD04_021DA388: ; 0x021DA388
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, #0
+_021DA398:
+ add r0, r6, r4, lsl #3
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0xa34]
+ cmp r1, #0
+ beq _021DA3D4
+ mov r0, r5
+ bl strcmp
+ cmp r0, #0
+ addeq r0, r6, r4, lsl #3
+ addeq r0, r0, #0x1000
+ ldreq r0, [r0, #0xa38]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _021DA398
+_021DA3D4:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DA388
+
+ arm_func_start MOD04_021DA3DC
+MOD04_021DA3DC: ; 0x021DA3DC
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x14
+ ldr r2, _021DA668 ; =0x00001A34
+ mov fp, r0
+ add r0, fp, r2
+ mov r6, r1
+ mov r3, #0x20
+ mov r1, #0
+ mov r2, #0x100
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r1, [sp, #0x10]
+ bl MI_CpuFill8
+ add r0, fp, #0x1000
+ ldr r5, [r0, #0xa04]
+ ldr r1, _021DA66C ; =UNK04_0220C148
+ mov r0, r5
+ bl strstr
+ str r0, [sp]
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r0, r0, #4
+ bl strlen
+ ldr r1, [sp]
+ add r1, r1, #4
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, _021DA670 ; =UNK04_0220C150
+ mov r0, r5
+ bl strstr
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r8, r0, #1
+ ldrsb r7, [r8, #3]
+ ldr r2, _021DA674 ; =UNK04_0220C154
+ mov r5, #0
+ add r1, sp, #8
+ mov r0, fp
+ mov r3, r8
+ strb r5, [r8, #3]
+ bl MOD04_021DA68C
+ cmp r0, #1
+ addne sp, sp, #0x14
+ strneb r7, [r8, #3]
+ movne r0, r5
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ strb r7, [r8, #3]
+ cmp r6, #1
+ beq _021DA4C8
+ ldr r1, _021DA678 ; =UNK04_0220C160
+ mov r0, r8
+ mov r2, #3
+ bl strncmp
+ cmp r0, #0
+ beq _021DA4D4
+_021DA4C8:
+ add sp, sp, #0x14
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DA4D4:
+ ldr r1, _021DA67C ; =UNK04_0220C164
+ add r0, r8, #4
+ bl strstr
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, r5
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add sb, r0, #2
+ mov r6, r5
+ b _021DA580
+_021DA4FC:
+ ldr r1, _021DA680 ; =UNK04_0220C168
+ mov r0, sb
+ bl strstr
+ movs r7, r0
+ beq _021DA598
+ ldrsb sl, [r7]
+ add r8, r7, #2
+ ldr r1, _021DA67C ; =UNK04_0220C164
+ mov r0, r8
+ strb r6, [r7]
+ bl strstr
+ movs r5, r0
+ streqb sl, [r7]
+ beq _021DA598
+ ldrsb r4, [r5]
+ mov r0, fp
+ mov r2, sb
+ strb r6, [r5]
+ add r1, sp, #8
+ mov r3, r8
+ bl MOD04_021DA68C
+ cmp r0, #1
+ strneb sl, [r7]
+ addne sp, sp, #0x14
+ strneb r4, [r5]
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, r8
+ bl strlen
+ strb sl, [r7]
+ add r0, r8, r0
+ strb r4, [r5]
+ add sb, r0, #2
+_021DA580:
+ ldrsb r0, [sb]
+ cmp r0, #0xd
+ beq _021DA598
+ ldrsb r0, [sb, #1]
+ cmp r0, #0xa
+ bne _021DA4FC
+_021DA598:
+ ldr r0, [sp]
+ add r8, r0, #4
+ ldr r0, [sp, #4]
+ cmp r8, r0
+ bhs _021DA65C
+ mov r5, #0
+_021DA5B0:
+ ldr r1, _021DA684 ; =UNK04_0220C16C
+ mov r0, r8
+ bl strstr
+ movs sl, r0
+ beq _021DA65C
+ ldrsb r7, [sl]
+ add sb, sl, #1
+ ldr r1, _021DA688 ; =UNK04_0220C170
+ mov r0, sb
+ strb r5, [sl]
+ bl strstr
+ movs r6, r0
+ bne _021DA5F4
+ ldr r1, _021DA67C ; =UNK04_0220C164
+ mov r0, sb
+ bl strstr
+ mov r6, r0
+_021DA5F4:
+ cmp r6, #0
+ ldrnesb r4, [r6]
+ mov r0, fp
+ mov r2, r8
+ add r1, sp, #8
+ mov r3, sb
+ strneb r5, [r6]
+ bl MOD04_021DA68C
+ cmp r0, #1
+ beq _021DA634
+ strb r7, [sl]
+ cmp r6, #0
+ add sp, sp, #0x14
+ strneb r4, [r6]
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DA634:
+ mov r0, sb
+ bl strlen
+ add r0, sb, r0
+ add r8, r0, #1
+ ldr r0, [sp, #4]
+ strb r7, [sl]
+ cmp r6, #0
+ strneb r4, [r6]
+ cmp r8, r0
+ blo _021DA5B0
+_021DA65C:
+ mov r0, #1
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DA668: .word 0x00001A34
+_021DA66C: .word UNK04_0220C148
+_021DA670: .word UNK04_0220C150
+_021DA674: .word UNK04_0220C154
+_021DA678: .word UNK04_0220C160
+_021DA67C: .word UNK04_0220C164
+_021DA680: .word UNK04_0220C168
+_021DA684: .word UNK04_0220C16C
+_021DA688: .word UNK04_0220C170
+ arm_func_end MOD04_021DA3DC
+
+ arm_func_start MOD04_021DA68C
+MOD04_021DA68C: ; 0x021DA68C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r8, r1
+ ldr r4, [r8, #8]
+ ldr r1, [r8, #4]
+ add r0, r0, #0x1000
+ cmp r4, r1
+ ldr r5, [r0, #0x10]
+ ldr r4, [r0, #0x14]
+ mov r7, r2
+ mov r6, r3
+ movgt r0, #0
+ ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r0, r7
+ bl strlen
+ mov r1, r0
+ ldr r0, _021DA7D8 ; =UNK04_0220C174
+ add r1, r1, #1
+ blx r5
+ ldr r2, [r8]
+ ldr r1, [r8, #8]
+ str r0, [r2, r1, lsl #3]
+ ldr r3, [r8, #8]
+ ldr r2, [r8]
+ ldr r0, [r2, r3, lsl #3]
+ cmp r0, #0
+ beq _021DA770
+ mov r0, r6
+ bl strlen
+ mov r1, r0
+ ldr r0, _021DA7DC ; =UNK04_0220C194
+ add r1, r1, #1
+ blx r5
+ ldr r2, [r8]
+ ldr r1, [r8, #8]
+ add r1, r2, r1, lsl #3
+ str r0, [r1, #4]
+ ldr r3, [r8, #8]
+ ldr r2, [r8]
+ mov r1, r3, lsl #3
+ add r0, r2, r3, lsl #3
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021DA770
+ ldr r0, [r2, r1]
+ mov r1, r7
+ bl strcpy
+ ldr r2, [r8]
+ ldr r0, [r8, #8]
+ mov r1, r6
+ add r0, r2, r0, lsl #3
+ ldr r0, [r0, #4]
+ bl strcpy
+ ldr r1, [r8, #8]
+ mov r0, #1
+ add r1, r1, #1
+ str r1, [r8, #8]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_021DA770:
+ ldr r1, [r2, r3, lsl #3]
+ cmp r1, #0
+ beq _021DA798
+ ldr r0, _021DA7E0 ; =UNK04_0220C1B4
+ mov r2, #0
+ blx r4
+ ldr r1, [r8]
+ ldr r0, [r8, #8]
+ mov r2, #0
+ str r2, [r1, r0, lsl #3]
+_021DA798:
+ ldr r1, [r8]
+ ldr r0, [r8, #8]
+ add r0, r1, r0, lsl #3
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _021DA7D0
+ ldr r0, _021DA7E4 ; =UNK04_0220C1D0
+ mov r2, #0
+ blx r4
+ ldr r1, [r8]
+ ldr r0, [r8, #8]
+ mov r2, #0
+ add r0, r1, r0, lsl #3
+ str r2, [r0, #4]
+_021DA7D0:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DA7D8: .word UNK04_0220C174
+_021DA7DC: .word UNK04_0220C194
+_021DA7E0: .word UNK04_0220C1B4
+_021DA7E4: .word UNK04_0220C1D0
+ arm_func_end MOD04_021DA68C
+
+ arm_func_start MOD04_021DA7E8
+MOD04_021DA7E8: ; 0x021DA7E8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r1
+ mov r5, r0
+ mov r0, r6
+ mov r4, #0
+ bl strlen
+ cmp r0, #0x100
+ movhs r0, r4
+ ldmhsia sp!, {r4, r5, r6, pc}
+ ldr r0, _021DA934 ; =0x00001024
+ mov r1, r6
+ add r0, r5, r0
+ mov r2, #0x100
+ bl strncpy
+ mov r0, r6
+ bl strlen
+ ldr r1, _021DA934 ; =0x00001024
+ mov r6, r0
+ add r0, r5, r1
+ bl strlen
+ cmp r6, r0
+ movne r0, r4
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r0, _021DA934 ; =0x00001024
+ ldr r1, _021DA938 ; =UNK04_0220C1EC
+ add r0, r5, r0
+ bl strstr
+ cmp r0, #0
+ beq _021DA884
+ ldr r0, _021DA93C ; =0x0000102B
+ add r1, r5, #0x1000
+ add r0, r5, r0
+ str r0, [r1, #0x124]
+ mov r0, r4
+ str r0, [r1, #0x12c]
+ add r0, r5, #0x1100
+ mov r1, #0x50
+ strh r1, [r0, #0x30]
+ b _021DA8C0
+_021DA884:
+ ldr r0, _021DA934 ; =0x00001024
+ ldr r1, _021DA940 ; =UNK04_0220C1F4
+ add r0, r5, r0
+ bl strstr
+ cmp r0, #0
+ moveq r0, r4
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r1, r0, #8
+ add r0, r5, #0x1000
+ str r1, [r0, #0x124]
+ mov r2, #1
+ ldr r1, _021DA944 ; =0x000001BB
+ str r2, [r0, #0x12c]
+ add r0, r5, #0x1100
+ strh r1, [r0, #0x30]
+_021DA8C0:
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0x124]
+ ldr r1, _021DA948 ; =UNK04_0220C200
+ bl strstr
+ cmp r0, #0
+ movne r1, #0
+ strneb r1, [r0]
+ addne r4, r0, #1
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0x124]
+ ldr r1, _021DA94C ; =UNK04_0220C204
+ bl strstr
+ cmp r0, #0
+ addeq r0, r5, #0x1000
+ moveq r1, #0
+ streq r1, [r0, #0x128]
+ movne r1, #0
+ strneb r1, [r0]
+ addne r1, r0, #1
+ addne r0, r5, #0x1000
+ strne r1, [r0, #0x128]
+ cmp r4, #0
+ beq _021DA92C
+ mov r0, r4
+ bl atol
+ add r1, r5, #0x1100
+ strh r0, [r1, #0x30]
+_021DA92C:
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DA934: .word 0x00001024
+_021DA938: .word UNK04_0220C1EC
+_021DA93C: .word 0x0000102B
+_021DA940: .word UNK04_0220C1F4
+_021DA944: .word 0x000001BB
+_021DA948: .word UNK04_0220C200
+_021DA94C: .word UNK04_0220C204
+ arm_func_end MOD04_021DA7E8
+
+ arm_func_start MOD04_021DA950
+MOD04_021DA950: ; 0x021DA950
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ add r0, r0, #0x1000
+ mov r5, r2
+ cmp r5, #0
+ ldr r7, [r0, #0x14]
+ ldr r2, [r0, #0x10]
+ mov r6, r1
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, [r6, #0xc]
+ ldr r0, _021DAA08 ; =UNK04_0220C208
+ add r1, r1, r5
+ blx r2
+ movs r4, r0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r6]
+ ldr r2, [r6, #0xc]
+ mov r1, r4
+ bl MI_CpuCopy8
+ ldr r1, [r6]
+ ldr r0, _021DAA0C ; =UNK04_0220C218
+ mov r2, #0
+ blx r7
+ cmp r4, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r6]
+ ldr r1, [r6, #4]
+ sub r0, r4, r0
+ add r0, r1, r0
+ str r0, [r6, #4]
+ ldr r1, [r6, #0xc]
+ mov r0, #1
+ add r1, r1, r5
+ str r1, [r6, #0xc]
+ str r4, [r6]
+ ldr r1, [r6, #0xc]
+ add r1, r4, r1
+ str r1, [r6, #8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAA08: .word UNK04_0220C208
+_021DAA0C: .word UNK04_0220C218
+ arm_func_end MOD04_021DA950
+
+ arm_func_start MOD04_021DAA10
+MOD04_021DAA10: ; 0x021DAA10
+ stmdb sp!, {r4, lr}
+ mov r4, r1
+ ldr r1, [r4]
+ add r0, r0, #0x1000
+ cmp r1, #0
+ ldr r3, [r0, #0x14]
+ beq _021DAA38
+ ldr r0, _021DAA4C ; =UNK04_0220C218
+ mov r2, #0
+ blx r3
+_021DAA38:
+ mov r0, r4
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DAA4C: .word UNK04_0220C218
+ arm_func_end MOD04_021DAA10
+
+ arm_func_start MOD04_021DAA50
+MOD04_021DAA50: ; 0x021DAA50
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r2
+ add r0, r0, #0x1000
+ ldr r2, [r0, #0x10]
+ mov r4, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, _021DAABC ; =UNK04_0220C22C
+ mov r1, r5
+ blx r2
+ str r0, [r4]
+ ldr r0, [r4]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ str r0, [r4, #4]
+ str r5, [r4, #0xc]
+ ldr r2, [r4]
+ ldr r1, [r4, #0xc]
+ mov r0, #1
+ add r1, r2, r1
+ str r1, [r4, #8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DAABC: .word UNK04_0220C22C
+ arm_func_end MOD04_021DAA50
+
+ arm_func_start MOD04_021DAAC0
+MOD04_021DAAC0: ; 0x021DAAC0
+ ands r1, r0, #0x8000
+ bicne r0, r0, #0x8000
+ bx lr
+ arm_func_end MOD04_021DAAC0
+
+ arm_func_start MOD04_021DAACC
+MOD04_021DAACC: ; 0x021DAACC
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r2, _021DAB60 ; =0x000019F4
+ mov r7, r0
+ mov r6, r1
+ mov r0, r6
+ add r4, r7, r2
+ bl strlen
+ mov r5, r0
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ sub r1, r1, r0
+ cmp r5, r1
+ ble _021DAB34
+ sub r2, r5, r1
+ mov r0, r7
+ mov r1, r4
+ add r2, r2, #1
+ bl MOD04_021DA950
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ sub r1, r1, r0
+_021DAB34:
+ ldr r2, _021DAB64 ; =UNK04_0220C240
+ mov r3, r6
+ bl OS_SNPrintf
+ cmp r0, r5
+ ldreq r1, [r4, #4]
+ movne r0, #1
+ addeq r0, r1, r0
+ streq r0, [r4, #4]
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAB60: .word 0x000019F4
+_021DAB64: .word UNK04_0220C240
+ arm_func_end MOD04_021DAACC
+
+ arm_func_start MOD04_021DAB68
+MOD04_021DAB68: ; 0x021DAB68
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ add r0, sl, #0x1000
+ ldr r4, [r0, #0x9f0]
+ ldr r0, _021DAC8C ; =0x000019F4
+ cmp r4, #0
+ ldreq r6, _021DAC90 ; =UNK04_0220C244
+ mov r8, r2
+ add r5, sl, #0x1000
+ add r4, sl, r0
+ ldr r0, [r5, #0x9f0]
+ mov r7, r3
+ add fp, r0, #1
+ mov r2, #0
+ mov sb, r1
+ ldrne r6, _021DAC94 ; =UNK04_0220C248
+ mov r0, r8
+ mov r1, r7
+ mov r3, r2
+ str fp, [r5, #0x9f0]
+ bl MOD04_021DD4FC
+ mov r5, r0
+ mov r0, r6
+ bl strlen
+ mov fp, r0
+ mov r0, sb
+ bl strlen
+ sub r1, fp, #2
+ add r2, r1, r0
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ add r2, r5, r2
+ sub r1, r1, r0
+ cmp r2, r1
+ ble _021DAC28
+ sub r2, r2, r1
+ mov r0, sl
+ mov r1, r4
+ add r2, r2, #1
+ bl MOD04_021DA950
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ sub r1, r1, r0
+_021DAC28:
+ mov r2, r6
+ mov r3, sb
+ bl OS_SNPrintf
+ ldr r2, [r4, #4]
+ mov r1, r7
+ add r0, r2, r0
+ str r0, [r4, #4]
+ ldr r2, [r4, #4]
+ ldr r3, [r4, #8]
+ mov r0, r8
+ sub r3, r3, r2
+ sub r3, r3, #1
+ bl MOD04_021DD4FC
+ cmp r0, #0
+ addlt sp, sp, #4
+ movlt r0, #1
+ ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r1, [r4, #4]
+ mov r0, #0
+ add r1, r1, r5
+ str r1, [r4, #4]
+ ldr r1, [r4, #4]
+ strb r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DAC8C: .word 0x000019F4
+_021DAC90: .word UNK04_0220C244
+_021DAC94: .word UNK04_0220C248
+ arm_func_end MOD04_021DAB68
+
+ arm_func_start MOD04_021DAC98
+MOD04_021DAC98: ; 0x021DAC98
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov r6, r2
+ mov r8, r0
+ ldr r2, _021DAD7C ; =0x000019F4
+ mov r0, r6
+ mov r7, r1
+ add r5, r8, r2
+ bl strlen
+ mov r4, r0
+ ldr r0, _021DAD80 ; =UNK04_0220C250
+ bl strlen
+ mov sb, r0
+ mov r0, r7
+ bl strlen
+ sub r1, sb, #4
+ add r0, r1, r0
+ add r4, r4, r0
+ ldr r2, [r5, #8]
+ ldr r1, [r5, #4]
+ add r0, r4, #1
+ sub r1, r2, r1
+ cmp r0, r1
+ ble _021DAD1C
+ sub r2, r4, r1
+ mov r0, r8
+ mov r1, r5
+ add r2, r2, #1
+ bl MOD04_021DA950
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_021DAD1C:
+ ldr r0, [r5]
+ ldr r1, _021DAD84 ; =UNK04_0220C148
+ bl strstr
+ add r8, r0, #2
+ ldrsb sb, [r0, #2]
+ mov r0, r8
+ bl strlen
+ add r2, r0, #1
+ add r0, r8, r4
+ mov r1, r8
+ bl memmove
+ ldr r2, _021DAD80 ; =UNK04_0220C250
+ str r6, [sp]
+ mov r3, r7
+ mov r0, r8
+ add r1, r4, #1
+ bl OS_SNPrintf
+ strb sb, [r8, r0]
+ ldr r1, [r5, #4]
+ mov r0, #0
+ add r1, r1, r4
+ str r1, [r5, #4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_021DAD7C: .word 0x000019F4
+_021DAD80: .word UNK04_0220C250
+_021DAD84: .word UNK04_0220C148
+ arm_func_end MOD04_021DAC98
+
+ arm_func_start MOD04_021DAD88
+MOD04_021DAD88: ; 0x021DAD88
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ mov r7, r0
+ add r0, r7, #0x1000
+ ldr r1, [r0, #8]
+ ldr r0, _021DAE40 ; =0x000019F4
+ cmp r1, #0
+ ldreq r6, _021DAE44 ; =UNK04_0220C25C
+ add r5, r7, r0
+ add r0, r7, #0x1000
+ ldrne r6, _021DAE48 ; =UNK04_0220C2B0
+ ldr r0, [r0, #0x124]
+ bl strlen
+ mov r4, r0
+ mov r0, r6
+ bl strlen
+ add r1, r7, #0x1000
+ mov r8, r0
+ ldr r0, [r1, #0x128]
+ bl strlen
+ sub r1, r8, #4
+ add r0, r1, r0
+ add r1, r4, r0
+ ldr r0, _021DAE40 ; =0x000019F4
+ add r2, r1, #0x400
+ add r1, r7, r0
+ mov r0, r7
+ bl MOD04_021DAA50
+ cmp r0, #1
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ add r3, r7, #0x1000
+ ldr r0, [r3, #0x124]
+ mov r2, r6
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0xc]
+ ldr r3, [r3, #0x128]
+ bl OS_SNPrintf
+ ldr r1, [r5, #4]
+ add r0, r1, r0
+ str r0, [r5, #4]
+ mov r0, #0
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DAE40: .word 0x000019F4
+_021DAE44: .word UNK04_0220C25C
+_021DAE48: .word UNK04_0220C2B0
+ arm_func_end MOD04_021DAD88
+
+ arm_func_start MOD04_021DAE4C
+MOD04_021DAE4C: ; 0x021DAE4C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ add r1, r5, #0x1000
+ ldr r4, [r1, #0x14]
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _021DAF00 ; =0x00001A34
+ mov r2, #0x20
+ add r1, r5, r1
+ bl MOD04_021DA260
+ ldr r1, _021DAF04 ; =0x00001A04
+ mov r0, r5
+ add r1, r5, r1
+ bl MOD04_021DAA10
+ ldr r1, _021DAF08 ; =0x000019F4
+ mov r0, r5
+ add r1, r5, r1
+ bl MOD04_021DAA10
+ add r0, r5, #0x1000
+ ldr r1, [r0, #0x9c8]
+ cmp r1, #0
+ beq _021DAEC0
+ ldr r0, _021DAF0C ; =UNK04_0220C2D0
+ mov r2, #0
+ blx r4
+ add r0, r5, #0x1000
+ mov r1, #0
+ str r1, [r0, #0x9c8]
+_021DAEC0:
+ add r0, r5, #0x1000
+ ldr r1, [r0, #0x9cc]
+ cmp r1, #0
+ beq _021DAEE8
+ ldr r0, _021DAF10 ; =UNK04_0220C2E8
+ mov r2, #0
+ blx r4
+ add r0, r5, #0x1000
+ mov r1, #0
+ str r1, [r0, #0x9cc]
+_021DAEE8:
+ ldr r2, _021DAF14 ; =0x00001C10
+ mov r0, r5
+ mov r1, #0
+ bl MI_CpuFill8
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DAF00: .word 0x00001A34
+_021DAF04: .word 0x00001A04
+_021DAF08: .word 0x000019F4
+_021DAF0C: .word UNK04_0220C2D0
+_021DAF10: .word UNK04_0220C2E8
+_021DAF14: .word 0x00001C10
+ arm_func_end MOD04_021DAE4C
+
+ arm_func_start MOD04_021DAF18
+MOD04_021DAF18: ; 0x021DAF18
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov sl, r0
+ add r0, sl, #0x1000
+ ldr fp, [r0, #0x1c]
+ ldr r0, _021DB224 ; =0x00001134
+ ldr r1, _021DB228 ; =0x00001198
+ ldr r2, _021DB22C ; =0x00001A04
+ add r8, sl, r0
+ cmp fp, #0
+ mov r0, sl
+ add r6, sl, r1
+ add r7, sl, r2
+ mov r5, #0
+ ldrle fp, _021DB230 ; =0x0000EA60
+ bl MOD04_021DB35C
+ mov r0, sl
+ bl MOD04_021DB348
+ movs r4, r0
+ addeq r0, sl, #0x1000
+ moveq r1, #2
+ streq r1, [r0, #0x20]
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl CPS_SocUse
+ add r0, sl, #0x1000
+ ldr r0, [r0, #0x12c]
+ cmp r0, #1
+ bne _021DAFC8
+ mov r0, r6
+ mov r1, #0
+ mov r2, #0x830
+ bl MI_CpuFill8
+ ldr r1, _021DB234 ; =MOD04_021DAAC0
+ add r0, sl, #0x1000
+ str r1, [r6, #0x810]
+ ldr r1, [r0, #0x124]
+ ldr r0, _021DB238 ; =UNK04_0220C0E4
+ str r1, [r6, #0x800]
+ mov r1, #0xb
+ str r6, [r8, #0xc]
+ bl CPS_SetRootCa
+ mov r0, #1
+ bl CPS_SetSsl
+_021DAFC8:
+ add r0, sl, #0x1100
+ ldrh r1, [r0, #0x30]
+ mov r2, r4
+ mov r0, #0
+ bl CPS_SocPingMode
+ bl CPS_TcpConnect
+ cmp r0, #0
+ beq _021DB004
+ add r0, sl, #0x1000
+ mov r1, #3
+ str r1, [r0, #0x20]
+ bl CPS_SocRelease
+ bl CPS_SocUnRegister
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DB004:
+ add r0, sl, #0x1000
+ ldr r4, [r0, #0x9f4]
+ mov r0, r4
+ bl strlen
+ mov r1, r0
+ mov r0, r4
+ bl CPS_SocWrite
+ cmp r0, #0
+ str r0, [sp, #8]
+ addle r0, sl, #0x1000
+ movle r1, #5
+ strle r1, [r0, #0x20]
+ ble _021DB20C
+ bl CPS_SocGetChar
+ mov r0, sl
+ bl MOD04_021DB3B8
+ cmp r0, #0
+ addeq r0, sl, #0x1000
+ moveq r1, #7
+ streq r1, [r0, #0x20]
+ beq _021DB20C
+ ldr r0, [r7]
+ str r0, [r7, #4]
+ ldr r1, [r7]
+ ldr r0, [r7, #0xc]
+ add r0, r1, r0
+ str r0, [r7, #8]
+ bl OS_GetTick
+ mov r6, r0
+ mov r0, fp, asr #0x1f
+ mov r8, r1
+ str r0, [sp, #4]
+ mov r4, #0
+_021DB088:
+ ldr r0, _021DB23C ; =CPSMyIp
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq r0, sl, #0x1000
+ moveq r1, #5
+ streq r1, [r0, #0x20]
+ beq _021DB20C
+ bl CPS_SocGetLength
+ str r0, [sp, #8]
+ cmp r0, #0
+ blt _021DB1E8
+ cmp r0, #0
+ ble _021DB16C
+ bl OS_GetTick
+ mov r6, r0
+ add r0, sp, #8
+ mov r8, r1
+ bl CPS_SocRead
+ cmp r0, #0
+ beq _021DB1E8
+ ldr r2, [r7, #8]
+ ldr r1, [r7, #4]
+ sub r2, r2, #1
+ ldr sb, [sp, #8]
+ sub r2, r2, r1
+ cmp sb, r2
+ movge sb, r2
+ mov r2, sb
+ bl MI_CpuCopy8
+ ldr r0, [r7, #4]
+ cmp r5, #1
+ add r0, r0, sb
+ str r0, [r7, #4]
+ ldr r0, [r7, #4]
+ strb r4, [r0]
+ bne _021DB144
+ ldr r0, _021DB240 ; =0x00001A14
+ add r0, sl, r0
+ bl OS_LockMutex
+ add r1, sl, #0x1000
+ ldr r2, [r1, #0xa30]
+ ldr r0, _021DB240 ; =0x00001A14
+ add r2, r2, sb
+ add r0, sl, r0
+ str r2, [r1, #0xa30]
+ bl OS_UnlockMutex
+ b _021DB150
+_021DB144:
+ mov r0, sl
+ bl MOD04_021DB248
+ mov r5, r0
+_021DB150:
+ ldr r0, [sp, #8]
+ cmp r0, sb
+ bls _021DB164
+ bl CPS_SocConsume
+ b _021DB1E8
+_021DB164:
+ mov r0, sb
+ bl CPS_SocConsume
+_021DB16C:
+ add r0, sl, #0x1000
+ ldr r1, [r0, #0xa2c]
+ cmp r1, #0
+ blt _021DB188
+ ldr r0, [r0, #0xa30]
+ cmp r0, r1
+ bge _021DB1E8
+_021DB188:
+ bl OS_GetTick
+ subs r2, r0, r6
+ sbc r0, r1, r8
+ mov r1, r0, lsl #6
+ orr r1, r1, r2, lsr #26
+ mov r0, r2, lsl #6
+ ldr r2, _021DB244 ; =0x000082EA
+ mov r3, r4
+ bl _ll_udiv
+ ldr r2, [sp, #4]
+ cmp r1, r2
+ cmpeq r0, fp
+ addhi r0, sl, #0x1000
+ movhi r1, #6
+ strhi r1, [r0, #0x20]
+ bhi _021DB20C
+ mov r0, sl
+ bl MOD04_021DB3B8
+ cmp r0, #0
+ bne _021DB088
+ add r0, sl, #0x1000
+ mov r1, #7
+ str r1, [r0, #0x20]
+ b _021DB20C
+_021DB1E8:
+ bl CPS_TcpShutdown
+ bl CPS_TcpClose
+ bl CPS_SocRelease
+ bl CPS_SocUnRegister
+ add r0, sl, #0x1000
+ mov r1, #8
+ str r1, [r0, #0x20]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DB20C:
+ bl CPS_TcpShutdown
+ bl CPS_TcpClose
+ bl CPS_SocRelease
+ bl CPS_SocUnRegister
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DB224: .word 0x00001134
+_021DB228: .word 0x00001198
+_021DB22C: .word 0x00001A04
+_021DB230: .word 0x0000EA60
+_021DB234: .word MOD04_021DAAC0
+_021DB238: .word UNK04_0220C0E4
+_021DB23C: .word CPSMyIp
+_021DB240: .word 0x00001A14
+_021DB244: .word 0x000082EA
+ arm_func_end MOD04_021DAF18
+
+ arm_func_start MOD04_021DB248
+MOD04_021DB248: ; 0x021DB248
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ add r0, r5, #0x1000
+ ldr r6, [r0, #0xa04]
+ ldr r2, _021DB334 ; =0x00001A04
+ ldr r1, _021DB338 ; =UNK04_0220C148
+ mov r0, r6
+ add r4, r5, r2
+ bl strstr
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, _021DB338 ; =UNK04_0220C148
+ mov r0, r6
+ bl strstr
+ ldr r1, _021DB33C ; =0x00001A14
+ add r6, r0, #4
+ add r0, r5, r1
+ bl OS_LockMutex
+ ldr r0, [r4, #4]
+ ldr r1, _021DB33C ; =0x00001A14
+ sub r2, r0, r6
+ add r0, r5, #0x1000
+ str r2, [r0, #0xa30]
+ add r0, r5, r1
+ bl OS_UnlockMutex
+ ldr r0, [r4]
+ ldr r1, _021DB340 ; =UNK04_0220C300
+ bl strstr
+ movs r4, r0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DB340 ; =UNK04_0220C300
+ bl strlen
+ add r7, r4, r0
+ ldr r1, _021DB344 ; =UNK04_0220C164
+ mov r0, r7
+ bl strstr
+ mov r4, r0
+ ldr r0, _021DB33C ; =0x00001A14
+ ldrsb r6, [r4]
+ mov r1, #0
+ add r0, r5, r0
+ strb r1, [r4]
+ bl OS_LockMutex
+ mov r0, r7
+ bl atol
+ add r1, r5, #0x1000
+ ldr r2, _021DB33C ; =0x00001A14
+ str r0, [r1, #0xa2c]
+ add r0, r5, r2
+ bl OS_UnlockMutex
+ strb r6, [r4]
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB334: .word 0x00001A04
+_021DB338: .word UNK04_0220C148
+_021DB33C: .word 0x00001A14
+_021DB340: .word UNK04_0220C300
+_021DB344: .word UNK04_0220C164
+ arm_func_end MOD04_021DB248
+
+ arm_func_start MOD04_021DB348
+MOD04_021DB348: ; 0x021DB348
+ ldr ip, _021DB358 ; =CPS_Resolve
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x124]
+ bx ip
+ .align 2, 0
+_021DB358: .word CPS_Resolve
+ arm_func_end MOD04_021DB348
+
+ arm_func_start MOD04_021DB35C
+MOD04_021DB35C: ; 0x021DB35C
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DB3AC ; =0x00001134
+ mov r4, r0
+ add r0, r4, r1
+ mov r1, #0
+ mov r2, #0x64
+ bl MI_CpuFill8
+ ldr r0, _021DB3B0 ; =0x00000B68
+ add r1, r4, #0x1000
+ str r0, [r1, #0x170]
+ ldr r3, [r1, #0x9c8]
+ ldr r0, _021DB3AC ; =0x00001134
+ ldr r2, _021DB3B4 ; =0x000005EA
+ str r3, [r1, #0x174]
+ str r2, [r1, #0x17c]
+ ldr r2, [r1, #0x9cc]
+ add r0, r4, r0
+ str r2, [r1, #0x180]
+ bl CPS_SocRegister
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB3AC: .word 0x00001134
+_021DB3B0: .word 0x00000B68
+_021DB3B4: .word 0x000005EA
+ arm_func_end MOD04_021DB35C
+
+ arm_func_start MOD04_021DB3B8
+MOD04_021DB3B8: ; 0x021DB3B8
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0x12c]
+ cmp r0, #1
+ bne _021DB3EC
+ ldr r0, _021DB438 ; =0x000019D0
+ add r0, r4, r0
+ bl OS_GetLowEntropyData
+ ldr r0, _021DB438 ; =0x000019D0
+ mov r1, #0x20
+ add r0, r4, r0
+ bl CPS_SslAddRandomSeed
+_021DB3EC:
+ ldr r0, _021DB43C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_LockMutex
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0xc0c]
+ cmp r0, #1
+ bne _021DB41C
+ ldr r0, _021DB43C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_UnlockMutex
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DB41C:
+ ldr r0, _021DB43C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_UnlockMutex
+ mov r0, #0xa
+ bl OS_Sleep
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB438: .word 0x000019D0
+_021DB43C: .word 0x00001BF4
+ arm_func_end MOD04_021DB3B8
+
+ arm_func_start MOD04_021DB440
+MOD04_021DB440: ; 0x021DB440
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ add r0, r4, #0x1000
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021DB49C ; =0x00001BF4
+ add r0, r4, r0
+ bl OS_LockMutex
+ ldr r0, _021DB49C ; =0x00001BF4
+ add r1, r4, #0x1000
+ mov r2, #1
+ add r0, r4, r0
+ str r2, [r1, #0xc0c]
+ bl OS_UnlockMutex
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _021DB4A0 ; =0x00001B34
+ add r0, r4, r0
+ bl OS_JoinThread
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB49C: .word 0x00001BF4
+_021DB4A0: .word 0x00001B34
+ arm_func_end MOD04_021DB440
+
+ arm_func_start MOD04_021DB4A4
+MOD04_021DB4A4: ; 0x021DB4A4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ ldr r3, _021DB55C ; =0x00001BF4
+ mov r5, r0
+ add r2, r5, #0x1000
+ mov ip, #0
+ add r0, r5, r3
+ mov r4, r1
+ str ip, [r2, #0xc0c]
+ bl OS_InitMutex
+ ldr r0, _021DB560 ; =0x00001A14
+ add r0, r5, r0
+ bl OS_InitMutex
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0x18]
+ cmp r0, #1
+ ldreq r0, _021DB564 ; =UNK04_02210480
+ moveq r1, #1
+ streq r1, [r0]
+ ldrne r0, _021DB564 ; =UNK04_02210480
+ movne r1, #0
+ strne r1, [r0]
+ add r0, r5, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DB524
+ ldr r0, _021DB568 ; =0x00001B34
+ add r0, r5, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, pc}
+_021DB524:
+ ldr r0, _021DB568 ; =0x00001B34
+ mov r1, #0x1000
+ str r1, [sp]
+ ldr r1, _021DB56C ; =MOD04_021DAF18
+ mov r2, r5
+ add r0, r5, r0
+ add r3, r5, #0x1000
+ str r4, [sp, #4]
+ bl OS_CreateThread
+ ldr r0, _021DB568 ; =0x00001B34
+ add r0, r5, r0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DB55C: .word 0x00001BF4
+_021DB560: .word 0x00001A14
+_021DB564: .word UNK04_02210480
+_021DB568: .word 0x00001B34
+_021DB56C: .word MOD04_021DAF18
+ arm_func_end MOD04_021DB4A4
+
+ arm_func_start MOD04_021DB570
+MOD04_021DB570: ; 0x021DB570
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _021DB5F4 ; =UNK04_0220C314
+ ldr r2, _021DB5F8 ; =UNK04_0220C320
+ mov r4, r0
+ bl MOD04_021DAC98
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, pc}
+ add r0, r4, #0x1000
+ ldr r0, [r0, #0x9f4]
+ ldr r1, _021DB5FC ; =UNK04_0220C148
+ bl strstr
+ add r0, r0, #4
+ bl strlen
+ movs r3, r0
+ beq _021DB5E8
+ ldr r2, _021DB600 ; =UNK04_0220C328
+ add r0, sp, #0
+ mov r1, #7
+ bl OS_SNPrintf
+ ldr r1, _021DB604 ; =UNK04_0220C32C
+ add r2, sp, #0
+ mov r0, r4
+ bl MOD04_021DAC98
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, pc}
+_021DB5E8:
+ mov r0, #0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB5F4: .word UNK04_0220C314
+_021DB5F8: .word UNK04_0220C320
+_021DB5FC: .word UNK04_0220C148
+_021DB600: .word UNK04_0220C328
+_021DB604: .word UNK04_0220C32C
+ arm_func_end MOD04_021DB570
+
+ arm_func_start MOD04_021DB608
+MOD04_021DB608: ; 0x021DB608
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r1
+ ldr r2, _021DB714 ; =0x00001C10
+ mov r6, r0
+ ldr r4, [r5, #0xc]
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021DB718 ; =0x00001004
+ add r0, r6, #0x1000
+ mvn r2, #0
+ str r2, [r0, #0xa2c]
+ mov lr, r5
+ str r2, [r0, #0xa30]
+ add ip, r6, r1
+ ldmia lr!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ ldmia lr, {r0, r1, r2}
+ stmia ip, {r0, r1, r2}
+ ldr r0, _021DB71C ; =UNK04_0220C33C
+ ldr r1, _021DB720 ; =0x00000B68
+ blx r4
+ add r1, r6, #0x1000
+ str r0, [r1, #0x9c8]
+ ldr r0, [r1, #0x9c8]
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r1, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _021DB724 ; =UNK04_0220C354
+ ldr r1, _021DB728 ; =0x000005EA
+ blx r4
+ add r2, r6, #0x1000
+ str r0, [r2, #0x9cc]
+ ldr r0, [r2, #0x9cc]
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r2, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, _021DB72C ; =0x00001A04
+ ldr r2, [r2, #0xc]
+ mov r0, r6
+ add r1, r6, r1
+ bl MOD04_021DAA50
+ cmp r0, #0
+ addeq r1, r6, #0x1000
+ moveq r0, #1
+ streq r0, [r1, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, [r5]
+ mov r0, r6
+ bl MOD04_021DA7E8
+ cmp r0, #0
+ addeq r1, r6, #0x1000
+ moveq r0, #1
+ streq r0, [r1, #0x20]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ bl MOD04_021DAD88
+ add r1, r6, #0x1000
+ str r0, [r1, #0x20]
+ ldr r0, [r1, #0x20]
+ cmp r0, #0
+ moveq r0, #0xff
+ streqb r0, [r1]
+ add r0, r6, #0x1000
+ ldr r0, [r0, #0x20]
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DB714: .word 0x00001C10
+_021DB718: .word 0x00001004
+_021DB71C: .word UNK04_0220C33C
+_021DB720: .word 0x00000B68
+_021DB724: .word UNK04_0220C354
+_021DB728: .word 0x000005EA
+_021DB72C: .word 0x00001A04
+ arm_func_end MOD04_021DB608
+
+ .section .data
+
+ .global UNK04_0220C0E4 ; I really don't know about this table, I'm gonna assume it's extern for now because it's weird
+UNK04_0220C0E4: ; 0x0220C0E4
+ .word UNK04_0220CF18, UNK04_0220CDEC, UNK04_0220D0CC, UNK04_0220D1A8
+ .word UNK04_0220C684, UNK04_0220C920, UNK04_0220CA08, UNK04_0220C7D0
+ .word UNK04_0220CCD4, UNK04_0220CBB4, UNK04_0220CACC
+
+ .global UNK04_0220C110
+UNK04_0220C110: ; 0x0220C110
+ .asciz "FREE array_entry[i].label"
+
+ .balign 4, 0
+ .global UNK04_0220C12C
+UNK04_0220C12C: ; 0x0220C12C
+ .asciz "FREE array_entry[i].value"
+
+ .balign 4, 0
+ .global UNK04_0220C148
+UNK04_0220C148: ; 0x0220C148
+ .asciz "\r\n\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C150
+UNK04_0220C150: ; 0x0220C150
+ .asciz " "
+
+ .balign 4, 0
+ .global UNK04_0220C154
+UNK04_0220C154: ; 0x0220C154
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220C160
+UNK04_0220C160: ; 0x0220C160
+ .asciz "200"
+
+ .balign 4, 0
+ .global UNK04_0220C164
+UNK04_0220C164: ; 0x0220C164
+ .asciz "\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C168
+UNK04_0220C168: ; 0x0220C168
+ .asciz ": "
+
+ .balign 4, 0
+ .global UNK04_0220C16C
+UNK04_0220C16C: ; 0x0220C16C
+ .asciz "="
+
+ .balign 4, 0
+ .global UNK04_0220C170
+UNK04_0220C170: ; 0x0220C170
+ .asciz "&"
+
+ .balign 4, 0
+ .global UNK04_0220C174
+UNK04_0220C174: ; 0x0220C174
+ .asciz "ALLOC result->entry[i].label"
+
+ .balign 4, 0
+ .global UNK04_0220C194
+UNK04_0220C194: ; 0x0220C194
+ .asciz "ALLOC result->entry[i].value"
+
+ .balign 4, 0
+ .global UNK04_0220C1B4
+UNK04_0220C1B4: ; 0x0220C1B4
+ .asciz "FREE result->entry[i].label"
+
+ .balign 4, 0
+ .global UNK04_0220C1D0
+UNK04_0220C1D0: ; 0x0220C1D0
+ .asciz "FREE result->entry[i].value"
+
+ .balign 4, 0
+ .global UNK04_0220C1EC
+UNK04_0220C1EC: ; 0x0220C1EC
+ .asciz "http://"
+
+ .balign 4, 0
+ .global UNK04_0220C1F4
+UNK04_0220C1F4: ; 0x0220C1F4
+ .asciz "https://"
+
+ .balign 4, 0
+ .global UNK04_0220C200
+UNK04_0220C200: ; 0x0220C200
+ .asciz ":"
+
+ .balign 4, 0
+ .global UNK04_0220C204
+UNK04_0220C204: ; 0x0220C204
+ .asciz "/"
+
+ .balign 4, 0
+ .global UNK04_0220C208
+UNK04_0220C208: ; 0x0220C208
+ .asciz "ALLOC newptr"
+
+ .balign 4, 0
+ .global UNK04_0220C218
+UNK04_0220C218: ; 0x0220C218
+ .asciz "FREE buf->buffer"
+
+ .balign 4, 0
+ .global UNK04_0220C22C
+UNK04_0220C22C: ; 0x0220C22C
+ .asciz "ALLOC buf->buffer"
+
+ .balign 4, 0
+ .global UNK04_0220C240
+UNK04_0220C240: ; 0x0220C240
+ .asciz "%s"
+
+ .balign 4, 0
+ .global UNK04_0220C244
+UNK04_0220C244: ; 0x0220C244
+ .asciz "%s="
+
+ .balign 4, 0
+ .global UNK04_0220C248
+UNK04_0220C248: ; 0x0220C248
+ .asciz "&%s="
+
+ .balign 4, 0
+ .global UNK04_0220C250
+UNK04_0220C250: ; 0x0220C250
+ .asciz "%s: %s\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C25C
+UNK04_0220C25C: ; 0x0220C25C
+ .ascii "POST /%s HTTP/1.0\r\n"
+ .ascii "Content-type: application/x-www-form-urlencoded\r\n"
+ .asciz "Host: %s\r\n\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C2B0
+UNK04_0220C2B0: ; 0x0220C2B0
+ .ascii "GET /%s HTTP/1.0\r\n"
+ .asciz "Host: %s\r\n\r\n"
+
+ .balign 4, 0
+ .global UNK04_0220C2D0
+UNK04_0220C2D0: ; 0x0220C2D0
+ .asciz "FREE http->lowrecvbuf"
+
+ .balign 4, 0
+ .global UNK04_0220C2E8
+UNK04_0220C2E8: ; 0x0220C2E8
+ .asciz "FREE http->lowsendbuf"
+
+ .balign 4, 0
+ .global UNK04_0220C300
+UNK04_0220C300: ; 0x0220C300
+ .asciz "Content-Length: "
+
+ .balign 4, 0
+ .global UNK04_0220C314
+UNK04_0220C314: ; 0x0220C314
+ .asciz "Connection"
+
+ .balign 4, 0
+ .global UNK04_0220C320
+UNK04_0220C320: ; 0x0220C320
+ .asciz "close"
+
+ .balign 4, 0
+ .global UNK04_0220C328
+UNK04_0220C328: ; 0x0220C328
+ .asciz "%d"
+
+ .balign 4, 0
+ .global UNK04_0220C32C
+UNK04_0220C32C: ; 0x0220C32C
+ .asciz "Content-Length"
+
+ .balign 4, 0
+ .global UNK04_0220C33C
+UNK04_0220C33C: ; 0x0220C33C
+ .asciz "ALLOC http->lowrecvbuf"
+
+ .balign 4, 0
+ .global UNK04_0220C354
+UNK04_0220C354: ; 0x0220C354
+ .asciz "ALLOC http->lowsendbuf"
+
+ .balign 4, 0
diff --git a/arm9/modules/04/asm/mod04_021DB730.s b/arm9/modules/04/asm/mod04_021DB730.s
new file mode 100644
index 00000000..c506ed71
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DB730.s
@@ -0,0 +1,1512 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DB730
+MOD04_021DB730: ; 0x021DB730
+ stmdb sp!, {r4, lr}
+ ldr r2, _021DB770 ; =UNK04_02210484
+ ldr r1, _021DB774 ; =0x000011DC
+ ldr r2, [r2]
+ mov r4, r0
+ add r0, r2, r1
+ bl OS_LockMutex
+ ldr r2, _021DB770 ; =UNK04_02210484
+ ldr r1, _021DB774 ; =0x000011DC
+ ldr r0, [r2]
+ add r0, r0, #0x1000
+ str r4, [r0]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl OS_UnlockMutex
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DB770: .word UNK04_02210484
+_021DB774: .word 0x000011DC
+ arm_func_end MOD04_021DB730
+
+ arm_func_start MOD04_021DB778
+MOD04_021DB778: ; 0x021DB778
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x2d4
+ ldr r5, _021DC670 ; =UNK04_02210484
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r7, [sp]
+ add r0, r0, #0x1000
+ ldr sb, [r0, #0x108]
+ ldr r8, [r0, #0x10c]
+ mov r0, r7
+ str r0, [sp, #8]
+ str r0, [sp, #0x1c]
+ mvn r0, #2
+ str r0, [sp, #0x20]
+ mov r0, r7
+ str r0, [sp, #0x24]
+ mvn r0, #3
+ str r0, [sp, #0x28]
+ mov r0, r7
+ str r0, [sp, #0x2c]
+ mov r0, #0x1000
+ str r0, [sp, #0x14]
+ mov r0, #5
+ str r0, [sp, #0x30]
+ mov r0, r7
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ str r0, [sp, #0x3c]
+ mov r0, #4
+ str r0, [sp, #0x40]
+ mov r0, r7
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x54]
+ mvn r0, #4
+ str r0, [sp, #0x5c]
+ mov r0, r7
+ str r0, [sp, #0x60]
+ mvn r0, #1
+ ldr r4, _021DC674 ; =UNK04_02210490
+ mov r6, #1
+ str r0, [sp, #0x18]
+_021DB830:
+ ldr r0, _021DC678 ; =UNK04_02210494
+ ldr r1, [sp, #0x14]
+ str r6, [r0, #4]
+ str r1, [r0, #8]
+ ldr r1, _021DC67C ; =0x00004E20
+ str sb, [r0, #0xc]
+ str r1, [r0, #0x18]
+ str r8, [r0, #0x10]
+ ldr r0, _021DC680 ; =UNK04_0220C36C
+ ldr r1, [r5]
+ ldr r2, [r0]
+ ldr r0, _021DC678 ; =UNK04_02210494
+ add r1, r1, #0x1000
+ str r2, [r0]
+ ldr r0, [sp, #0x18]
+ str r0, [r1, #4]
+ ldr r0, [r4]
+ ldr r1, _021DC678 ; =UNK04_02210494
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DB89C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DB89C:
+ ldr r0, [r4]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DB8C4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DB8C4:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ sub r1, r0, #1
+ ldr r0, [r4]
+ bl MOD04_021DB4A4
+ ldr r1, [r4]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DB8FC
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DB8FC:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DB91C
+ cmp r1, #8
+ beq _021DB948
+ b _021DB930
+_021DB91C:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DB930:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DB948:
+ ldr r1, [sp, #0x1c]
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021DB970
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DB970:
+ ldr r0, [r4]
+ ldr r1, _021DC68C ; =UNK04_0220C418
+ bl MOD04_021DA388
+ bl atol
+ mov sl, r0
+ ldr r0, _021DC690 ; =errno
+ ldr r0, [r0]
+ cmp r0, #0x22
+ bne _021DB9A0
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DB9A0:
+ cmp sl, #0xc8
+ beq _021DBCB4
+ ldr r0, _021DC694 ; =0x0000012E
+ cmp sl, r0
+ bne _021DBC9C
+ ldr r0, _021DC698 ; =UNK04_0221048C
+ str r6, [r0]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x118]
+ cmp r1, #0
+ beq _021DBC0C
+ ldr r1, _021DC674 ; =UNK04_02210490
+ mvn r2, #5
+ str r2, [r0, #4]
+ ldr r0, [r1]
+ bl MOD04_021DAE4C
+ ldr r2, _021DC678 ; =UNK04_02210494
+ ldr r0, _021DC69C ; =UNK04_0220BEB4
+ ldr r3, _021DC67C ; =0x00004E20
+ ldr r0, [r0]
+ mov r5, #0
+ mov r4, #0x200
+ ldr r1, _021DC6A0 ; =UNK04_0220C424
+ str r0, [r2]
+ str r5, [r2, #4]
+ str r4, [r2, #8]
+ str sb, [r2, #0xc]
+ str r8, [r2, #0x10]
+ str r3, [r2, #0x18]
+ bl strcmp
+ cmp r0, #0
+ ldrne r0, _021DC678 ; =UNK04_02210494
+ movne r1, #1
+ strne r1, [r0, #0x14]
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r1, _021DC678 ; =UNK04_02210494
+ ldr r0, [r0]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DBA5C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBA5C:
+ add r0, sp, #0x240
+ bl MOD04_021DA238
+ cmp r0, #0
+ beq _021DBA88
+ ldr r0, _021DC674 ; =UNK04_02210490
+ add r1, sp, #0x240
+ ldr r0, [r0]
+ mov r2, #1
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ bne _021DBAA0
+_021DBA88:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBAA0:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r1, _021DC6A4 ; =UNK04_0220C444
+ ldr r0, [r0]
+ ldr r2, _021DC6A8 ; =UNK04_0220C44C
+ mov r3, #7
+ bl MOD04_021DAB68
+ cmp r0, #0
+ bne _021DBAF8
+ ldr r0, _021DC670 ; =UNK04_02210484
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r4, [r0, #0x118]
+ mov r0, r4
+ bl strlen
+ ldr r1, _021DC674 ; =UNK04_02210490
+ mov r3, r0
+ ldr r0, [r1]
+ ldr r1, _021DC6AC ; =UNK04_0220C454
+ mov r2, r4
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021DBB10
+_021DBAF8:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBB10:
+ ldr r1, _021DC670 ; =UNK04_02210484
+ ldr r0, _021DC6B0 ; =UNK04_0220C464
+ ldr r1, [r1]
+ mov r2, #0
+ add r1, r1, #0x1000
+ ldr r1, [r1, #0x118]
+ blx r8
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r0, [r0]
+ ldr r1, _021DC674 ; =UNK04_02210490
+ add r0, r0, #0x1000
+ str r2, [r0, #0x118]
+ ldr r0, [r1]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DBB6C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBB6C:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ ldr r2, _021DC674 ; =UNK04_02210490
+ sub r1, r0, #1
+ ldr r0, [r2]
+ bl MOD04_021DB4A4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DBBAC
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DBBAC:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DBBD0
+ cmp r1, #8
+ beq _021DBBFC
+ b _021DBBE4
+_021DBBD0:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DBBE4:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DBBFC:
+ bl MOD04_021DAE4C
+ mov r0, #7
+ bl MOD04_021DB730
+ b _021DC614
+_021DBC0C:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr fp, [r1, #0xa04]
+ cmp fp, #0
+ bne _021DBC30
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DBC30:
+ mov r0, fp
+ bl strlen
+ add r1, r0, #1
+ ldr r0, _021DC6B4 ; =UNK04_0220C394
+ blx sb
+ ldr r1, [r5]
+ add r1, r1, #0x1000
+ str r0, [r1, #0x114]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x114]
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ bne _021DBC80
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DBC80:
+ mov r0, fp
+ bl strlen
+ mov r2, r0
+ ldr r0, [sp, #0xc]
+ mov r1, fp
+ bl strncpy
+ b _021DBCB4
+_021DBC9C:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #0xa
+ bl MOD04_021DB730
+ b _021DC614
+_021DBCB4:
+ ldr r0, [r4]
+ bl MOD04_021DAE4C
+ add r0, sp, #0x68
+ bl DWCi_BM_GetWiFiInfo
+ ldr r2, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ mov r0, #0
+ cmp r1, r0
+ cmpeq r2, r0
+ bne _021DBDEC
+ ldr r1, [r5]
+ ldr r0, _021DC6B8 ; =UNK04_022104B0
+ add r2, r1, #0x1000
+ ldr r1, [sp, #0x20]
+ str r1, [r2, #4]
+ ldr r2, [sp, #0x24]
+ mov r1, r0
+ strh r2, [r1]
+ strb r2, [r1, #0x34]
+ ldr r2, [r5]
+ ldr r1, [r4]
+ add r3, r2, #0x1000
+ ldr fp, [r3, #0x108]
+ mov r2, r0
+ str fp, [r2, #0x40]
+ ldr r3, [r3, #0x10c]
+ str r3, [r2, #0x44]
+ bl MOD04_021D9ACC
+ cmp r0, #0
+ beq _021DBD38
+ mov r0, #5
+ bl MOD04_021DB730
+ b _021DC614
+_021DBD38:
+ bl MOD04_021D98DC
+ bl MOD04_021D988C
+ cmp r0, #0x15
+ beq _021DBDE8
+ bl MOD04_021D988C
+ cmp r0, #9
+ bne _021DBD6C
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+ b _021DBDD8
+_021DBD6C:
+ add r0, sp, #0x7c
+ bl MOD04_021D97F8
+ ldr r0, _021DC6BC ; =UNK04_02210488
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DBDC4
+ ldr r1, [sp, #0x7c]
+ ldr r0, _021DC6C0 ; =0xFFFFA4FA
+ cmp r1, r0
+ beq _021DBDA0
+ bl MOD04_021D988C
+ cmp r0, #0xb
+ bne _021DBDC4
+_021DBDA0:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+ bl MOD04_021D991C
+ mov r0, #0xb
+ bl MOD04_021DB730
+ b _021DC614
+_021DBDC4:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ ldr r1, [sp, #0x7c]
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DBDD8:
+ bl MOD04_021D991C
+ mov r0, #6
+ bl MOD04_021DB730
+ b _021DC614
+_021DBDE8:
+ bl MOD04_021D991C
+_021DBDEC:
+ cmp sl, #0xc8
+ bne _021DBE14
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DBE14:
+ ldr r0, [r5]
+ ldr r1, _021DC6A0 ; =UNK04_0220C424
+ add r2, r0, #0x1000
+ ldr r0, [sp, #0x28]
+ str r0, [r2, #4]
+ ldr r0, _021DC678 ; =UNK04_02210494
+ ldr r2, [sp, #0x2c]
+ str sb, [r0, #0xc]
+ str r2, [r0, #4]
+ ldr r2, [sp, #0x14]
+ str r8, [r0, #0x10]
+ str r2, [r0, #8]
+ ldr r2, _021DC6C4 ; =0x00009C40
+ str r2, [r0, #0x18]
+ ldr r0, _021DC69C ; =UNK04_0220BEB4
+ ldr r2, _021DC678 ; =UNK04_02210494
+ ldr r0, [r0]
+ str r0, [r2]
+ bl strcmp
+ cmp r0, #0
+ ldrne r0, _021DC678 ; =UNK04_02210494
+ ldr r1, _021DC678 ; =UNK04_02210494
+ strne r6, [r0, #0x14]
+ ldr r0, [r4]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DBE98
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBE98:
+ add r0, sp, #0x240
+ bl MOD04_021DA238
+ cmp r0, #0
+ beq _021DBEC0
+ ldr r0, [r4]
+ add r1, sp, #0x240
+ mov r2, r6
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ bne _021DBED8
+_021DBEC0:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBED8:
+ ldr r0, [r4]
+ ldr r1, _021DC6A4 ; =UNK04_0220C444
+ ldr r2, _021DC6C8 ; =UNK04_0220C484
+ ldr r3, [sp, #0x30]
+ bl MOD04_021DAB68
+ cmp r0, #0
+ bne _021DBF24
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr sl, [r0, #0x114]
+ mov r0, sl
+ bl strlen
+ mov r3, r0
+ ldr r0, [r4]
+ ldr r1, _021DC6CC ; =UNK04_0220C48C
+ mov r2, sl
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021DBF3C
+_021DBF24:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DBF3C:
+ ldr r1, [r5]
+ ldr r0, _021DC6D0 ; =UNK04_0220C3B0
+ add r1, r1, #0x1000
+ ldr r2, [sp, #0x34]
+ ldr r1, [r1, #0x114]
+ blx r8
+ ldr r0, [r5]
+ add r1, r0, #0x1000
+ ldr r0, [sp, #0x38]
+ str r0, [r1, #0x114]
+ ldr r0, [r4]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DBF8C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DBF8C:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ sub r1, r0, #1
+ ldr r0, [r4]
+ bl MOD04_021DB4A4
+ ldr r1, [r4]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DBFC4
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DBFC4:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DC02C
+ cmp r1, #3
+ beq _021DBFEC
+ cmp r1, #8
+ beq _021DC058
+ b _021DC040
+_021DBFEC:
+ bl MOD04_021DAE4C
+ ldr r0, _021DC6BC ; =UNK04_02210488
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DC020
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DC020:
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DC02C:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DC040:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DC058:
+ ldr r1, [sp, #0x3c]
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021DC080
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC080:
+ ldr r0, [r4]
+ ldr r1, _021DC68C ; =UNK04_0220C418
+ bl MOD04_021DA388
+ bl atol
+ mov sl, r0
+ ldr r0, _021DC690 ; =errno
+ ldr r0, [r0]
+ cmp r0, #0x22
+ bne _021DC0BC
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC0BC:
+ cmp sl, #0xc8
+ beq _021DC118
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ ldr r0, _021DC6BC ; =UNK04_02210488
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DC10C
+ ldr r0, _021DC694 ; =0x0000012E
+ cmp sl, r0
+ bne _021DC10C
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DC10C:
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC118:
+ ldr r0, [r4]
+ ldr r1, _021DC6D4 ; =UNK04_0220C494
+ ldr r3, [sp, #0x40]
+ add r2, sp, #0x64
+ bl MOD04_021DA334
+ cmp r0, #0
+ bgt _021DC14C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC14C:
+ add r0, sp, #0x64
+ bl atol
+ ldr r1, _021DC690 ; =errno
+ ldr r1, [r1]
+ cmp r1, #0x22
+ bne _021DC17C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC17C:
+ ldr r1, _021DC6BC ; =UNK04_02210488
+ ldr r1, [r1]
+ cmp r1, #1
+ bne _021DC1B4
+ cmp r0, #0x72
+ bne _021DC1B4
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xb
+ add r1, r1, #0x1000
+ str r2, [r1, #4]
+ bl MOD04_021DB730
+ b _021DC614
+_021DC1B4:
+ cmp r0, #0x64
+ blt _021DC1D4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #6
+ bl MOD04_021DB730
+ b _021DC614
+_021DC1D4:
+ ldr r2, [sp, #0x44]
+ ldr r0, [r4]
+ ldr r1, _021DC6D8 ; =UNK04_0220C4A0
+ mov r3, r2
+ bl MOD04_021DA334
+ mov fp, r0
+ cmp fp, #0
+ bgt _021DC20C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC20C:
+ ldr r2, [sp, #0x48]
+ ldr r0, [r4]
+ ldr r1, _021DC6DC ; =UNK04_0220C4A4
+ mov r3, r2
+ bl MOD04_021DA334
+ str r0, [sp, #4]
+ cmp r0, #0
+ bgt _021DC244
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC244:
+ ldr r2, [sp, #0x4c]
+ ldr r0, [r4]
+ ldr r1, _021DC6E0 ; =UNK04_0220C4AC
+ mov r3, r2
+ bl MOD04_021DA334
+ mov sl, r0
+ ldr r0, _021DC6E4 ; =UNK04_0220C3CC
+ add r1, fp, #1
+ blx sb
+ str r0, [sp]
+ cmp r0, #0
+ bne _021DC28C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC28C:
+ ldr r1, [sp, #4]
+ ldr r0, _021DC6E8 ; =UNK04_0220C3D8
+ add r1, r1, #1
+ blx sb
+ movs r7, r0
+ bne _021DC2BC
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC2BC:
+ cmp sl, #0
+ ble _021DC2F4
+ ldr r0, _021DC6EC ; =UNK04_0220C3E8
+ add r1, sl, #1
+ blx sb
+ str r0, [sp, #8]
+ cmp r0, #0
+ bne _021DC2F4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC2F4:
+ ldr r0, [r4]
+ ldr r1, _021DC6D8 ; =UNK04_0220C4A0
+ ldr r2, [sp]
+ add r3, fp, #1
+ bl MOD04_021DA334
+ cmp r0, #0
+ bge _021DC328
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC328:
+ ldr r1, [sp, #4]
+ ldr r2, [sp, #0x50]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r2, [r1, r0]
+ ldr r0, [r4]
+ ldr r1, _021DC6DC ; =UNK04_0220C4A4
+ mov r2, r7
+ bl MOD04_021DA334
+ cmp r0, #0
+ bge _021DC36C
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC36C:
+ ldr r1, [sp, #0x54]
+ cmp sl, #0
+ strb r1, [r7, r0]
+ mov fp, r1
+ ble _021DC404
+ ldr r0, [r4]
+ ldr r1, _021DC6E0 ; =UNK04_0220C4AC
+ ldr r2, [sp, #8]
+ add r3, sl, #1
+ bl MOD04_021DA334
+ cmp r0, #0
+ bge _021DC3B4
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC3B4:
+ ldr r2, [sp, #0x58]
+ ldr r1, [sp, #8]
+ strb r2, [r1, r0]
+ mov r0, r1
+ bl atol
+ ldr r1, _021DC690 ; =errno
+ ldr r1, [r1]
+ cmp r1, #0x22
+ bne _021DC3F0
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #9
+ bl MOD04_021DB730
+ b _021DC614
+_021DC3F0:
+ mov r1, #0x3e8
+ mul fp, r0, r1
+ ldr r0, _021DC6F0 ; =0x0002BF20
+ cmp fp, r0
+ movgt fp, r0
+_021DC404:
+ ldr r0, [r4]
+ bl MOD04_021DAE4C
+ ldr r0, [r5]
+ ldr r1, _021DC678 ; =UNK04_02210494
+ add r2, r0, #0x1000
+ ldr r0, [sp, #0x5c]
+ str r0, [r2, #4]
+ mov r0, r1
+ ldr r2, [sp]
+ str sb, [r0, #0xc]
+ str r2, [r0]
+ ldr r2, [sp, #0x60]
+ str r8, [r0, #0x10]
+ str r2, [r0, #4]
+ ldr r2, [sp, #0x14]
+ str r2, [r0, #8]
+ ldr r2, _021DC6F4 ; =0x0001D4C0
+ str r2, [r0, #0x18]
+ ldr r0, [r4]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DC474
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DC474:
+ ldr r0, [r4]
+ mov r1, r7
+ bl MOD04_021DAACC
+ cmp r0, #0
+ beq _021DC4A0
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #8
+ bl MOD04_021DB730
+ b _021DC614
+_021DC4A0:
+ ldr r0, [r4]
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DC4C8
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #1
+ bl MOD04_021DB730
+ b _021DC614
+_021DC4C8:
+ ldr r0, _021DC684 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ sub r1, r0, #1
+ ldr r0, [r4]
+ bl MOD04_021DB4A4
+ ldr r1, [r4]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ beq _021DC500
+ ldr r0, _021DC688 ; =0x00001B34
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DC500:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr r1, [r1, #0x20]
+ cmp r1, #2
+ beq _021DC520
+ cmp r1, #8
+ beq _021DC54C
+ b _021DC534
+_021DC520:
+ ldr r0, _021DC670 ; =UNK04_02210484
+ mvn r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+_021DC534:
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #3
+ bl MOD04_021DB730
+ b _021DC614
+_021DC54C:
+ mov r1, r6
+ bl MOD04_021DA3DC
+ cmp r0, #1
+ beq _021DC574
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC574:
+ ldr r0, [r4]
+ add r1, r0, #0x1000
+ ldr sl, [r1, #0xa04]
+ cmp sl, #0
+ bne _021DC598
+ bl MOD04_021DAE4C
+ mov r0, #2
+ bl MOD04_021DB730
+ b _021DC614
+_021DC598:
+ mov r0, sl
+ bl strlen
+ add r1, r0, #1
+ ldr r0, _021DC6F8 ; =UNK04_0220C3F8
+ blx sb
+ ldr r1, [r5]
+ add r1, r1, #0x1000
+ str r0, [r1, #0x118]
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x118]
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021DC5E8
+ ldr r0, _021DC674 ; =UNK04_02210490
+ ldr r0, [r0]
+ bl MOD04_021DAE4C
+ mov r0, #4
+ bl MOD04_021DB730
+ b _021DC614
+_021DC5E8:
+ mov r0, sl
+ bl strlen
+ mov r2, r0
+ ldr r0, [sp, #0x10]
+ mov r1, sl
+ bl strncpy
+ ldr r0, [r4]
+ bl MOD04_021DAE4C
+ mov r0, fp
+ bl OS_Sleep
+ b _021DB830
+_021DC614:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _021DC630
+ ldr r0, _021DC6FC ; =UNK04_0220C4B4
+ ldr r1, [sp]
+ mov r2, #0
+ blx r8
+_021DC630:
+ cmp r7, #0
+ beq _021DC648
+ ldr r0, _021DC700 ; =UNK04_0220C4C0
+ mov r1, r7
+ mov r2, #0
+ blx r8
+_021DC648:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ addeq sp, sp, #0x2d4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021DC704 ; =UNK04_0220C4CC
+ ldr r1, [sp, #8]
+ mov r2, #0
+ blx r8
+ add sp, sp, #0x2d4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DC670: .word UNK04_02210484
+_021DC674: .word UNK04_02210490
+_021DC678: .word UNK04_02210494
+_021DC67C: .word 0x00004E20
+_021DC680: .word UNK04_0220C36C
+_021DC684: .word OSi_ThreadInfo
+_021DC688: .word 0x00001B34
+_021DC68C: .word UNK04_0220C418
+_021DC690: .word errno
+_021DC694: .word 0x0000012E
+_021DC698: .word UNK04_0221048C
+_021DC69C: .word UNK04_0220BEB4
+_021DC6A0: .word UNK04_0220C424
+_021DC6A4: .word UNK04_0220C444
+_021DC6A8: .word UNK04_0220C44C
+_021DC6AC: .word UNK04_0220C454
+_021DC6B0: .word UNK04_0220C464
+_021DC6B4: .word UNK04_0220C394
+_021DC6B8: .word UNK04_022104B0
+_021DC6BC: .word UNK04_02210488
+_021DC6C0: .word 0xFFFFA4FA
+_021DC6C4: .word 0x00009C40
+_021DC6C8: .word UNK04_0220C484
+_021DC6CC: .word UNK04_0220C48C
+_021DC6D0: .word UNK04_0220C3B0
+_021DC6D4: .word UNK04_0220C494
+_021DC6D8: .word UNK04_0220C4A0
+_021DC6DC: .word UNK04_0220C4A4
+_021DC6E0: .word UNK04_0220C4AC
+_021DC6E4: .word UNK04_0220C3CC
+_021DC6E8: .word UNK04_0220C3D8
+_021DC6EC: .word UNK04_0220C3E8
+_021DC6F0: .word 0x0002BF20
+_021DC6F4: .word 0x0001D4C0
+_021DC6F8: .word UNK04_0220C3F8
+_021DC6FC: .word UNK04_0220C4B4
+_021DC700: .word UNK04_0220C4C0
+_021DC704: .word UNK04_0220C4CC
+ arm_func_end MOD04_021DB778
+
+ arm_func_start MOD04_021DC708
+MOD04_021DC708: ; 0x021DC708
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _021DC788 ; =UNK04_02210484
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x188]
+ cmp r0, #0
+ beq _021DC740
+ ldr r0, _021DC78C ; =0x0000111C
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+_021DC740:
+ ldr r1, _021DC788 ; =UNK04_02210484
+ ldr r0, _021DC78C ; =0x0000111C
+ ldr r2, [r1]
+ mov r3, #0x1000
+ ldr r1, _021DC790 ; =MOD04_021DB778
+ str r3, [sp]
+ mov ip, #0x10
+ add r0, r2, r0
+ add r3, r2, #0x1000
+ str ip, [sp, #4]
+ bl OS_CreateThread
+ ldr r1, _021DC788 ; =UNK04_02210484
+ ldr r0, _021DC78C ; =0x0000111C
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DC788: .word UNK04_02210484
+_021DC78C: .word 0x0000111C
+_021DC790: .word MOD04_021DB778
+ arm_func_end MOD04_021DC708
+
+ arm_func_start MOD04_021DC794
+MOD04_021DC794: ; 0x021DC794
+ ldr r0, _021DC7A8 ; =UNK04_02210484
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #4]
+ bx lr
+ .align 2, 0
+_021DC7A8: .word UNK04_02210484
+ arm_func_end MOD04_021DC794
+
+ arm_func_start MOD04_021DC7AC
+MOD04_021DC7AC: ; 0x021DC7AC
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DC7E8 ; =UNK04_02210484
+ ldr r0, _021DC7EC ; =0x000011DC
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl OS_LockMutex
+ ldr r1, _021DC7E8 ; =UNK04_02210484
+ ldr r0, _021DC7EC ; =0x000011DC
+ ldr r2, [r1]
+ add r1, r2, #0x1000
+ add r0, r2, r0
+ ldr r4, [r1]
+ bl OS_UnlockMutex
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DC7E8: .word UNK04_02210484
+_021DC7EC: .word 0x000011DC
+ arm_func_end MOD04_021DC7AC
+
+ arm_func_start MOD04_021DC7F0
+MOD04_021DC7F0: ; 0x021DC7F0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DC864 ; =UNK04_02210484
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DC868 ; =UNK04_02210490
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DC820
+ bl MOD04_021DB440
+_021DC820:
+ bl MOD04_021D9974
+ ldr r0, _021DC864 ; =UNK04_02210484
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x188]
+ cmp r0, #0
+ beq _021DC848
+ ldr r0, _021DC86C ; =0x0000111C
+ add r0, r1, r0
+ bl OS_JoinThread
+_021DC848:
+ ldr r0, _021DC864 ; =UNK04_02210484
+ mvn r1, #6
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #4]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DC864: .word UNK04_02210484
+_021DC868: .word UNK04_02210490
+_021DC86C: .word 0x0000111C
+ arm_func_end MOD04_021DC7F0
+
+ arm_func_start MOD04_021DC870
+MOD04_021DC870: ; 0x021DC870
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DC958 ; =UNK04_02210484
+ ldr r0, _021DC95C ; =UNK04_02210490
+ ldr r1, [r1]
+ ldr r0, [r0]
+ add r1, r1, #0x1000
+ cmp r0, #0
+ ldr r4, [r1, #0x10c]
+ beq _021DC8B8
+ bl MOD04_021DAE4C
+ ldr r1, _021DC95C ; =UNK04_02210490
+ ldr r0, _021DC960 ; =UNK04_0220C4D8
+ ldr r1, [r1]
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC95C ; =UNK04_02210490
+ mov r1, #0
+ str r1, [r0]
+_021DC8B8:
+ bl MOD04_021D991C
+ ldr r0, _021DC958 ; =UNK04_02210484
+ ldr r0, [r0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x114]
+ cmp r1, #0
+ beq _021DC8FC
+ ldr r0, _021DC964 ; =UNK04_0220C3B0
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC958 ; =UNK04_02210484
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #0x114]
+_021DC8FC:
+ ldr r0, _021DC958 ; =UNK04_02210484
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x118]
+ cmp r1, #0
+ beq _021DC934
+ ldr r0, _021DC968 ; =UNK04_0220C464
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC958 ; =UNK04_02210484
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #0x118]
+_021DC934:
+ ldr r1, _021DC958 ; =UNK04_02210484
+ ldr r0, _021DC96C ; =UNK04_0220C4E8
+ ldr r1, [r1]
+ mov r2, #0
+ blx r4
+ ldr r0, _021DC958 ; =UNK04_02210484
+ mov r1, #0
+ str r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DC958: .word UNK04_02210484
+_021DC95C: .word UNK04_02210490
+_021DC960: .word UNK04_0220C4D8
+_021DC964: .word UNK04_0220C3B0
+_021DC968: .word UNK04_0220C464
+_021DC96C: .word UNK04_0220C4E8
+ arm_func_end MOD04_021DC870
+
+ arm_func_start MOD04_021DC970
+MOD04_021DC970: ; 0x021DC970
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ mov r5, r0
+ ldr r0, [r1]
+ ldr r4, [r5]
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021DCA60 ; =UNK04_0220C4FC
+ ldr r1, _021DCA64 ; =0x000011F4
+ blx r4
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ cmp r0, #0
+ str r0, [r1]
+ addeq sp, sp, #4
+ moveq r0, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, _021DCA64 ; =0x000011F4
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ ldr r2, _021DCA68 ; =0xFFFE7961
+ ldr r0, [r1]
+ ldr r3, _021DCA6C ; =0x00001108
+ add r0, r0, #0x1000
+ str r2, [r0, #4]
+ ldr ip, [r1]
+ ldmia r5, {r0, r1, r2}
+ add r3, ip, r3
+ stmia r3, {r0, r1, r2}
+ ldr r0, _021DCA70 ; =UNK04_02210490
+ ldr r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021DCA74 ; =UNK04_0220C510
+ ldr r1, _021DCA78 ; =0x00001C10
+ blx r4
+ ldr r1, _021DCA70 ; =UNK04_02210490
+ cmp r0, #0
+ str r0, [r1]
+ addeq sp, sp, #4
+ moveq r0, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _021DCA5C ; =UNK04_02210484
+ ldr r0, _021DCA7C ; =0x000011DC
+ ldr r2, [r1]
+ ldr r1, _021DCA80 ; =UNK04_0221048C
+ mov r3, #0
+ add r0, r2, r0
+ str r3, [r1]
+ bl OS_InitMutex
+ bl MOD04_021DC708
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DCA5C: .word UNK04_02210484
+_021DCA60: .word UNK04_0220C4FC
+_021DCA64: .word 0x000011F4
+_021DCA68: .word 0xFFFE7961
+_021DCA6C: .word 0x00001108
+_021DCA70: .word UNK04_02210490
+_021DCA74: .word UNK04_0220C510
+_021DCA78: .word 0x00001C10
+_021DCA7C: .word 0x000011DC
+_021DCA80: .word UNK04_0221048C
+ arm_func_end MOD04_021DC970
+
+ .section .data
+
+ .global UNK04_0220C36C
+UNK04_0220C36C: ; 0x0220C36C
+ .word UNK04_0220C370
+
+ .global UNK04_0220C370
+UNK04_0220C370: ; 0x0220C370
+ .asciz "http://conntest.nintendowifi.net/"
+
+ .balign 4, 0
+ .global UNK04_0220C394
+UNK04_0220C394: ; 0x0220C394
+ .asciz "ALLOC DWCnetcheck->body_302"
+
+ .balign 4, 0
+ .global UNK04_0220C3B0
+UNK04_0220C3B0: ; 0x0220C3B0
+ .asciz "FREE DWCnetcheck->body_302"
+
+ .balign 4, 0
+ .global UNK04_0220C3CC
+UNK04_0220C3CC: ; 0x0220C3CC
+ .asciz "ALLOC url"
+
+ .balign 4, 0
+ .global UNK04_0220C3D8
+UNK04_0220C3D8: ; 0x0220C3D8
+ .asciz "ALLOC data_len"
+
+ .balign 4, 0
+ .global UNK04_0220C3E8
+UNK04_0220C3E8: ; 0x0220C3E8
+ .asciz "ALLOC wait_len"
+
+ .balign 4, 0
+ .global UNK04_0220C3F8
+UNK04_0220C3F8: ; 0x0220C3F8
+ .asciz "ALLOC DWCnetcheck->body_wayport"
+
+ .balign 4, 0
+ .global UNK04_0220C418
+UNK04_0220C418: ; 0x0220C418
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220C424
+UNK04_0220C424: ; 0x0220C424
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220C444
+UNK04_0220C444: ; 0x0220C444
+ .asciz "action"
+
+ .balign 4, 0
+ .global UNK04_0220C44C
+UNK04_0220C44C: ; 0x0220C44C
+ .asciz "message"
+
+ .balign 4, 0
+ .global UNK04_0220C454
+UNK04_0220C454: ; 0x0220C454
+ .asciz "HotSpotResponse"
+
+ .balign 4, 0
+ .global UNK04_0220C464
+UNK04_0220C464: ; 0x0220C464
+ .asciz "FREE DWCnetcheck->body_wayport"
+
+ .balign 4, 0
+ .global UNK04_0220C484
+UNK04_0220C484: ; 0x0220C484
+ .asciz "parse"
+
+ .balign 4, 0
+ .global UNK04_0220C48C
+UNK04_0220C48C: ; 0x0220C48C
+ .asciz "HTML"
+
+ .balign 4, 0
+ .global UNK04_0220C494
+UNK04_0220C494: ; 0x0220C494
+ .asciz "returncd"
+
+ .balign 4, 0
+ .global UNK04_0220C4A0
+UNK04_0220C4A0: ; 0x0220C4A0
+ .asciz "url"
+
+ .balign 4, 0
+ .global UNK04_0220C4A4
+UNK04_0220C4A4: ; 0x0220C4A4
+ .asciz "data"
+
+ .balign 4, 0
+ .global UNK04_0220C4AC
+UNK04_0220C4AC: ; 0x0220C4AC
+ .asciz "wait"
+
+ .balign 4, 0
+ .global UNK04_0220C4B4
+UNK04_0220C4B4: ; 0x0220C4B4
+ .asciz "FREE url"
+
+ .balign 4, 0
+ .global UNK04_0220C4C0
+UNK04_0220C4C0: ; 0x0220C4C0
+ .asciz "FREE data"
+
+ .balign 4, 0
+ .global UNK04_0220C4CC
+UNK04_0220C4CC: ; 0x0220C4CC
+ .asciz "FREE wait"
+
+ .balign 4, 0
+ .global UNK04_0220C4D8
+UNK04_0220C4D8: ; 0x0220C4D8
+ .asciz "FREE DWChttp"
+
+ .balign 4, 0
+ .global UNK04_0220C4E8
+UNK04_0220C4E8: ; 0x0220C4E8
+ .asciz "FREE DWCnetcheck"
+
+ .balign 4, 0
+ .global UNK04_0220C4FC
+UNK04_0220C4FC: ; 0x0220C4FC
+ .asciz "ALLOC DWCnetcheck"
+
+ .balign 4, 0
+ .global UNK04_0220C510
+UNK04_0220C510: ; 0x0220C510
+ .asciz "ALLOC DWChttp"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210490
+UNK04_02210490: ; 0x02210490
+ .space 0x4
+
+ .global UNK04_02210494
+UNK04_02210494: ; 0x02210494
+ .space 0x1C
+
+ .global UNK04_022104B0
+UNK04_022104B0: ; 0x022104B0
+ .space 0x48
diff --git a/arm9/modules/04/asm/mod04_021DC8A4.s b/arm9/modules/04/asm/mod04_021DC8A4.s
new file mode 100644
index 00000000..7668cb10
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DC8A4.s
@@ -0,0 +1,240 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DCA84
+MOD04_021DCA84: ; 0x021DCA84
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x40
+ mov r6, r0
+ bl strlen
+ mov r4, r0
+ ldr r0, _021DCCB4 ; =UNK04_0220C580
+ bl strlen
+ cmp r4, r0
+ bne _021DCCA8
+ ldrsb r0, [r6, #7]
+ cmp r0, #0x20
+ bne _021DCCA8
+ ldrsb r0, [r6, #0xb]
+ cmp r0, #0x20
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x10]
+ cmp r0, #0x20
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x13]
+ cmp r0, #0x3a
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x16]
+ cmp r0, #0x3a
+ bne _021DCCA8
+ ldrsb r0, [r6, #0x19]
+ cmp r0, #0x20
+ bne _021DCCA8
+ add r0, sp, #0
+ bl RTC_GetDate
+ cmp r0, #0
+ bne _021DCCA8
+ add r0, sp, #0x10
+ bl RTC_GetTime
+ cmp r0, #0
+ bne _021DCCA8
+ add r0, sp, #0
+ add r1, sp, #0x10
+ bl RTC_ConvertDateTimeToSecond
+ mov r4, r0
+ mov r5, r1
+ mvn r0, #0
+ cmp r5, r0
+ cmpeq r4, r0
+ beq _021DCCA8
+ add r0, sp, #0x1c
+ mov r1, r6
+ bl strcpy
+ mov r2, #0
+ ldr r1, _021DCCB8 ; =errno
+ add r0, sp, #0x28
+ strb r2, [sp, #0x23]
+ strb r2, [sp, #0x27]
+ strb r2, [sp, #0x2c]
+ strb r2, [sp, #0x2f]
+ strb r2, [sp, #0x32]
+ strb r2, [sp, #0x35]
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp]
+ ldr r1, [r1]
+ cmp r1, #0x22
+ beq _021DCCA8
+ sub r1, r0, #0x7d0
+ mov r0, #0xd
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r8, #0
+ ldr r7, _021DCCBC ; =UNK04_0220C550
+ add r6, sp, #0x24
+_021DCB9C:
+ ldr r0, [r7, r8, lsl #2]
+ mov r1, r6
+ bl strcmp
+ cmp r0, #0
+ addeq r0, r8, #1
+ streq r0, [sp, #4]
+ beq _021DCBC4
+ add r8, r8, #1
+ cmp r8, #0xc
+ blt _021DCB9C
+_021DCBC4:
+ ldr r0, [sp, #4]
+ cmp r0, #0xc
+ bhi _021DCCA8
+ ldr r1, _021DCCB8 ; =errno
+ mov r2, #0
+ add r0, sp, #0x21
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #8]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ mov r2, #0
+ add r0, sp, #0x2d
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #0x10]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ mov r2, #0
+ add r0, sp, #0x30
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #0x14]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ mov r2, #0
+ add r0, sp, #0x33
+ str r2, [r1]
+ bl atol
+ ldr r1, _021DCCB8 ; =errno
+ str r0, [sp, #0x18]
+ ldr r0, [r1]
+ cmp r0, #0x22
+ beq _021DCCA8
+ add r0, sp, #0
+ add r1, sp, #0x10
+ bl RTC_ConvertDateTimeToSecond
+ mvn r2, #0
+ cmp r1, r2
+ cmpeq r0, r2
+ beq _021DCCA8
+ subs r4, r4, r0
+ ldr r2, _021DCCC0 ; =UNK04_022104FC
+ sbc r3, r5, r1
+ ldr r1, _021DCCC4 ; =UNK04_022104F8
+ mov r0, #1
+ str r3, [r2, #4]
+ str r0, [r1]
+ add sp, sp, #0x40
+ str r4, [r2]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_021DCCA8:
+ mov r0, #0
+ add sp, sp, #0x40
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DCCB4: .word UNK04_0220C580
+_021DCCB8: .word errno
+_021DCCBC: .word UNK04_0220C550
+_021DCCC0: .word UNK04_022104FC
+_021DCCC4: .word UNK04_022104F8
+ arm_func_end MOD04_021DCA84
+
+ .section .data
+
+ .global UNK04_0220C520
+UNK04_0220C520: ; 0x0220C520
+ .asciz "Dec"
+
+ .balign 4, 0
+ .global UNK04_0220C524
+UNK04_0220C524: ; 0x0220C524
+ .asciz "Jul"
+
+ .balign 4, 0
+ .global UNK04_0220C528
+UNK04_0220C528: ; 0x0220C528
+ .asciz "Oct"
+
+ .balign 4, 0
+ .global UNK04_0220C52C
+UNK04_0220C52C: ; 0x0220C52C
+ .asciz "Sep"
+
+ .balign 4, 0
+ .global UNK04_0220C530
+UNK04_0220C530: ; 0x0220C530
+ .asciz "Aug"
+
+ .balign 4, 0
+ .global UNK04_0220C534
+UNK04_0220C534: ; 0x0220C534
+ .asciz "Nov"
+
+ .balign 4, 0
+ .global UNK04_0220C538
+UNK04_0220C538: ; 0x0220C538
+ .asciz "Jun"
+
+ .balign 4, 0
+ .global UNK04_0220C53C
+UNK04_0220C53C: ; 0x0220C53C
+ .asciz "May"
+
+ .balign 4, 0
+ .global UNK04_0220C540
+UNK04_0220C540: ; 0x0220C540
+ .asciz "Apr"
+
+ .balign 4, 0
+ .global UNK04_0220C544
+UNK04_0220C544: ; 0x0220C544
+ .asciz "Mar"
+
+ .balign 4, 0
+ .global UNK04_0220C548
+UNK04_0220C548: ; 0x0220C548
+ .asciz "Feb"
+
+ .balign 4, 0
+ .global UNK04_0220C54C
+UNK04_0220C54C: ; 0x0220C54C
+ .asciz "Jan"
+
+ .balign 4, 0
+ .global UNK04_0220C550
+UNK04_0220C550: ; 0x0220C550
+ .word UNK04_0220C54C, UNK04_0220C548, UNK04_0220C544, UNK04_0220C540
+ .word UNK04_0220C53C, UNK04_0220C538, UNK04_0220C524, UNK04_0220C530
+ .word UNK04_0220C52C, UNK04_0220C528, UNK04_0220C534, UNK04_0220C520
+
+ .global UNK04_0220C580
+UNK04_0220C580: ; 0x0220C580
+ .asciz "Fri, 03 Mar 2006 01:28:13 GMT"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022104F8
+UNK04_022104F8: ; 0x022104F8
+ .space 0x4
+
+ .global UNK04_022104FC
+UNK04_022104FC: ; 0x022104FC
+ .space 0x8
diff --git a/arm9/modules/04/asm/mod04_021DCCC8.s b/arm9/modules/04/asm/mod04_021DCCC8.s
new file mode 100644
index 00000000..a182f7c3
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DCCC8.s
@@ -0,0 +1,545 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DCCC8
+MOD04_021DCCC8: ; 0x021DCCC8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ mov r1, #0
+ ldr r0, [r0]
+ add r4, r0, #8
+ mov r0, r4
+ bl MOD04_021DA3DC
+ cmp r0, #0
+ bne _021DCD08
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCD08:
+ ldr r1, _021DCEDC ; =UNK04_0220C5A0
+ mov r0, r4
+ bl MOD04_021DA388
+ cmp r0, #0
+ beq _021DCD20
+ bl MOD04_021DCA84
+_021DCD20:
+ ldr r1, _021DCEE0 ; =UNK04_0220C5A8
+ mov r0, r4
+ bl MOD04_021DA388
+ cmp r0, #0
+ bne _021DCD4C
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCD4C:
+ bl atol
+ ldr r1, _021DCEE4 ; =errno
+ mov r2, r0
+ ldr r0, [r1]
+ cmp r0, #0x22
+ bne _021DCD7C
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCD7C:
+ cmp r2, #0xc8
+ beq _021DCDA0
+ ldr r1, _021DCEE8 ; =0xFFFF9E58
+ mov r0, #0x10
+ sub r1, r1, r2
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCDA0:
+ ldr r1, _021DCEEC ; =UNK04_0220C5B4
+ add r2, sp, #0
+ mov r0, r4
+ mov r3, #4
+ bl MOD04_021DA334
+ cmp r0, #0
+ bgt _021DCDD4
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCDD4:
+ add r0, sp, #0
+ bl atol
+ ldr r1, _021DCEE4 ; =errno
+ mov r2, r0
+ ldr r0, [r1]
+ cmp r0, #0x22
+ bne _021DCE08
+ ldr r1, _021DCED8 ; =0xFFFF9DF3
+ mov r0, #0x10
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCE08:
+ cmp r2, #0x64
+ blt _021DCE2C
+ ldr r1, _021DCEF0 ; =0xFFFFA240
+ mov r0, #0x10
+ sub r1, r1, r2
+ bl MOD04_021DD6B0
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_021DCE2C:
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ ldr r1, _021DCEF4 ; =UNK04_0220C5C0
+ ldr r2, [r0]
+ mov r0, r4
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0xc18]
+ mov r3, #0x40
+ add r2, r2, #4
+ bl MOD04_021DA334
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ ldr r1, _021DCEF8 ; =UNK04_0220C5C8
+ ldr r2, [r0]
+ mov r0, r4
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0xc18]
+ mov r3, #0x12c
+ add r2, r2, #0x45
+ bl MOD04_021DA334
+ ldr r1, _021DCEFC ; =UNK04_0220C5D8
+ add r2, sp, #0
+ mov r0, r4
+ mov r3, #1
+ bl MOD04_021DA334
+ ldrsb r0, [sp]
+ cmp r0, #0x59
+ bne _021DCEB0
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ mov r1, #1
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xc18]
+ str r1, [r0]
+ b _021DCEC8
+_021DCEB0:
+ ldr r0, _021DCED4 ; =UNK04_02210504
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xc18]
+ str r1, [r0]
+_021DCEC8:
+ mov r0, #1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DCED4: .word UNK04_02210504
+_021DCED8: .word 0xFFFF9DF3
+_021DCEDC: .word UNK04_0220C5A0
+_021DCEE0: .word UNK04_0220C5A8
+_021DCEE4: .word errno
+_021DCEE8: .word 0xFFFF9E58
+_021DCEEC: .word UNK04_0220C5B4
+_021DCEF0: .word 0xFFFFA240
+_021DCEF4: .word UNK04_0220C5C0
+_021DCEF8: .word UNK04_0220C5C8
+_021DCEFC: .word UNK04_0220C5D8
+ arm_func_end MOD04_021DCCC8
+
+ arm_func_start MOD04_021DCF00
+MOD04_021DCF00: ; 0x021DCF00
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba8]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ ldr r0, _021DCFF4 ; =0x00001B3C
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #1
+ bne _021DCFE4
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0x28]
+ cmp r0, #7
+ beq _021DCFB0
+ cmp r0, #8
+ bne _021DCFC4
+ bl MOD04_021DCCC8
+ cmp r0, #0
+ bne _021DCF94
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ add sp, sp, #4
+ mov r0, #4
+ ldmfd sp!, {pc}
+_021DCF94:
+ ldr r0, _021DCFF0 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ add sp, sp, #4
+ mov r0, #3
+ ldmfd sp!, {pc}
+_021DCFB0:
+ add r0, r1, #8
+ bl MOD04_021DAE4C
+ add sp, sp, #4
+ mov r0, #5
+ ldmfd sp!, {pc}
+_021DCFC4:
+ add r0, r1, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DCFF8 ; =0xFFFFA1DB
+ mov r0, #0x11
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #4
+ ldmfd sp!, {pc}
+_021DCFE4:
+ mov r0, #2
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DCFF0: .word UNK04_02210504
+_021DCFF4: .word 0x00001B3C
+_021DCFF8: .word 0xFFFFA1DB
+ arm_func_end MOD04_021DCF00
+
+ arm_func_start MOD04_021DCFFC
+MOD04_021DCFFC: ; 0x021DCFFC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xb4
+ ldr r2, _021DD244 ; =UNK04_02210504
+ mov r5, r0
+ ldr r2, [r2]
+ mov r0, r1
+ add r2, r2, #0x1000
+ str r1, [r2, #0xc18]
+ mov r1, #0
+ mov r2, #0x174
+ bl MI_CpuFill8
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba8]
+ cmp r0, #0
+ beq _021DD058
+ ldr r0, _021DD248 ; =0x00001B3C
+ add r0, r1, r0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ bne _021DD058
+ bl OS_Terminate
+_021DD058:
+ ldr r0, _021DD24C ; =UNK04_0220BEB4
+ ldr r1, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ mov r3, #0
+ ldr r4, [r1]
+ mov r2, #0x1000
+ str r0, [sp]
+ str r3, [sp, #4]
+ str r2, [sp, #8]
+ ldr r2, [r4]
+ ldr r1, _021DD250 ; =UNK04_0220C5E4
+ str r2, [sp, #0xc]
+ ldr r2, [r4, #4]
+ str r2, [sp, #0x10]
+ bl strcmp
+ cmp r0, #0
+ movne r0, #1
+ strne r0, [sp, #0x14]
+ moveq r0, #0
+ ldr r2, _021DD254 ; =0x00004E20
+ streq r0, [sp, #0x14]
+ add r1, sp, #0
+ add r0, r4, #8
+ str r2, [sp, #0x18]
+ bl MOD04_021DB608
+ cmp r0, #0
+ beq _021DD0DC
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD0DC:
+ add r0, sp, #0x1c
+ bl MOD04_021DA238
+ cmp r0, #0
+ beq _021DD10C
+ ldr r0, _021DD244 ; =UNK04_02210504
+ add r1, sp, #0x1c
+ ldr r0, [r0]
+ mov r2, #0
+ add r0, r0, #8
+ bl MOD04_021D9C2C
+ cmp r0, #0
+ bne _021DD134
+_021DD10C:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD134:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, _021DD25C ; =UNK04_0220C604
+ ldr r0, [r0]
+ ldr r2, _021DD260 ; =UNK04_0220C60C
+ add r0, r0, #8
+ mov r3, #6
+ bl MOD04_021DAB68
+ cmp r0, #0
+ bne _021DD17C
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, _021DD264 ; =UNK04_0220C614
+ ldr r0, [r0]
+ mov r2, r5
+ add r0, r0, #8
+ mov r3, #4
+ bl MOD04_021DAB68
+ cmp r0, #0
+ beq _021DD1A4
+_021DD17C:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD1A4:
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DB570
+ cmp r0, #0
+ beq _021DD1E4
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #0xb4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD1E4:
+ ldr r0, _021DD268 ; =OSi_ThreadInfo
+ ldr r0, [r0, #4]
+ bl OS_GetThreadPriority
+ ldr r1, _021DD244 ; =UNK04_02210504
+ ldr r2, [r1]
+ sub r1, r0, #1
+ add r0, r2, #8
+ bl MOD04_021DB4A4
+ ldr r0, _021DD244 ; =UNK04_02210504
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r0, [r0, #0xba8]
+ cmp r0, #0
+ addne sp, sp, #0xb4
+ movne r0, #1
+ ldmneia sp!, {r4, r5, pc}
+ add r0, r1, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD258 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ mov r0, #0
+ add sp, sp, #0xb4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DD244: .word UNK04_02210504
+_021DD248: .word 0x00001B3C
+_021DD24C: .word UNK04_0220BEB4
+_021DD250: .word UNK04_0220C5E4
+_021DD254: .word 0x00004E20
+_021DD258: .word 0xFFFFA1DC
+_021DD25C: .word UNK04_0220C604
+_021DD260: .word UNK04_0220C60C
+_021DD264: .word UNK04_0220C614
+_021DD268: .word OSi_ThreadInfo
+ arm_func_end MOD04_021DCFFC
+
+ arm_func_start MOD04_021DD26C
+MOD04_021DD26C: ; 0x021DD26C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DD2BC ; =UNK04_02210504
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ add r0, r0, #8
+ bl MOD04_021DAE4C
+ ldr r1, _021DD2BC ; =UNK04_02210504
+ ldr r0, _021DD2C0 ; =UNK04_0220C618
+ ldr r1, [r1]
+ mov r2, #0
+ ldr r3, [r1, #4]
+ blx r3
+ ldr r0, _021DD2BC ; =UNK04_02210504
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD2BC: .word UNK04_02210504
+_021DD2C0: .word UNK04_0220C618
+ arm_func_end MOD04_021DD26C
+
+ arm_func_start MOD04_021DD2C4
+MOD04_021DD2C4: ; 0x021DD2C4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DD35C ; =UNK04_02210504
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ beq _021DD2FC
+ ldr r1, _021DD360 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD2FC:
+ ldr r0, _021DD364 ; =UNK04_0220C628
+ ldr r1, _021DD368 ; =0x00001C1C
+ blx r5
+ ldr r1, _021DD35C ; =UNK04_02210504
+ cmp r0, #0
+ str r0, [r1]
+ bne _021DD330
+ ldr r1, _021DD360 ; =0xFFFFA1DC
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DD330:
+ ldr r2, _021DD368 ; =0x00001C1C
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r1, _021DD35C ; =UNK04_02210504
+ mov r0, #1
+ ldr r2, [r1]
+ str r5, [r2]
+ ldr r1, [r1]
+ str r4, [r1, #4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DD35C: .word UNK04_02210504
+_021DD360: .word 0xFFFFA1DC
+_021DD364: .word UNK04_0220C628
+_021DD368: .word 0x00001C1C
+ arm_func_end MOD04_021DD2C4
+
+ .section .data
+
+ .global UNK04_0220C5A0
+UNK04_0220C5A0: ; 0x0220C5A0
+ .asciz "Date"
+
+ .balign 4, 0
+ .global UNK04_0220C5A8
+UNK04_0220C5A8: ; 0x0220C5A8
+ .asciz "httpresult"
+
+ .balign 4, 0
+ .global UNK04_0220C5B4
+UNK04_0220C5B4: ; 0x0220C5B4
+ .asciz "returncd"
+
+ .balign 4, 0
+ .global UNK04_0220C5C0
+UNK04_0220C5C0: ; 0x0220C5C0
+ .asciz "svchost"
+
+ .balign 4, 0
+ .global UNK04_0220C5C8
+UNK04_0220C5C8: ; 0x0220C5C8
+ .asciz "servicetoken"
+
+ .balign 4, 0
+ .global UNK04_0220C5D8
+UNK04_0220C5D8: ; 0x0220C5D8
+ .asciz "statusdata"
+
+ .balign 4, 0
+ .global UNK04_0220C5E4
+UNK04_0220C5E4: ; 0x0220C5E4
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220C604
+UNK04_0220C604: ; 0x0220C604
+ .asciz "action"
+
+ .balign 4, 0
+ .global UNK04_0220C60C
+UNK04_0220C60C: ; 0x0220C60C
+ .asciz "SVCLOC"
+
+ .balign 4, 0
+ .global UNK04_0220C614
+UNK04_0220C614: ; 0x0220C614
+ .asciz "svc"
+
+ .balign 4, 0
+ .global UNK04_0220C618
+UNK04_0220C618: ; 0x0220C618
+ .asciz "FREE intwork"
+
+ .balign 4, 0
+ .global UNK04_0220C628
+UNK04_0220C628: ; 0x0220C628
+ .asciz "ALLOC intwork"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210504
+UNK04_02210504: ; 0x02210504
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DD36C.s b/arm9/modules/04/asm/mod04_021DD36C.s
new file mode 100644
index 00000000..19966827
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD36C.s
@@ -0,0 +1,248 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD36C
+MOD04_021DD36C: ; 0x021DD36C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ands r4, r1, #3
+ addne sp, sp, #8
+ mvnne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r6, #0
+ mov r5, r6
+ cmp r1, #0
+ bls _021DD3AC
+_021DD394:
+ ldrsb r4, [r0, r5]
+ add r5, r5, #1
+ cmp r4, #0x2a
+ addne r6, r6, #6
+ cmp r5, r1
+ blo _021DD394
+_021DD3AC:
+ cmp r2, #0
+ moveq r0, r6, asr #2
+ addeq r0, r6, r0, lsr #29
+ addeq sp, sp, #8
+ moveq r0, r0, asr #3
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r4, r6, asr #2
+ add r4, r6, r4, lsr #29
+ mov r4, r4, asr #3
+ cmp r3, r4
+ addlo sp, sp, #8
+ mvnlo r0, #0
+ ldmloia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r1, #0
+ moveq r0, #0
+ streqb r0, [r2]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r6, r2
+ add ip, sp, #0
+ mov lr, #0
+ mov r1, #0x3f
+ mov r3, #0x3e
+_021DD408:
+ mov r8, lr
+ mov r5, ip
+_021DD410:
+ ldrsb r7, [r0, r8]
+ cmp r7, #0x41
+ blt _021DD42C
+ cmp r7, #0x5a
+ suble r7, r7, #0x41
+ strleb r7, [r5]
+ ble _021DD474
+_021DD42C:
+ cmp r7, #0x61
+ blt _021DD444
+ cmp r7, #0x7a
+ suble r7, r7, #0x47
+ strleb r7, [r5]
+ ble _021DD474
+_021DD444:
+ cmp r7, #0x30
+ blt _021DD45C
+ cmp r7, #0x39
+ addle r7, r7, #4
+ strleb r7, [r5]
+ ble _021DD474
+_021DD45C:
+ cmp r7, #0x2e
+ streqb r3, [r5]
+ beq _021DD474
+ cmp r7, #0x2d
+ streqb r1, [r5]
+ strneb lr, [r5]
+_021DD474:
+ add r8, r8, #1
+ cmp r8, #4
+ add r5, r5, #1
+ blt _021DD410
+ ldrsb r8, [sp]
+ ldrsb r7, [sp, #1]
+ add r5, r6, #1
+ mov r8, r8, lsl #2
+ orr r7, r8, r7, asr #4
+ sub r5, r5, r2
+ strb r7, [r6]
+ cmp r5, r4
+ add r0, r0, #4
+ bge _021DD4F0
+ ldrsb r8, [sp, #1]
+ ldrsb r7, [sp, #2]
+ add r5, r6, #2
+ mov r8, r8, lsl #4
+ orr r7, r8, r7, asr #2
+ sub r5, r5, r2
+ strb r7, [r6, #1]
+ cmp r5, r4
+ bge _021DD4F0
+ ldrsb r7, [sp, #2]
+ ldrsb r5, [sp, #3]
+ orr r5, r5, r7, lsl #6
+ strb r5, [r6, #2]
+ add r6, r6, #3
+ sub r5, r6, r2
+ cmp r5, r4
+ blt _021DD408
+_021DD4F0:
+ mov r0, r5
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ arm_func_end MOD04_021DD36C
+
+ arm_func_start MOD04_021DD4FC
+MOD04_021DD4FC: ; 0x021DD4FC
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ ldr r4, _021DD69C ; =0xAAAAAAAB
+ str r2, [sp]
+ umull r4, r5, r1, r4
+ ldr r6, _021DD6A0 ; =0x00000003
+ mov r5, r5, lsr #1
+ umull r4, r5, r6, r5
+ mov sl, r0
+ subs r5, r1, r4
+ movne r4, #4
+ ldr r2, _021DD69C ; =0xAAAAAAAB
+ ldr r0, [sp]
+ moveq r4, #0
+ cmp r0, #0
+ umull r0, r2, r1, r2
+ mov r2, r2, lsr #1
+ addeq sp, sp, #0xc
+ add r0, r4, r2, lsl #2
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r3, r0
+ addlo sp, sp, #0xc
+ mvnlo r0, #0
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r7, sl, r1
+ ldr r6, [sp]
+ cmp sl, r7
+ beq _021DD68C
+ mov r0, #1
+ mov r5, #0
+ str r0, [sp, #4]
+ mov fp, #3
+ mov r4, #0x2a
+_021DD580:
+ sub sb, r7, sl
+ ldr r1, _021DD6A4 ; =0x2AAAAAAB
+ mov r0, sb, lsl #3
+ smull r2, r3, r1, r0
+ ldr r1, _021DD6A8 ; =0x00000006
+ add r3, r3, r0, lsr #31
+ smull r2, r3, r1, r3
+ subs r3, r0, r2
+ ldr r1, _021DD6A4 ; =0x2AAAAAAB
+ ldrne r8, [sp, #4]
+ smull r2, r3, r1, r0
+ moveq r8, r5
+ add r3, r3, r0, lsr #31
+ cmp sb, #3
+ movge sb, fp
+ add r0, sp, #8
+ mov r1, r5
+ mov r2, fp
+ add r8, r3, r8
+ bl MI_CpuFill8
+ mov r0, sl
+ add r1, sp, #8
+ mov r2, sb
+ bl MI_CpuCopy8
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ cmp r8, #2
+ ldr r1, [r0]
+ ldrb r0, [sp, #8]
+ mov r0, r0, asr #2
+ ldrsb r0, [r1, r0]
+ strb r0, [r6]
+ strltb r4, [r6, #1]
+ blt _021DD628
+ ldrb r2, [sp, #8]
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ ldrb r1, [sp, #9]
+ mov r2, r2, lsl #4
+ and r2, r2, #0x3f
+ ldr r0, [r0]
+ orr r1, r2, r1, asr #4
+ ldrsb r0, [r0, r1]
+ strb r0, [r6, #1]
+_021DD628:
+ cmp r8, #3
+ strltb r4, [r6, #2]
+ blt _021DD658
+ ldrb r2, [sp, #9]
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ ldrb r1, [sp, #0xa]
+ mov r2, r2, lsl #2
+ and r2, r2, #0x3f
+ ldr r0, [r0]
+ orr r1, r2, r1, asr #6
+ ldrsb r0, [r0, r1]
+ strb r0, [r6, #2]
+_021DD658:
+ cmp r8, #4
+ strltb r4, [r6, #3]
+ blt _021DD67C
+ ldr r0, _021DD6AC ; =UNK04_0220C638
+ ldrb r1, [sp, #0xa]
+ ldr r2, [r0]
+ and r0, r1, #0x3f
+ ldrsb r0, [r2, r0]
+ strb r0, [r6, #3]
+_021DD67C:
+ add sl, sl, sb
+ cmp sl, r7
+ add r6, r6, #4
+ bne _021DD580
+_021DD68C:
+ ldr r0, [sp]
+ sub r0, r6, r0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DD69C: .word 0xAAAAAAAB
+_021DD6A0: .word 0x00000003
+_021DD6A4: .word 0x2AAAAAAB
+_021DD6A8: .word 0x00000006
+_021DD6AC: .word UNK04_0220C638
+ arm_func_end MOD04_021DD4FC
+
+ .section .data
+
+ .global UNK04_0220C638
+UNK04_0220C638: ; 0x0220C638
+ .word UNK04_0220C63C
+
+ .global UNK04_0220C63C
+UNK04_0220C63C: ; 0x0220C63C
+ .asciz "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-"
+
+ .balign 4, 0
diff --git a/arm9/modules/04/asm/mod04_021DD6B0.s b/arm9/modules/04/asm/mod04_021DD6B0.s
new file mode 100644
index 00000000..4b9455e6
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD6B0.s
@@ -0,0 +1,145 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD6B0
+MOD04_021DD6B0: ; 0x021DD6B0
+ ldr r3, _021DD6CC ; =UNK04_02210508
+ ldr r2, [r3]
+ cmp r2, #9
+ ldrne r2, _021DD6D0 ; =UNK04_0221050C
+ strne r0, [r3]
+ strne r1, [r2]
+ bx lr
+ .align 2, 0
+_021DD6CC: .word UNK04_02210508
+_021DD6D0: .word UNK04_0221050C
+ arm_func_end MOD04_021DD6B0
+
+ arm_func_start MOD04_021DD6D4
+MOD04_021DD6D4: ; 0x021DD6D4
+ ldr r0, _021DD6EC ; =UNK04_02210508
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DD6EC: .word UNK04_02210508
+ arm_func_end MOD04_021DD6D4
+
+ arm_func_start MOD04_021DD6F0
+MOD04_021DD6F0: ; 0x021DD6F0
+ ldr r1, _021DD710 ; =UNK04_02210508
+ ldr r0, [r1]
+ cmp r0, #9
+ movne r2, #0
+ ldrne r0, _021DD714 ; =UNK04_0221050C
+ strne r2, [r1]
+ strne r2, [r0]
+ bx lr
+ .align 2, 0
+_021DD710: .word UNK04_02210508
+_021DD714: .word UNK04_0221050C
+ arm_func_end MOD04_021DD6F0
+
+ arm_func_start MOD04_021DD718
+MOD04_021DD718: ; 0x021DD718
+ cmp r0, #0
+ ldrne r2, _021DD800 ; =UNK04_0221050C
+ ldrne r2, [r2]
+ strne r2, [r0]
+ cmp r1, #0
+ beq _021DD7F4
+ ldr r0, _021DD804 ; =UNK04_02210508
+ ldr r0, [r0]
+ cmp r0, #0x11
+ addls pc, pc, r0, lsl #2
+ b _021DD7EC
+_021DD744: ; jump table
+ b _021DD7EC ; case 0
+ b _021DD7BC ; case 1
+ b _021DD78C ; case 2
+ b _021DD78C ; case 3
+ b _021DD78C ; case 4
+ b _021DD78C ; case 5
+ b _021DD798 ; case 6
+ b _021DD7A4 ; case 7
+ b _021DD78C ; case 8
+ b _021DD7BC ; case 9
+ b _021DD7B0 ; case 10
+ b _021DD7B0 ; case 11
+ b _021DD7B0 ; case 12
+ b _021DD7B0 ; case 13
+ b _021DD7C8 ; case 14
+ b _021DD7D4 ; case 15
+ b _021DD7E0 ; case 16
+ b _021DD7D4 ; case 17
+_021DD78C:
+ mov r0, #6
+ str r0, [r1]
+ b _021DD7F4
+_021DD798:
+ mov r0, #3
+ str r0, [r1]
+ b _021DD7F4
+_021DD7A4:
+ mov r0, #4
+ str r0, [r1]
+ b _021DD7F4
+_021DD7B0:
+ mov r0, #1
+ str r0, [r1]
+ b _021DD7F4
+_021DD7BC:
+ mov r0, #7
+ str r0, [r1]
+ b _021DD7F4
+_021DD7C8:
+ mov r0, #5
+ str r0, [r1]
+ b _021DD7F4
+_021DD7D4:
+ mov r0, #6
+ str r0, [r1]
+ b _021DD7F4
+_021DD7E0:
+ mov r0, #2
+ str r0, [r1]
+ b _021DD7F4
+_021DD7EC:
+ mov r0, #0
+ str r0, [r1]
+_021DD7F4:
+ ldr r0, _021DD804 ; =UNK04_02210508
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_021DD800: .word UNK04_0221050C
+_021DD804: .word UNK04_02210508
+ arm_func_end MOD04_021DD718
+
+ arm_func_start MOD04_021DD808
+MOD04_021DD808: ; 0x021DD808
+ cmp r0, #0
+ ldrne r1, _021DD824 ; =UNK04_0221050C
+ ldrne r1, [r1]
+ strne r1, [r0]
+ ldr r0, _021DD828 ; =UNK04_02210508
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_021DD824: .word UNK04_0221050C
+_021DD828: .word UNK04_02210508
+ arm_func_end MOD04_021DD808
+
+ .section .bss
+
+ .global UNK04_02210508
+UNK04_02210508: ; 0x02210508
+ .space 0x4
+
+ .global UNK04_0221050C
+UNK04_0221050C: ; 0x0221050C
+ .space 0x4 \ No newline at end of file
diff --git a/arm9/modules/04/asm/mod04_021DD82C.s b/arm9/modules/04/asm/mod04_021DD82C.s
new file mode 100644
index 00000000..7c697698
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD82C.s
@@ -0,0 +1,145 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD82C
+MOD04_021DD82C: ; 0x021DD82C
+ ldr ip, _021DD840 ; =MOD04_021DD904
+ mov r1, r0
+ mov r0, #5
+ mov r2, #0
+ bx ip
+ .align 2, 0
+_021DD840: .word MOD04_021DD904
+ arm_func_end MOD04_021DD82C
+
+ arm_func_start MOD04_021DD844
+MOD04_021DD844: ; 0x021DD844
+ ldr ip, _021DD85C ; =MOD04_021DD8E8
+ mov r2, r1
+ mov r1, r0
+ mov r3, r2
+ mov r0, #5
+ bx ip
+ .align 2, 0
+_021DD85C: .word MOD04_021DD8E8
+ arm_func_end MOD04_021DD844
+
+ arm_func_start MOD04_021DD860
+MOD04_021DD860: ; 0x021DD860
+ ldr ip, _021DD870 ; =MOD04_021DD944
+ mov r1, r0
+ mov r0, #5
+ bx ip
+ .align 2, 0
+_021DD870: .word MOD04_021DD944
+ arm_func_end MOD04_021DD860
+
+ arm_func_start MOD04_021DD874
+MOD04_021DD874: ; 0x021DD874
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr ip, _021DD8E0 ; =UNK04_02210514
+ mov r4, r2
+ mov r7, r3
+ mov r5, r1
+ ldr r2, [sp, #0x18]
+ ldr r3, [ip]
+ mov r1, r7
+ mov r8, r0
+ blx r3
+ movs r6, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r5, #0
+ beq _021DD8D8
+ mov r0, r5
+ mov r1, r6
+ mov r2, r7
+ bl MI_CpuCopy8
+ ldr r1, _021DD8E4 ; =UNK04_02210510
+ mov r0, r8
+ ldr r3, [r1]
+ mov r1, r5
+ mov r2, r4
+ blx r3
+_021DD8D8:
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_021DD8E0: .word UNK04_02210514
+_021DD8E4: .word UNK04_02210510
+ arm_func_end MOD04_021DD874
+
+ arm_func_start MOD04_021DD8E8
+MOD04_021DD8E8: ; 0x021DD8E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov ip, #0x20
+ str ip, [sp]
+ bl MOD04_021DD874
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DD8E8
+
+ arm_func_start MOD04_021DD904
+MOD04_021DD904: ; 0x021DD904
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _021DD920 ; =UNK04_02210510
+ ldr r3, [r3]
+ blx r3
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD920: .word UNK04_02210510
+ arm_func_end MOD04_021DD904
+
+ arm_func_start MOD04_021DD924
+MOD04_021DD924: ; 0x021DD924
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _021DD940 ; =UNK04_02210514
+ ldr r3, [r3]
+ blx r3
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD940: .word UNK04_02210514
+ arm_func_end MOD04_021DD924
+
+ arm_func_start MOD04_021DD944
+MOD04_021DD944: ; 0x021DD944
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _021DD964 ; =UNK04_02210514
+ mov r2, #0x20
+ ldr r3, [r3]
+ blx r3
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD964: .word UNK04_02210514
+ arm_func_end MOD04_021DD944
+
+ arm_func_start MOD04_021DD968
+MOD04_021DD968: ; 0x021DD968
+ ldr r3, _021DD97C ; =UNK04_02210514
+ ldr r2, _021DD980 ; =UNK04_02210510
+ str r0, [r3]
+ str r1, [r2]
+ bx lr
+ .align 2, 0
+_021DD97C: .word UNK04_02210514
+_021DD980: .word UNK04_02210510
+ arm_func_end MOD04_021DD968
+
+ .section .bss
+
+ .global UNK04_02210510
+UNK04_02210510: ; 0x02210510
+ .space 0x4
+
+ .global UNK04_02210514
+UNK04_02210514: ; 0x02210514
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DD984.s b/arm9/modules/04/asm/mod04_021DD984.s
new file mode 100644
index 00000000..fa1292f3
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DD984.s
@@ -0,0 +1,469 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DD984
+MOD04_021DD984: ; 0x021DD984
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DDCE8
+ bl MOD04_021DDB14
+ cmp r0, #0
+ beq _021DD9CC
+ bl MOD04_021EBAB8
+ mov r2, r0
+ cmp r2, #0x63
+ ldr r1, _021DD9D8 ; =0xFFFF2D10
+ movhi r2, #0x63
+ mov r0, #8
+ sub r1, r1, r2
+ bl MOD04_021DD6B0
+ bl MOD04_021DDBBC
+ add sp, sp, #4
+ mov r0, #1
+ ldmfd sp!, {pc}
+_021DD9CC:
+ mov r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DD9D8: .word 0xFFFF2D10
+ arm_func_end MOD04_021DD984
+
+ arm_func_start MOD04_021DD9DC
+MOD04_021DD9DC: ; 0x021DD9DC
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x18
+ mov r1, #0
+ mov r2, #0x3c
+ mov r4, r0
+ bl MI_CpuFill8
+ mov r0, #0xff
+ str r0, [r4, #4]
+ bl MOD04_021DDC1C
+ cmp r0, #4
+ addne sp, sp, #0x18
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD04_021EBAB8
+ str r0, [r4]
+ bl OS_DisableInterrupts
+ mov r6, r0
+ bl WCM_GetApMacAddress
+ mov r5, r0
+ mov r1, #6
+ bl DC_InvalidateRange
+ cmp r5, #0
+ bne _021DDA4C
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x18
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DDA4C:
+ mov r0, r5
+ add r1, r4, #0x33
+ mov r2, #6
+ bl MI_CpuCopy8
+ ldr r0, [r4]
+ cmp r0, #0
+ blt _021DDAB0
+ cmp r0, #3
+ bge _021DDAB0
+ add r0, sp, #0
+ bl WCM_GetApEssid
+ mov r5, r0
+ mov r1, #0x20
+ bl DC_InvalidateRange
+ cmp r5, #0
+ bne _021DDAA0
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x18
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DDAA0:
+ ldrh r2, [sp]
+ mov r0, r5
+ add r1, r4, #0x12
+ bl MI_CpuCopy8
+_021DDAB0:
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add r0, sp, #2
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ add r0, sp, #2
+ bl MOD04_021EBA28
+ cmp r0, #1
+ bne _021DDAFC
+ ldrb r1, [sp, #8]
+ cmp r1, #0
+ beq _021DDAFC
+ sub r3, r1, #0x30
+ add r0, sp, #9
+ add r1, r4, #8
+ mov r2, #9
+ str r3, [r4, #4]
+ bl MI_CpuCopy8
+_021DDAFC:
+ mov r0, #1
+ add sp, sp, #0x18
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DD9DC
+
+ arm_func_start MOD04_021DDB08
+MOD04_021DDB08: ; 0x021DDB08
+ ldr ip, _021DDB10 ; =WCM_GetLinkLevel
+ bx ip
+ .align 2, 0
+_021DDB10: .word WCM_GetLinkLevel
+ arm_func_end MOD04_021DDB08
+
+ arm_func_start MOD04_021DDB14
+MOD04_021DDB14: ; 0x021DDB14
+ ldr r0, _021DDB3C ; =UNK04_02210518
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DDB34
+ ldrh r0, [r0, #4]
+ cmp r0, #6
+ moveq r0, #1
+ bxeq lr
+_021DDB34:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DDB3C: .word UNK04_02210518
+ arm_func_end MOD04_021DDB14
+
+ arm_func_start MOD04_021DDB40
+MOD04_021DDB40: ; 0x021DDB40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDBB8 ; =UNK04_02210518
+ ldr r2, [r0]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ ldrh r1, [r2, #4]
+ cmp r1, #8
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ cmp r1, #1
+ moveq r1, #0
+ streq r1, [r0]
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ mov r0, #5
+ strh r0, [r2, #4]
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ ldrne r0, _021DDBB8 ; =UNK04_02210518
+ movne r1, #0
+ strne r1, [r0]
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDBB8: .word UNK04_02210518
+ arm_func_end MOD04_021DDB40
+
+ arm_func_start MOD04_021DDBBC
+MOD04_021DDBBC: ; 0x021DDBBC
+ stmdb sp!, {r4, lr}
+ ldr r0, _021DDC18 ; =UNK04_02210518
+ ldr r1, [r0]
+ cmp r1, #0
+ ldmeqia sp!, {r4, pc}
+ ldrh r1, [r1, #4]
+ cmp r1, #1
+ moveq r1, #0
+ streq r1, [r0]
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ bne _021DDC08
+ mov r4, #0xa
+_021DDBF4:
+ mov r0, r4
+ bl OS_Sleep
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ beq _021DDBF4
+_021DDC08:
+ ldr r0, _021DDC18 ; =UNK04_02210518
+ mov r1, #0
+ str r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DDC18: .word UNK04_02210518
+ arm_func_end MOD04_021DDBBC
+
+ arm_func_start MOD04_021DDC1C
+MOD04_021DDC1C: ; 0x021DDC1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDCE4 ; =UNK04_02210518
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldrh r0, [r0, #4]
+ cmp r0, #1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021EBAE8
+ mov r1, r0
+ cmp r1, #5
+ bne _021DDC80
+ ldr r1, _021DDCE4 ; =UNK04_02210518
+ mov r0, #4
+ ldr r3, [r1]
+ mov r2, #1
+ strh r0, [r3, #4]
+ ldr r1, [r1]
+ add sp, sp, #4
+ strh r2, [r1, #6]
+ ldmfd sp!, {pc}
+_021DDC80:
+ cmp r1, #0
+ bge _021DDCD8
+ mvn r0, #9
+ cmp r1, r0
+ blt _021DDCB8
+ sub r1, r1, #0x2bc
+ mov r0, #9
+ bl MOD04_021DD6B0
+ ldr r1, _021DDCE4 ; =UNK04_02210518
+ mov r0, #8
+ ldr r1, [r1]
+ add sp, sp, #4
+ strh r0, [r1, #4]
+ ldmfd sp!, {pc}
+_021DDCB8:
+ mov r0, #5
+ bl MOD04_021DD6B0
+ ldr r1, _021DDCE4 ; =UNK04_02210518
+ mov r0, #7
+ ldr r1, [r1]
+ add sp, sp, #4
+ strh r0, [r1, #4]
+ ldmfd sp!, {pc}
+_021DDCD8:
+ mov r0, #2
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDCE4: .word UNK04_02210518
+ arm_func_end MOD04_021DDC1C
+
+ arm_func_start MOD04_021DDCE8
+MOD04_021DDCE8: ; 0x021DDCE8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDD78 ; =UNK04_02210518
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldrh r0, [r1, #4]
+ cmp r0, #2
+ bne _021DDD28
+ bl MOD04_021EBB80
+ ldr r1, _021DDD78 ; =UNK04_02210518
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1]
+ ldmfd sp!, {pc}
+_021DDD28:
+ cmp r0, #4
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrh r0, [r1, #6]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl WCM_GetPhase
+ cmp r0, #9
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DDD78 ; =UNK04_02210518
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #6
+ strh r3, [r2, #6]
+ ldr r0, [r0]
+ strh r1, [r0, #4]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDD78: .word UNK04_02210518
+ arm_func_end MOD04_021DDCE8
+
+ arm_func_start MOD04_021DDD7C
+MOD04_021DDD7C: ; 0x021DDD7C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DDDC8 ; =UNK04_02210518
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldr r0, [r1]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ mov r0, #3
+ strh r0, [r1, #4]
+ bl MOD04_021DDC1C
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDDC8: .word UNK04_02210518
+ arm_func_end MOD04_021DDD7C
+
+ arm_func_start MOD04_021DDDCC
+MOD04_021DDDCC: ; 0x021DDDCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _021DDE70 ; =UNK04_02210518
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DDE5C
+ ldrh r0, [r0, #4]
+ cmp r0, #1
+ addne sp, sp, #0xc
+ ldmneia sp!, {pc}
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ ldr r0, _021DDE70 ; =UNK04_02210518
+ ldr r3, _021DDE74 ; =MOD04_021DD944
+ ldr lr, [r0]
+ ldr r2, _021DDE78 ; =MOD04_021DD904
+ ldrh ip, [lr, #8]
+ add r0, sp, #0
+ mov r1, #2
+ strb ip, [sp, #8]
+ ldrh ip, [lr, #0xa]
+ strb ip, [sp, #9]
+ str r3, [sp]
+ str r2, [sp, #4]
+ strh r1, [lr, #4]
+ bl MOD04_021EBC60
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {pc}
+ mov r0, #9
+ mvn r1, #5
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+_021DDE5C:
+ mov r0, #9
+ mvn r1, #3
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDE70: .word UNK04_02210518
+_021DDE74: .word MOD04_021DD944
+_021DDE78: .word MOD04_021DD904
+ arm_func_end MOD04_021DDDCC
+
+ arm_func_start MOD04_021DDE7C
+MOD04_021DDE7C: ; 0x021DDE7C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #0
+ beq _021DDEA4
+ cmp r0, #1
+ beq _021DDEB4
+ cmp r0, #2
+ beq _021DDEC4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DDEA4:
+ ldr r0, _021DDED4 ; =UNK04_0220D280
+ bl MOD04_021D9C1C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DDEB4:
+ ldr r0, _021DDED8 ; =UNK04_0220D2A8
+ bl MOD04_021D9C1C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DDEC4:
+ ldr r0, _021DDEDC ; =UNK04_0220D2CC
+ bl MOD04_021D9C1C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DDED4: .word UNK04_0220D280
+_021DDED8: .word UNK04_0220D2A8
+_021DDEDC: .word UNK04_0220D2CC
+ arm_func_end MOD04_021DDE7C
+
+ arm_func_start MOD04_021DDEE0
+MOD04_021DDEE0: ; 0x021DDEE0
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r2, _021DDF3C ; =UNK04_02210518
+ mov r6, r0
+ ldr r2, [r2]
+ mov r5, r1
+ mov r4, r3
+ cmp r2, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ strh r5, [r6, #8]
+ mov r0, #1
+ strh r0, [r6, #0xa]
+ strh r0, [r6, #4]
+ mov r0, #0
+ ldr r1, _021DDF3C ; =UNK04_02210518
+ strh r0, [r6, #6]
+ str r6, [r1]
+ bl MOD04_021DDE7C
+ mov r0, r4
+ bl CPS_SetSslHandshakePriority
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DDF3C: .word UNK04_02210518
+ arm_func_end MOD04_021DDEE0
+
+ .section .data
+
+ .global UNK04_0220D280
+UNK04_0220D280: ; 0x0220D280
+ .asciz "https://nas.test.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220D2A8
+UNK04_0220D2A8: ; 0x0220D2A8
+ .asciz "https://nas.dev.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .global UNK04_0220D2CC
+UNK04_0220D2CC: ; 0x0220D2CC
+ .asciz "https://nas.nintendowifi.net/ac"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210518
+UNK04_02210518: ; 0x02210518
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DDF40.s b/arm9/modules/04/asm/mod04_021DDF40.s
new file mode 100644
index 00000000..6be2d80a
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DDF40.s
@@ -0,0 +1,291 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DDF40
+MOD04_021DDF40: ; 0x021DDF40
+ ldr ip, _021DDF48 ; =MOD04_021D9974
+ bx ip
+ .align 2, 0
+_021DDF48: .word MOD04_021D9974
+ arm_func_end MOD04_021DDF40
+
+ arm_func_start MOD04_021DDF4C
+MOD04_021DDF4C: ; 0x021DDF4C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c4
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #0x1c4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xba0]
+ cmp r0, #0
+ addeq sp, sp, #0x1c4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD04_021D988C
+ cmp r0, #0
+ beq _021DDFA4
+ cmp r0, #0x14
+ beq _021DDFE0
+ cmp r0, #0x15
+ beq _021DDFB0
+ b _021DE010
+_021DDFA4:
+ add sp, sp, #0x1c4
+ mov r0, #2
+ ldmfd sp!, {pc}
+_021DDFB0:
+ bl MOD04_021D991C
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r2, _021DE058 ; =0x00001E1C
+ ldr r1, [r0]
+ mov r0, #4
+ bl MOD04_021DD904
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #0x1c4
+ mov r0, #3
+ ldmfd sp!, {pc}
+_021DDFE0:
+ bl MOD04_021D991C
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r2, _021DE058 ; =0x00001E1C
+ ldr r1, [r0]
+ mov r0, #4
+ bl MOD04_021DD904
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #0x1c4
+ mov r0, #5
+ ldmfd sp!, {pc}
+_021DE010:
+ add r0, sp, #0
+ bl MOD04_021D97F8
+ bl MOD04_021D991C
+ ldr r0, _021DE054 ; =UNK04_0221051C
+ ldr r2, _021DE058 ; =0x00001E1C
+ ldr r1, [r0]
+ mov r0, #4
+ bl MOD04_021DD904
+ ldr r1, [sp]
+ ldr r2, _021DE054 ; =UNK04_0221051C
+ mov r3, #0
+ mov r0, #2
+ str r3, [r2]
+ bl MOD04_021DD6B0
+ mov r0, #4
+ add sp, sp, #0x1c4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DE054: .word UNK04_0221051C
+_021DE058: .word 0x00001E1C
+ arm_func_end MOD04_021DDF4C
+
+ arm_func_start MOD04_021DE05C
+MOD04_021DE05C: ; 0x021DE05C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DE130 ; =UNK04_0221051C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DE078
+ bl OS_Terminate
+_021DE078:
+ ldr r1, _021DE134 ; =0x00001E1C
+ mov r0, #4
+ bl MOD04_021DD944
+ ldr r1, _021DE130 ; =UNK04_0221051C
+ cmp r0, #0
+ str r0, [r1]
+ bne _021DE0AC
+ ldr r1, _021DE138 ; =0xFFFFB17C
+ mov r0, #9
+ bl MOD04_021DD6B0
+ add sp, sp, #4
+ mov r0, #0
+ ldmfd sp!, {pc}
+_021DE0AC:
+ ldr r2, _021DE134 ; =0x00001E1C
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _021DE130 ; =UNK04_0221051C
+ ldr r1, _021DE13C ; =0x00001C44
+ ldr r2, [r0]
+ ldr r0, _021DE140 ; =UNK04_0220D2EC
+ add r1, r2, r1
+ mov r2, #9
+ bl MI_CpuCopy8
+ ldr r1, _021DE130 ; =UNK04_0221051C
+ ldr r2, _021DE144 ; =MOD04_021DD944
+ ldr r0, [r1]
+ ldr r3, _021DE148 ; =MOD04_021DD904
+ add r0, r0, #0x1000
+ str r2, [r0, #0xc50]
+ ldr r0, [r1]
+ ldr r2, _021DE14C ; =0x00001C10
+ add r0, r0, #0x1000
+ str r3, [r0, #0xc54]
+ ldr r1, [r1]
+ add r0, r1, r2
+ bl MOD04_021D9ACC
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ ldr r1, _021DE138 ; =0xFFFFB17C
+ mov r0, #9
+ bl MOD04_021DD6B0
+ mov r0, #0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DE130: .word UNK04_0221051C
+_021DE134: .word 0x00001E1C
+_021DE138: .word 0xFFFFB17C
+_021DE13C: .word 0x00001C44
+_021DE140: .word UNK04_0220D2EC
+_021DE144: .word MOD04_021DD944
+_021DE148: .word MOD04_021DD904
+_021DE14C: .word 0x00001C10
+ arm_func_end MOD04_021DE05C
+
+ arm_func_start MOD04_021DE150
+MOD04_021DE150: ; 0x021DE150
+ stmdb sp!, {r4, lr}
+ bl MOD04_021DCF00
+ mov r4, r0
+ sub r0, r4, #3
+ cmp r0, #2
+ bhi _021DE16C
+ bl MOD04_021DD26C
+_021DE16C:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DE150
+
+ arm_func_start MOD04_021DE174
+MOD04_021DE174: ; 0x021DE174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ ldr r0, _021DE1EC ; =MOD04_021DD944
+ ldr r1, _021DE1F0 ; =MOD04_021DD904
+ bl MOD04_021DD2C4
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, r5
+ bl strlen
+ cmp r0, #0
+ bne _021DE1C0
+ ldr r0, _021DE1F4 ; =UNK04_0220D2F0
+ mov r1, r4
+ bl MOD04_021DCFFC
+ b _021DE1CC
+_021DE1C0:
+ mov r0, r5
+ mov r1, r4
+ bl MOD04_021DCFFC
+_021DE1CC:
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #1
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD04_021DD26C
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DE1EC: .word MOD04_021DD944
+_021DE1F0: .word MOD04_021DD904
+_021DE1F4: .word UNK04_0220D2F0
+ arm_func_end MOD04_021DE174
+
+ arm_func_start MOD04_021DE1F8
+MOD04_021DE1F8: ; 0x021DE1F8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DE2C4 ; =UNK04_022104F8
+ mov r5, r0
+ ldr r2, [r2]
+ mov r4, r1
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ bl RTC_GetDate
+ cmp r0, #0
+ bne _021DE23C
+ mov r0, r4
+ bl RTC_GetTime
+ cmp r0, #0
+ beq _021DE248
+_021DE23C:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DE248:
+ mov r0, r5
+ mov r1, r4
+ bl RTC_ConvertDateTimeToSecond
+ mvn r2, #0
+ cmp r1, r2
+ cmpeq r0, r2
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, _021DE2C8 ; =UNK04_022104FC
+ mov ip, #0
+ ldr lr, [r2]
+ ldr r3, [r2, #4]
+ subs r2, r0, lr
+ sbc r3, r1, r3
+ subs r0, r2, ip
+ sbcs r0, r3, ip
+ blt _021DE2A0
+ ldr r0, _021DE2CC ; =0xBC19137F
+ subs r0, r0, r2
+ sbcs r0, ip, r3
+ bge _021DE2AC
+_021DE2A0:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021DE2AC:
+ mov r0, r5
+ mov r1, r4
+ bl RTC_ConvertSecondToDateTime
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DE2C4: .word UNK04_022104F8
+_021DE2C8: .word UNK04_022104FC
+_021DE2CC: .word 0xBC19137F
+ arm_func_end MOD04_021DE1F8
+
+ .section .data
+
+ .global UNK04_0220D2EC
+UNK04_0220D2EC: ; 0x0220D2EC
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D2F0
+UNK04_0220D2F0: ; 0x0220D2F0
+ .asciz "0000"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_0221051C
+UNK04_0221051C: ; 0x0221051C
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DE2D0.s b/arm9/modules/04/asm/mod04_021DE2D0.s
new file mode 100644
index 00000000..27ad8bc1
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DE2D0.s
@@ -0,0 +1,482 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DE2D0
+MOD04_021DE2D0: ; 0x021DE2D0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, r5
+ mov r1, r4
+ bl MOD04_02207330
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ arm_func_end MOD04_021DE2D0
+
+ arm_func_start MOD04_021DE308
+MOD04_021DE308: ; 0x021DE308
+ 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_02207158
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DE308
+
+ arm_func_start MOD04_021DE330
+MOD04_021DE330: ; 0x021DE330
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD04_0220733C
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DE330
+
+ arm_func_start MOD04_021DE364
+MOD04_021DE364: ; 0x021DE364
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #0xb0
+ mul r2, r4, r0
+ mov r0, r6
+ mov r1, #0
+ bl MI_CpuFill8
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD04_022074EC
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DE364
+
+ arm_func_start MOD04_021DE3AC
+MOD04_021DE3AC: ; 0x021DE3AC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, r4
+ bl MOD04_022077A8
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DE3AC
+
+ arm_func_start MOD04_021DE3D0
+MOD04_021DE3D0: ; 0x021DE3D0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD04_022069DC
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021DE3D0
+
+ arm_func_start MOD04_021DE404
+MOD04_021DE404: ; 0x021DE404
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DE454 ; =UNK04_02210520
+ ldr r2, [r1]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ str r0, [r2, #4]
+ ldr r0, [r1]
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ bne _021DE440
+ bl MOD04_021DE730
+ b _021DE448
+_021DE440:
+ ldr r0, _021DE458 ; =MOD04_021DE730
+ bl MOD04_02206E6C
+_021DE448:
+ mov r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DE454: .word UNK04_02210520
+_021DE458: .word MOD04_021DE730
+ arm_func_end MOD04_021DE404
+
+ arm_func_start MOD04_021DE45C
+MOD04_021DE45C: ; 0x021DE45C
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, #0xa80
+ mov r1, #0x20
+ bl MOD04_021DE884
+ ldr r2, _021DE568 ; =UNK04_02210520
+ mov r1, #0
+ str r0, [r2]
+ str r1, [r0, #0x48]
+ ldr r0, [r2]
+ mov r2, #0xa80
+ bl MI_CpuFill8
+ ldr r0, _021DE568 ; =UNK04_02210520
+ mov r1, r5
+ ldr r3, [r0]
+ mov r2, #0x1f
+ str r6, [r3]
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl strncpy
+ ldr r0, _021DE568 ; =UNK04_02210520
+ mov r1, r4
+ ldr r0, [r0]
+ mov r2, #0x1f
+ add r0, r0, #0x28
+ bl strncpy
+ ldr r1, _021DE568 ; =UNK04_02210520
+ ldr r0, _021DE56C ; =UNK04_0220D2F8
+ ldr r1, [r1]
+ add r1, r1, #0x4c
+ bl MOD04_021DE174
+ cmp r0, #0
+ bne _021DE520
+ ldr r0, _021DE568 ; =UNK04_02210520
+ ldr r0, [r0]
+ bl MOD04_021DE86C
+ ldr r1, _021DE568 ; =UNK04_02210520
+ mov r0, #0
+ str r0, [r1]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_021DE520:
+ ldr r0, _021DE568 ; =UNK04_02210520
+ mov r2, #0x800
+ ldr r0, [r0]
+ ldr r1, _021DE570 ; =MOD04_021DE574
+ add r0, r0, #0x9c0
+ mov r3, r0
+ str r2, [sp]
+ mov ip, #0x10
+ mov r2, #0
+ str ip, [sp, #4]
+ bl OS_CreateThread
+ ldr r0, _021DE568 ; =UNK04_02210520
+ ldr r0, [r0]
+ add r0, r0, #0x9c0
+ bl OS_WakeupThreadDirect
+ mov r0, #1
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DE568: .word UNK04_02210520
+_021DE56C: .word UNK04_0220D2F8
+_021DE570: .word MOD04_021DE574
+ arm_func_end MOD04_021DE45C
+
+ arm_func_start MOD04_021DE574
+MOD04_021DE574: ; 0x021DE574
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x2a4
+ mov r7, #0
+ mov r6, #6
+ mvn r5, #0
+ mov r4, #0x64
+_021DE58C:
+ bl MOD04_021DE150
+ cmp r0, #3
+ bne _021DE6AC
+ ldr r0, _021DE718 ; =UNK04_02210520
+ ldr r5, [r0]
+ add r0, r5, #0x50
+ bl strlen
+ mov r4, r0
+ ldr r0, _021DE71C ; =UNK04_0220D300
+ bl strlen
+ add r0, r4, r0
+ cmp r0, #0xff
+ bls _021DE5D8
+ mov r0, #0
+ mov r1, #8
+ mvn r2, #0
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE5D8:
+ ldr r2, _021DE720 ; =UNK04_0220D314
+ add r0, sp, #0x10
+ add r3, r5, #0x50
+ mov r1, #0x100
+ bl OS_SNPrintf
+ ldr r0, _021DE718 ; =UNK04_02210520
+ ldr r4, [r0]
+ add r0, r4, #0x91
+ bl strlen
+ mov r1, r0
+ add r2, sp, #0x110
+ add r0, r4, #0x91
+ mov r3, #0x190
+ bl MOD04_021DD4FC
+ cmp r0, #0
+ bge _021DE630
+ mov r0, #0
+ mov r1, #8
+ mvn r2, #0
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE630:
+ ldr r0, _021DE718 ; =UNK04_02210520
+ ldr r4, _021DE724 ; =MOD04_021DE774
+ ldr r2, [r0]
+ ldr r0, _021DE728 ; =MOD04_021DE884
+ add r1, r2, #8
+ str r1, [sp]
+ add r1, r2, #0x28
+ str r1, [sp, #4]
+ ldr r1, _021DE72C ; =MOD04_021DE86C
+ add r2, sp, #0x10
+ add r3, sp, #0x110
+ str r4, [sp, #8]
+ bl MOD04_02206EFC
+ cmp r0, #0
+ bne _021DE684
+ mov r0, #0
+ mov r1, #8
+ mvn r2, #0
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE684:
+ ldr r1, _021DE718 ; =UNK04_02210520
+ mov r0, #0
+ ldr r3, [r1]
+ mov r4, #1
+ mov r1, r0
+ mvn r2, #0
+ str r4, [r3, #0x48]
+ bl MOD04_021DE774
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE6AC:
+ cmp r0, #4
+ bne _021DE6EC
+ add r0, sp, #0xc
+ bl MOD04_021DD808
+ ldr r1, [sp, #0xc]
+ mov r0, #0xe
+ bl MOD04_021DD6B0
+ ldr r1, _021DE718 ; =UNK04_02210520
+ mov r0, #0
+ ldr r2, [r1]
+ mov r1, #3
+ ldr r3, [r2]
+ mvn r2, #0
+ blx r3
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DE6EC:
+ cmp r0, #5
+ bne _021DE704
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD04_021DE774
+_021DE704:
+ mov r0, r4
+ bl OS_Sleep
+ b _021DE58C
+ arm_func_end MOD04_021DE574
+
+ arm_func_start MOD04_021DE710
+MOD04_021DE710: ; 0x021DE710
+ add sp, sp, #0x2a4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE718: .word UNK04_02210520
+_021DE71C: .word UNK04_0220D300
+_021DE720: .word UNK04_0220D314
+_021DE724: .word MOD04_021DE774
+_021DE728: .word MOD04_021DE884
+_021DE72C: .word MOD04_021DE86C
+ arm_func_end MOD04_021DE710
+
+ arm_func_start MOD04_021DE730
+MOD04_021DE730: ; 0x021DE730
+ stmdb sp!, {r4, lr}
+ ldr r0, _021DE770 ; =UNK04_02210520
+ ldr r0, [r0]
+ add r0, r0, #0x9c0
+ bl OS_JoinThread
+ ldr r0, _021DE770 ; =UNK04_02210520
+ ldr r0, [r0]
+ ldr r4, [r0, #4]
+ bl MOD04_021DE86C
+ ldr r0, _021DE770 ; =UNK04_02210520
+ mov r1, #0
+ str r1, [r0]
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ blx r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DE770: .word UNK04_02210520
+ arm_func_end MOD04_021DE730
+
+ arm_func_start MOD04_021DE774
+MOD04_021DE774: ; 0x021DE774
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r5, r1
+ mov r6, r0
+ mov r4, r2
+ bne _021DE79C
+ ldr r3, _021DE854 ; =UNK04_02210520
+ ldr r3, [r3]
+ ldr r3, [r3]
+ blx r3
+ ldmia sp!, {r4, r5, r6, pc}
+_021DE79C:
+ cmp r5, #8
+ addls pc, pc, r5, lsl #2
+ b _021DE830
+_021DE7A8: ; jump table
+ b _021DE830 ; case 0
+ b _021DE7CC ; case 1
+ b _021DE7DC ; case 2
+ b _021DE7E4 ; case 3
+ b _021DE7F4 ; case 4
+ b _021DE804 ; case 5
+ b _021DE834 ; case 6
+ b _021DE818 ; case 7
+ b _021DE820 ; case 8
+_021DE7CC:
+ ldr r1, _021DE858 ; =0xFFFF86E7
+ mov r0, #9
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE7DC:
+ bl OS_Terminate
+ b _021DE834
+_021DE7E4:
+ ldr r1, _021DE85C ; =0xFFFF86D4
+ mov r0, #0xf
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE7F4:
+ ldr r1, _021DE860 ; =0xFFFF86CA
+ mov r0, #0xe
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE804:
+ ldr r1, _021DE864 ; =0xFFFF86E8
+ mov r0, #0xe
+ sub r1, r1, r4
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE818:
+ bl OS_Terminate
+ b _021DE834
+_021DE820:
+ ldr r1, _021DE868 ; =0xFFFF86DF
+ mov r0, #9
+ bl MOD04_021DD6B0
+ b _021DE834
+_021DE830:
+ bl OS_Terminate
+_021DE834:
+ ldr r1, _021DE854 ; =UNK04_02210520
+ mov r0, r6
+ ldr r2, [r1]
+ mov r1, r5
+ ldr r3, [r2]
+ mov r2, r4
+ blx r3
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DE854: .word UNK04_02210520
+_021DE858: .word 0xFFFF86E7
+_021DE85C: .word 0xFFFF86D4
+_021DE860: .word 0xFFFF86CA
+_021DE864: .word 0xFFFF86E8
+_021DE868: .word 0xFFFF86DF
+ arm_func_end MOD04_021DE774
+
+ arm_func_start MOD04_021DE86C
+MOD04_021DE86C: ; 0x021DE86C
+ ldr ip, _021DE880 ; =MOD04_021DD904
+ mov r1, r0
+ mov r0, #6
+ mov r2, #0
+ bx ip
+ .align 2, 0
+_021DE880: .word MOD04_021DD904
+ arm_func_end MOD04_021DE86C
+
+ arm_func_start MOD04_021DE884
+MOD04_021DE884: ; 0x021DE884
+ ldr ip, _021DE898 ; =MOD04_021DD924
+ mov r2, r1
+ mov r1, r0
+ mov r0, #6
+ bx ip
+ .align 2, 0
+_021DE898: .word MOD04_021DD924
+ arm_func_end MOD04_021DE884
+
+ .section .data
+
+ .global UNK04_0220D2F8
+UNK04_0220D2F8: ; 0x0220D2F8
+ .asciz "9000"
+
+ .balign 4, 0
+ .global UNK04_0220D300
+UNK04_0220D300: ; 0x0220D300
+ .asciz "https:///download"
+
+ .balign 4, 0
+ .global UNK04_0220D314
+UNK04_0220D314: ; 0x0220D314
+ .asciz "https://%s/download"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_02210520
+UNK04_02210520: ; 0x02210520
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DE89C.s b/arm9/modules/04/asm/mod04_021DE89C.s
new file mode 100644
index 00000000..f4ff2977
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DE89C.s
@@ -0,0 +1,236 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DE89C
+MOD04_021DE89C: ; 0x021DE89C
+ ldrh r1, [r0]
+ mov r2, #0
+ cmp r1, #0
+ beq _021DE8C0
+_021DE8AC:
+ add r2, r2, #1
+ mov r1, r2, lsl #1
+ ldrh r1, [r0, r1]
+ cmp r1, #0
+ bne _021DE8AC
+_021DE8C0:
+ mov r0, r2
+ bx lr
+ arm_func_end MOD04_021DE89C
+
+ arm_func_start MOD04_021DE8C8
+MOD04_021DE8C8: ; 0x021DE8C8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r2, _021DE9E4 ; =UNK04_02210524
+ mov r1, #0
+ ldr r3, [r2, #4]
+ ldr ip, [r2]
+ cmp r3, r1
+ mov r4, r0
+ cmpeq ip, r1
+ bne _021DE98C
+ ldr r0, [r2, #0xc]
+ ldr r3, [r2, #8]
+ cmp r0, r1
+ cmpeq r3, r1
+ bne _021DE98C
+ ldr r0, [r2, #0x14]
+ ldr r2, [r2, #0x10]
+ cmp r0, r1
+ cmpeq r2, r1
+ bne _021DE98C
+ add r0, sp, #0
+ bl OS_GetMacAddress
+ bl OS_GetTick
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ mov lr, r2, lsr #0x18
+ mov r2, r1, lsl #0x18
+ orr lr, lr, r3, lsl #8
+ mvn r1, #0xff000000
+ mov ip, r3, lsr #0x18
+ and r1, lr, r1
+ orr r3, r1, r0, lsl #24
+ and r1, ip, #0
+ orr r2, r2, r0, lsr #8
+ orr r1, r1, r2
+ str r1, [sp, #4]
+ ldr ip, _021DE9E4 ; =UNK04_02210524
+ add r0, sp, #0
+ str r3, [sp]
+ ldmia r0, {r2, r3}
+ stmia ip, {r2, r3}
+ ldr r3, _021DE9E8 ; =0x6C078965
+ ldr r2, _021DE9EC ; =0x5D588B65
+ ldr r1, _021DE9F0 ; =0x00269EC3
+ mov r0, #0
+ str r3, [ip, #8]
+ str r2, [ip, #0xc]
+ str r1, [ip, #0x10]
+ str r0, [ip, #0x14]
+_021DE98C:
+ ldr r1, _021DE9E4 ; =UNK04_02210524
+ ldr r3, [r1, #8]
+ ldr r2, [r1]
+ ldr r0, [r1, #4]
+ umull lr, ip, r3, r2
+ mla ip, r3, r0, ip
+ ldr r0, [r1, #0xc]
+ ldr r3, [r1, #0x10]
+ mla ip, r0, r2, ip
+ adds r2, r3, lr
+ ldr r0, [r1, #0x14]
+ str r2, [r1]
+ adc r0, r0, ip
+ cmp r4, #0
+ str r0, [r1, #4]
+ movne r3, #0
+ umullne r2, r1, r0, r4
+ mlane r1, r0, r3, r1
+ mlane r1, r3, r4, r1
+ movne r0, r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DE9E4: .word UNK04_02210524
+_021DE9E8: .word 0x6C078965
+_021DE9EC: .word 0x5D588B65
+_021DE9F0: .word 0x00269EC3
+ arm_func_end MOD04_021DE8C8
+
+ arm_func_start MOD04_021DE9F4
+MOD04_021DE9F4: ; 0x021DE9F4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r4, r1
+ mov r7, r0
+ mov r6, r3
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r0, r2
+ mov r1, r6
+ bl strchr
+ movs r5, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+_021DEA30:
+ mov r0, r7
+ bl strlen
+ mov r2, r0
+ mov r1, r7
+ add r0, r5, #1
+ bl strncmp
+ cmp r0, #0
+ bne _021DEA68
+ mov r0, r7
+ bl strlen
+ add r0, r0, r5
+ ldrsb r0, [r0, #1]
+ cmp r6, r0
+ beq _021DEAA4
+_021DEA68:
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ cmp r0, #0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r1, r6
+ add r0, r0, #1
+ bl strchr
+ movs r5, r0
+ bne _021DEA30
+ add sp, sp, #4
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DEAA4:
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ movs r5, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ cmp r0, #0
+ addne r1, r5, #1
+ subne r6, r0, r1
+ bne _021DEAE8
+ add r0, r5, #1
+ bl strlen
+ mov r6, r0
+_021DEAE8:
+ mov r0, r4
+ mov r2, r6
+ add r1, r5, #1
+ bl strncpy
+ mov r1, #0
+ mov r0, r6
+ strb r1, [r4, r6]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021DE9F4
+
+ arm_func_start MOD04_021DEB0C
+MOD04_021DEB0C: ; 0x021DEB0C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r2
+ mov r7, r0
+ mov r6, r1
+ mov r4, r3
+ mov r0, r5
+ mov r1, #0
+ bl strchr
+ mov r2, r0
+ mov r0, r7
+ mov r1, r6
+ mov r3, r4
+ bl MOD04_021DEB54
+ mov r0, r5
+ bl strlen
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021DEB0C
+
+ arm_func_start MOD04_021DEB54
+MOD04_021DEB54: ; 0x021DEB54
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ str r0, [sp]
+ mov r4, r2
+ str r3, [sp, #4]
+ str r1, [sp, #8]
+ ldr r2, _021DEB8C ; =UNK04_0220D328
+ mov r0, r4
+ mov r1, #0x1000
+ bl OS_SNPrintf
+ mov r0, r4
+ bl strlen
+ add sp, sp, #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DEB8C: .word UNK04_0220D328
+ arm_func_end MOD04_021DEB54
+
+ .section .data
+
+ .global UNK04_0220D328
+UNK04_0220D328: ; 0x0220D328
+ .asciz "%c%s%c%s"
+
+ .balign 4, 0
+
+ .section .bss
+
+ .global UNK04_02210524
+UNK04_02210524: ; 0x02210524
+ .space 0x18
diff --git a/arm9/modules/04/asm/mod04_021DEB90.s b/arm9/modules/04/asm/mod04_021DEB90.s
new file mode 100644
index 00000000..f0917879
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DEB90.s
@@ -0,0 +1,2044 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DEB90
+MOD04_021DEB90: ; 0x021DEB90
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD43C
+ bl MOD04_021EFB28
+ ldr r2, _021DEBCC ; =UNK04_02210540
+ ldr r1, _021DEBD0 ; =0xFFFE8515
+ str r0, [r2]
+ mov r0, #9
+ bl MOD04_021DD6B0
+ ldr r0, _021DEBD4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DEBCC: .word UNK04_02210540
+_021DEBD0: .word 0xFFFE8515
+_021DEBD4: .word UNK04_0221053C
+ arm_func_end MOD04_021DEB90
+
+ arm_func_start MOD04_021DEBD8
+MOD04_021DEBD8: ; 0x021DEBD8
+ ldr ip, _021DEBE0 ; =MOD04_021EAC1C
+ bx ip
+ .align 2, 0
+_021DEBE0: .word MOD04_021EAC1C
+ arm_func_end MOD04_021DEBD8
+
+ arm_func_start MOD04_021DEBE4
+MOD04_021DEBE4: ; 0x021DEBE4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov r7, #0
+ mov fp, r0
+ mov sb, r1
+ mov sl, r7
+ bl MOD04_021E852C
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp sb, #4
+ addls pc, pc, sb, lsl #2
+ b _021DEC48
+_021DEC18: ; jump table
+ b _021DEC2C ; case 0
+ b _021DEC2C ; case 1
+ b _021DEC34 ; case 2
+ b _021DEC34 ; case 3
+ b _021DEC40 ; case 4
+_021DEC2C:
+ mov r4, r7
+ b _021DEC48
+_021DEC34:
+ mov r4, #6
+ ldr r6, _021DEF4C ; =0xFFFFE250
+ b _021DEC48
+_021DEC40:
+ ldr r6, _021DEF50 ; =0xFFFFE24F
+ mov r4, #9
+_021DEC48:
+ cmp r4, #0
+ bne _021DED00
+ mov r0, fp
+ bl MOD04_021FD3C4
+ movs r7, r0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldrb r8, [r7, #1]
+ ldr r1, [r0]
+ mov r5, #1
+ mov r0, r5,lsl r8
+ ldr r1, [r1, #0x644]
+ ands r0, r1, r0
+ mov r0, r8
+ moveq r5, #0
+ bl MOD04_021EA9D8
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ bne _021DECA8
+ cmp sb, #0
+ beq _021DECBC
+_021DECA8:
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DECC0
+ cmp r8, #0
+ bne _021DECC0
+_021DECBC:
+ mov sl, #1
+_021DECC0:
+ mov r0, r8
+ bl MOD04_021DF56C
+ ldr r1, _021DEF54 ; =UNK04_0221053C
+ ldrb r7, [r7]
+ ldr r2, _021DEF58 ; =UNK04_02210544
+ mov fp, #0
+ ldr r3, [r1]
+ str fp, [r2, r7, lsl #2]
+ ldrb r2, [r3, #0x361]
+ mov r7, r0
+ sub r0, r2, #1
+ strb r0, [r3, #0x361]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x368]
+ sub r0, r0, #1
+ strb r0, [r1, #0x368]
+_021DED00:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DED58
+ ldr r0, [r1, #0x24]
+ cmp r0, #6
+ bne _021DED58
+ cmp r5, #0
+ bne _021DED58
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r4, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E85D4
+ mov r0, r7
+ bl MOD04_021E8A50
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DED58:
+ mov r0, r4
+ mov r1, r6
+ mov r2, r7
+ bl MOD04_021E8A74
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r4, #0
+ beq _021DED90
+ mov r0, r4
+ mov r1, r6
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DED90:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEE04
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DEDBC
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DEE04
+_021DEDBC:
+ ldr r2, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x361]
+ add r6, r0, #2
+ add r3, r1, r6, lsl #2
+ ldr r3, [r3, #0x448]
+ cmp r3, #0
+ beq _021DEE04
+ add r3, r1, r6
+ ldrb r3, [r3, #0x624]
+ add r0, r0, #1
+ add r0, r1, r0
+ strb r3, [r0, #0x624]
+ ldr r0, [r2]
+ ldrb r1, [r0, #0x361]
+ add r0, r1, #1
+ add r1, r1, #3
+ bl MOD04_021E8830
+_021DEE04:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ bne _021DEE4C
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEE2C
+ bl MOD04_021E85D4
+ b _021DEE68
+_021DEE2C:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ bne _021DEE68
+ ldr r1, _021DEF5C ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ b _021DEE68
+_021DEE4C:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ bne _021DEE68
+ ldr r1, _021DEF5C ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+_021DEE68:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #0
+ beq _021DEE88
+ ldrb r0, [r1, #0x369]
+ cmp r0, #1
+ bne _021DEEA4
+_021DEE88:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x368]
+ strb r1, [r2, #0x36a]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x364]
+ bl MOD04_02202308
+_021DEEA4:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r6, [r0]
+ ldr r0, [r6, #0x90]
+ cmp r0, #0
+ beq _021DEF00
+ cmp r5, #0
+ beq _021DEF00
+ cmp sb, #0
+ moveq r5, #1
+ mov r0, r7
+ movne r5, #0
+ bl MOD04_021E1F18
+ str r0, [sp]
+ ldr r1, [r6, #0x94]
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ str r1, [sp, #4]
+ ldr r1, [r0]
+ mov r0, r4
+ ldr r4, [r1, #0x90]
+ mov r1, r5
+ mov r2, sl
+ mov r3, r8
+ blx r4
+_021DEF00:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEF24
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DEF24:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_02200D6C
+ bl MOD04_021E8DC0
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DEF4C: .word 0xFFFFE250
+_021DEF50: .word 0xFFFFE24F
+_021DEF54: .word UNK04_0221053C
+_021DEF58: .word UNK04_02210544
+_021DEF5C: .word UNK04_0220D334
+ arm_func_end MOD04_021DEBE4
+
+ arm_func_start MOD04_021DEF60
+MOD04_021DEF60: ; 0x021DEF60
+ ldr ip, _021DEF68 ; =MOD04_021EAC5C
+ bx ip
+ .align 2, 0
+_021DEF68: .word MOD04_021EAC5C
+ arm_func_end MOD04_021DEF60
+
+ arm_func_start MOD04_021DEF6C
+MOD04_021DEF6C: ; 0x021DEF6C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ add r4, sp, #0
+ mov r3, #0
+ strb r3, [r4]
+ strb r3, [r4, #1]
+ strb r3, [r4, #2]
+ strb r3, [r4, #3]
+ strb r3, [r4, #4]
+ strb r3, [r4, #5]
+ strb r3, [r4, #6]
+ strb r3, [r4, #7]
+ strb r3, [r4, #8]
+ strb r3, [r4, #9]
+ strb r3, [r4, #0xa]
+ mov r5, r1
+ strb r3, [r4, #0xb]
+ ldr r4, [r5, #8]
+ mov r6, r0
+ bl MOD04_021E2068
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0C8 ; =UNK04_0220D338
+ bl strlen
+ mov r2, r0
+ ldr r1, _021DF0C8 ; =UNK04_0220D338
+ mov r0, r4
+ bl memcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0C8 ; =UNK04_0220D338
+ bl strlen
+ add r4, r4, r0
+ mov r0, r4
+ mov r1, #0x76
+ bl strchr
+ sub r7, r0, r4
+ add r0, sp, #0
+ mov r1, r4
+ mov r2, r7
+ bl strncpy
+ cmp r7, #0xa
+ addhi sp, sp, #0xc
+ ldmhiia sp!, {r4, r5, r6, r7, pc}
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0CC ; =UNK04_0220D340
+ add r1, r7, #1
+ add r4, r4, r1
+ bl strlen
+ mov r2, r0
+ ldr r1, _021DF0CC ; =UNK04_0220D340
+ mov r0, r4
+ bl memcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0D0 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #5
+ beq _021DF0A8
+ cmp r0, #6
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF0A8
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021DF0A8:
+ ldr r0, _021DF0CC ; =UNK04_0220D340
+ bl strlen
+ add r2, r4, r0
+ ldr r1, [r5]
+ mov r0, r6
+ bl MOD04_021E8EF4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF0C8: .word UNK04_0220D338
+_021DF0CC: .word UNK04_0220D340
+_021DF0D0: .word UNK04_0221053C
+ arm_func_end MOD04_021DEF6C
+
+ arm_func_start MOD04_021DF0D4
+MOD04_021DF0D4: ; 0x021DF0D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, [r1, #4]
+ ldr r0, _021DF120 ; =0x00000603
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DF124 ; =0x00000901
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DF128 ; =0x00000B01
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #3
+ bl MOD04_021DF414
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF120: .word 0x00000603
+_021DF124: .word 0x00000901
+_021DF128: .word 0x00000B01
+ arm_func_end MOD04_021DF0D4
+
+ arm_func_start MOD04_021DF12C
+MOD04_021DF12C: ; 0x021DF12C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ movs r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bne _021DF174
+ cmp r6, #0
+ beq _021DF174
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x4f4]
+ cmp r0, #0
+ bne _021DF1D8
+ bl MOD04_021E8DC0
+ mov r0, #3
+ bl MOD04_021DF5CC
+ b _021DF1D8
+_021DF174:
+ cmp r7, #0
+ bne _021DF1D8
+ mov r0, #6
+ bl MOD04_021DF5CC
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x361]
+ cmp r1, #0
+ blt _021DF1D8
+ ldr r2, [r3, #0x64]
+_021DF1A0:
+ add r1, r3, r0, lsl #2
+ ldr r1, [r1, #0x448]
+ cmp r2, r1
+ bne _021DF1C8
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r1]
+ add r0, r1, r0
+ ldrb r0, [r0, #0x624]
+ strb r0, [r1, #0x2c]
+ b _021DF1D8
+_021DF1C8:
+ ldrb r1, [r3, #0x361]
+ add r0, r0, #1
+ cmp r0, r1
+ ble _021DF1A0
+_021DF1D8:
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r0, _021DF2B0 ; =0x00000624
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x361]
+ add r0, r2, r0
+ add r1, r1, #1
+ bl MOD04_021DF530
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r1]
+ str r0, [r1, #0x644]
+ bl MOD04_021E8780
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF224
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DF258
+_021DF224:
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [sp, #0x20]
+ ldr r3, [r0]
+ mov r0, r7
+ str r1, [sp]
+ ldr r2, [r3, #0x8c]
+ mov r1, r6
+ str r2, [sp, #4]
+ ldr r6, [r3, #0x88]
+ mov r2, r5
+ mov r3, r4
+ blx r6
+ b _021DF26C
+_021DF258:
+ ldr r2, [r1, #0x84]
+ ldr r3, [r1, #0x80]
+ mov r0, r7
+ mov r1, r6
+ blx r3
+_021DF26C:
+ cmp r7, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF2AC: .word UNK04_0221053C
+_021DF2B0: .word 0x00000624
+ arm_func_end MOD04_021DF12C
+
+ arm_func_start MOD04_021DF2B4
+MOD04_021DF2B4: ; 0x021DF2B4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DF300 ; =UNK04_0221053C
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ ldr r0, [r0, #0x28]
+ cmp r0, #4
+ beq _021DF2DC
+ bl MOD04_021DF5CC
+_021DF2DC:
+ ldr r1, _021DF300 ; =UNK04_0221053C
+ mov r0, r5
+ ldr r3, [r1]
+ mov r1, r4
+ ldr r2, [r3, #0x7c]
+ ldr r3, [r3, #0x78]
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DF300: .word UNK04_0221053C
+ arm_func_end MOD04_021DF2B4
+
+ arm_func_start MOD04_021DF304
+MOD04_021DF304: ; 0x021DF304
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ mov r4, r1
+ bne _021DF334
+ ldr r1, _021DF36C ; =UNK04_0221053C
+ mov r0, #3
+ ldr r1, [r1]
+ str r4, [r1, #0x64]
+ bl MOD04_021DF5CC
+ bl MOD04_021E1ED4
+ b _021DF33C
+_021DF334:
+ mov r0, #0
+ bl MOD04_021DF5CC
+_021DF33C:
+ ldr r0, _021DF36C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r3, [r0, #0x70]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, [r0, #0x74]
+ mov r0, r5
+ mov r1, r4
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DF36C: .word UNK04_0221053C
+ arm_func_end MOD04_021DF304
+
+ arm_func_start MOD04_021DF370
+MOD04_021DF370: ; 0x021DF370
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #7
+ addls pc, pc, r4, lsl #2
+ b _021DF3F4
+_021DF38C: ; jump table
+ b _021DF3F4 ; case 0
+ b _021DF3AC ; case 1
+ b _021DF3B8 ; case 2
+ b _021DF3C8 ; case 3
+ b _021DF3D4 ; case 4
+ b _021DF3B8 ; case 5
+ b _021DF3E0 ; case 6
+ b _021DF3EC ; case 7
+_021DF3AC:
+ mov r0, #9
+ mvn r2, #0
+ b _021DF3F4
+_021DF3B8:
+ mov r0, #0
+ mov r2, r0
+ mov r4, r0
+ b _021DF3F4
+_021DF3C8:
+ mov r0, #6
+ mvn r2, #9
+ b _021DF3F4
+_021DF3D4:
+ mov r0, #6
+ mvn r2, #0x1d
+ b _021DF3F4
+_021DF3E0:
+ mov r0, #6
+ mvn r2, #0x45
+ b _021DF3F4
+_021DF3EC:
+ mov r0, #6
+ mvn r2, #0x4f
+_021DF3F4:
+ cmp r0, #0
+ beq _021DF408
+ ldr r1, _021DF410 ; =0xFFFEFA48
+ add r1, r2, r1
+ bl MOD04_021E0EAC
+_021DF408:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DF410: .word 0xFFFEFA48
+ arm_func_end MOD04_021DF370
+
+ arm_func_start MOD04_021DF414
+MOD04_021DF414: ; 0x021DF414
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r6, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r6, #4
+ addls pc, pc, r6, lsl #2
+ b _021DF470
+_021DF430: ; jump table
+ b _021DF470 ; case 0
+ b _021DF444 ; case 1
+ b _021DF450 ; case 2
+ b _021DF45C ; case 3
+ b _021DF468 ; case 4
+_021DF444:
+ mov r4, #9
+ mvn r5, #0
+ b _021DF470
+_021DF450:
+ mov r4, #9
+ mvn r5, #1
+ b _021DF470
+_021DF45C:
+ mov r4, #6
+ mvn r5, #9
+ b _021DF470
+_021DF468:
+ mov r4, #6
+ mvn r5, #0x13
+_021DF470:
+ ldr r0, _021DF51C ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _021DF500
+_021DF488: ; jump table
+ b _021DF500 ; case 0
+ b _021DF4A0 ; case 1
+ b _021DF4B8 ; case 2
+ b _021DF500 ; case 3
+ b _021DF4F4 ; case 4
+ b _021DF4DC ; case 5
+_021DF4A0:
+ ldr r1, _021DF520 ; =0xFFFF11B8
+ mov r0, r4
+ add r5, r5, r1
+ mov r1, r5
+ bl MOD04_021E0EAC
+ b _021DF508
+_021DF4B8:
+ ldr r1, [r1, #0x9c]
+ ldr r0, _021DF520 ; =0xFFFF11B8
+ cmp r1, #1
+ add r5, r5, r0
+ bge _021DF508
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021E0EAC
+ b _021DF508
+_021DF4DC:
+ ldr r1, _021DF524 ; =0xFFFEC398
+ mov r0, r4
+ add r5, r5, r1
+ mov r1, r5
+ bl MOD04_021E8E08
+ b _021DF508
+_021DF4F4:
+ ldr r0, _021DF528 ; =0xFFFEEAA8
+ add r5, r5, r0
+ b _021DF508
+_021DF500:
+ ldr r0, _021DF52C ; =0xFFFE9C88
+ add r5, r5, r0
+_021DF508:
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021E2114
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF51C: .word UNK04_0221053C
+_021DF520: .word 0xFFFF11B8
+_021DF524: .word 0xFFFEC398
+_021DF528: .word 0xFFFEEAA8
+_021DF52C: .word 0xFFFE9C88
+ arm_func_end MOD04_021DF414
+
+ arm_func_start MOD04_021DF530
+MOD04_021DF530: ; 0x021DF530
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov lr, #0
+ mov ip, lr
+ cmp r1, #0
+ ble _021DF560
+ mov r3, #1
+_021DF54C:
+ ldrb r2, [r0, ip]
+ add ip, ip, #1
+ cmp ip, r1
+ orr lr, lr, r3, lsl r2
+ blt _021DF54C
+_021DF560:
+ mov r0, lr
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF530
+
+ arm_func_start MOD04_021DF56C
+MOD04_021DF56C: ; 0x021DF56C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl MOD04_021E874C
+ mov r1, r0
+ cmp r1, #0
+ mov r0, #0
+ ble _021DF5B0
+ ldr r3, [sp]
+_021DF594:
+ ldrb r2, [r3]
+ cmp r4, r2
+ beq _021DF5B0
+ add r0, r0, #1
+ cmp r0, r1
+ add r3, r3, #1
+ blt _021DF594
+_021DF5B0:
+ cmp r0, r1
+ addeq sp, sp, #8
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021E8830
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DF56C
+
+ arm_func_start MOD04_021DF5CC
+MOD04_021DF5CC: ; 0x021DF5CC
+ ldr r1, _021DF5E8 ; =UNK04_0221053C
+ ldr r3, [r1]
+ ldr r2, [r3, #0x24]
+ str r2, [r3, #0x28]
+ ldr r1, [r1]
+ str r0, [r1, #0x24]
+ bx lr
+ .align 2, 0
+_021DF5E8: .word UNK04_0221053C
+ arm_func_end MOD04_021DF5CC
+
+ arm_func_start MOD04_021DF5EC
+MOD04_021DF5EC: ; 0x021DF5EC
+ bx lr
+ arm_func_end MOD04_021DF5EC
+
+ arm_func_start MOD04_021DF5F0
+MOD04_021DF5F0: ; 0x021DF5F0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, #0
+ ldr r4, _021DF634 ; =UNK04_02210544
+_021DF600:
+ ldr r0, [r4, r5, lsl #2]
+ cmp r0, #0
+ beq _021DF620
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ cmp r6, r0
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021DF620:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021DF600
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF634: .word UNK04_02210544
+ arm_func_end MOD04_021DF5F0
+
+ arm_func_start MOD04_021DF638
+MOD04_021DF638: ; 0x021DF638
+ ldr r1, _021DF644 ; =UNK04_022105C4
+ add r0, r1, r0, lsl #3
+ bx lr
+ .align 2, 0
+_021DF644: .word UNK04_022105C4
+ arm_func_end MOD04_021DF638
+
+ arm_func_start MOD04_021DF648
+MOD04_021DF648: ; 0x021DF648
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r1, #0
+ mov ip, #0
+ ble _021DF684
+ ldr r2, _021DF6B8 ; =UNK04_0221053C
+ ldr r3, [r2]
+_021DF664:
+ add r2, r3, ip, lsl #2
+ ldr r2, [r2, #0x448]
+ cmp r0, r2
+ beq _021DF684
+ add r2, ip, #1
+ and ip, r2, #0xff
+ cmp ip, r1
+ blt _021DF664
+_021DF684:
+ cmp ip, r1
+ addge sp, sp, #4
+ movge r0, #0
+ ldmgeia sp!, {pc}
+ ldr r0, _021DF6B8 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, ip
+ ldrb r0, [r0, #0x624]
+ bl MOD04_021DF760
+ bl MOD04_021DF730
+ bl MOD04_021DF6BC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF6B8: .word UNK04_0221053C
+ arm_func_end MOD04_021DF648
+
+ arm_func_start MOD04_021DF6BC
+MOD04_021DF6BC: ; 0x021DF6BC
+ ldr r1, _021DF6C8 ; =UNK04_02210544
+ add r0, r1, r0, lsl #2
+ bx lr
+ .align 2, 0
+_021DF6C8: .word UNK04_02210544
+ arm_func_end MOD04_021DF6BC
+
+ arm_func_start MOD04_021DF6CC
+MOD04_021DF6CC: ; 0x021DF6CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DF6FC ; =UNK04_02210544
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ ldr r1, _021DF700 ; =UNK04_022105C4
+ mov r0, #0
+ mov r2, #0x100
+ bl MIi_CpuClear32
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF6FC: .word UNK04_02210544
+_021DF700: .word UNK04_022105C4
+ arm_func_end MOD04_021DF6CC
+
+ arm_func_start MOD04_021DF704
+MOD04_021DF704: ; 0x021DF704
+ ldr r2, _021DF72C ; =UNK04_02210544
+ mov r0, #0
+_021DF70C:
+ ldr r1, [r2, r0, lsl #2]
+ cmp r1, #0
+ bxeq lr
+ add r0, r0, #1
+ cmp r0, #0x20
+ blt _021DF70C
+ mvn r0, #0
+ bx lr
+ .align 2, 0
+_021DF72C: .word UNK04_02210544
+ arm_func_end MOD04_021DF704
+
+ arm_func_start MOD04_021DF730
+MOD04_021DF730: ; 0x021DF730
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD3C4
+ ldrb r0, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF730
+
+ arm_func_start MOD04_021DF748
+MOD04_021DF748: ; 0x021DF748
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF748
+
+ arm_func_start MOD04_021DF760
+MOD04_021DF760: ; 0x021DF760
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r1, _021DF7BC ; =UNK04_0221053C
+ mov r6, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r4, _021DF7C0 ; =UNK04_02210544
+ mov r5, #0
+_021DF784:
+ ldr r0, [r4, r5, lsl #2]
+ cmp r0, #0
+ beq _021DF7A8
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ cmp r6, r0
+ ldreq r0, _021DF7C0 ; =UNK04_02210544
+ ldreq r0, [r0, r5, lsl #2]
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021DF7A8:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021DF784
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF7BC: .word UNK04_0221053C
+_021DF7C0: .word UNK04_02210544
+ arm_func_end MOD04_021DF760
+
+ arm_func_start MOD04_021DF7C4
+MOD04_021DF7C4: ; 0x021DF7C4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, #0x4000
+ bl MOD04_021DE8C8
+ add r0, r0, #0xc000
+ mov r1, r0, lsl #0x10
+ ldr r3, _021DF87C ; =UNK04_0221053C
+ mov r0, #0
+ mov r2, r0
+ mov r1, r1, lsr #0x10
+ ldr r4, [r3]
+ bl MOD04_021FFEB0
+ ldr r1, _021DF880 ; =MOD04_021DEB90
+ ldr r2, _021DF87C ; =UNK04_0221053C
+ str r1, [sp]
+ mov r1, r0
+ ldr r0, [r2]
+ ldr r2, [r4, #0x14]
+ ldr r3, [r4, #0x18]
+ bl MOD04_021FD71C
+ mov r4, r0
+ bl MOD04_021DF370
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, r4
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r1, _021DF884 ; =MOD04_021E9204
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD6C8
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r1, _021DF888 ; =MOD04_021E9464
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD434
+ mov r0, r4
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DF87C: .word UNK04_0221053C
+_021DF880: .word MOD04_021DEB90
+_021DF884: .word MOD04_021E9204
+_021DF888: .word MOD04_021E9464
+ arm_func_end MOD04_021DF7C4
+
+ arm_func_start MOD04_021DF88C
+MOD04_021DF88C: ; 0x021DF88C
+ ldr r0, _021DF8A4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrne r0, [r0, #0x24]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DF8A4: .word UNK04_0221053C
+ arm_func_end MOD04_021DF88C
+
+ arm_func_start MOD04_021DF8A8
+MOD04_021DF8A8: ; 0x021DF8A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DF8F0 ; =UNK04_0221053C
+ ldr r2, [r1]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ mov r1, #1
+ mov r1, r1,lsl r0
+ ldr r2, [r2, #0x644]
+ ands r1, r2, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021DF5F0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF8F0: .word UNK04_0221053C
+ arm_func_end MOD04_021DF8A8
+
+ arm_func_start MOD04_021DF8F4
+MOD04_021DF8F4: ; 0x021DF8F4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _021DF954 ; =UNK04_0221053C
+ ldr r3, [r2]
+ cmp r3, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldr r1, _021DF958 ; =0x00000624
+ add r1, r3, r1
+ str r1, [r0]
+ ldr r2, [r2]
+ ldrb r1, [r2, #0x369]
+ cmp r1, #2
+ beq _021DF93C
+ ldrb r1, [r2, #0x369]
+ cmp r1, #3
+ bne _021DF948
+_021DF93C:
+ bl MOD04_021E86A4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DF948:
+ bl MOD04_021E874C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF954: .word UNK04_0221053C
+_021DF958: .word 0x00000624
+ arm_func_end MOD04_021DF8F4
+
+ arm_func_start MOD04_021DF95C
+MOD04_021DF95C: ; 0x021DF95C
+ ldr r0, _021DF974 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrneb r0, [r0, #0x2c]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DF974: .word UNK04_0221053C
+ arm_func_end MOD04_021DF95C
+
+ arm_func_start MOD04_021DF978
+MOD04_021DF978: ; 0x021DF978
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DF9D0 ; =UNK04_0221053C
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF9B0
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DF9C0
+_021DF9B0:
+ bl MOD04_021E87D8
+ add sp, sp, #4
+ add r0, r0, #1
+ ldmfd sp!, {pc}
+_021DF9C0:
+ bl MOD04_021E8804
+ add r0, r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF9D0: .word UNK04_0221053C
+ arm_func_end MOD04_021DF978
+
+ arm_func_start MOD04_021DF9D4
+MOD04_021DF9D4: ; 0x021DF9D4
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DFA3C ; =UNK04_0221053C
+ mov r4, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DFA14
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFA14
+ ldr r0, _021DFA3C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ beq _021DFA1C
+ cmp r0, #6
+ beq _021DFA1C
+_021DFA14:
+ mvn r0, #0
+ ldmia sp!, {r4, pc}
+_021DFA1C:
+ mov r0, r4
+ bl MOD04_021DF760
+ cmp r0, #0
+ mvneq r0, #1
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021FD488
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DFA3C: .word UNK04_0221053C
+ arm_func_end MOD04_021DF9D4
+
+ arm_func_start MOD04_021DFA40
+MOD04_021DFA40: ; 0x021DFA40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFA80
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFA80
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r0, [r2, #0x24]
+ cmp r0, #5
+ beq _021DFA8C
+ cmp r0, #6
+ beq _021DFA8C
+_021DFA80:
+ add sp, sp, #4
+ mvn r0, #0
+ ldmfd sp!, {pc}
+_021DFA8C:
+ ldrb r0, [r2, #0x361]
+ cmp r0, #0
+ bne _021DFAC0
+ ldr r1, _021DFAF4 ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_02200D6C
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #4
+ mov r0, #1
+ ldmfd sp!, {pc}
+_021DFAC0:
+ mov r1, #1
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ strb r1, [r2, #0x2d]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ ldr r1, _021DFAF0 ; =UNK04_0221053C
+ mov r0, #0
+ ldr r1, [r1]
+ strb r0, [r1, #0x2d]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DFAF0: .word UNK04_0221053C
+_021DFAF4: .word UNK04_0220D334
+ arm_func_end MOD04_021DFA40
+
+ arm_func_start MOD04_021DFAF8
+MOD04_021DFAF8: ; 0x021DFAF8
+ ldr r2, _021DFB1C ; =UNK04_0221053C
+ ldr r3, [r2]
+ cmp r3, #0
+ moveq r0, #0
+ strne r0, [r3, #0x90]
+ ldrne r2, [r2]
+ movne r0, #1
+ strne r1, [r2, #0x94]
+ bx lr
+ .align 2, 0
+_021DFB1C: .word UNK04_0221053C
+ arm_func_end MOD04_021DFAF8
+
+ arm_func_start MOD04_021DFB20
+MOD04_021DFB20: ; 0x021DFB20
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x224
+ mvn ip, #0
+ mov r7, r0
+ mov r6, r1
+ mov r4, r2
+ mov r5, r3
+ str ip, [sp, #8]
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFB60
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #3
+ beq _021DFB6C
+_021DFB60:
+ add sp, sp, #0x224
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFB6C:
+ bl MOD04_021DF6CC
+ ldr r1, _021DFD04 ; =UNK04_0221053C
+ mov r0, #5
+ ldr r2, [r1]
+ str r6, [r2, #0x88]
+ ldr r1, [r1]
+ str r4, [r1, #0x8c]
+ bl MOD04_021DF5CC
+ mov r0, r7
+ bl MOD04_021E1F84
+ movs r4, r0
+ beq _021DFBB8
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ mov r1, r4
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F05F4
+ cmp r0, #0
+ bne _021DFBC0
+_021DFBB8:
+ mov r5, #0xb
+ b _021DFC8C
+_021DFBC0:
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ add r2, sp, #8
+ ldr r0, [r0]
+ mov r1, r4
+ add r0, r0, #0x1c
+ bl MOD04_021F0664
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ add r2, sp, #0x10
+ add r0, r0, #0x1c
+ bl MOD04_021F06E4
+ ldr r0, [sp, #0x14]
+ cmp r0, #6
+ movne r5, #0xb
+ bne _021DFC8C
+ ldr r0, _021DFD08 ; =UNK04_0220D344
+ mov r6, #0x30
+ add r1, sp, #0xc
+ add r2, sp, #0x18
+ mov r3, #0x2f
+ strb r6, [sp, #0xc]
+ bl MOD04_021DE9F4
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ and r6, r0, #0xff
+ ldr r0, _021DFD0C ; =UNK04_0220D348
+ add r1, sp, #0xc
+ add r2, sp, #0x18
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ and r0, r0, #0xff
+ cmp r0, r6
+ moveq r5, #0xd
+ beq _021DFC8C
+ ldr r6, [sp, #0x238]
+ ldr r1, _021DFD10 ; =MOD04_021DF12C
+ mov r0, r4
+ mov r3, r5
+ mov r2, #0
+ str r6, [sp]
+ bl MOD04_021E9FD0
+ add sp, sp, #0x224
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFC8C:
+ mov r0, r5
+ mov r1, #0
+ bl MOD04_021DD6B0
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r4, [r0]
+ mov r0, r5
+ str r1, [sp]
+ ldr r2, [r4, #0x8c]
+ mov r3, r1
+ str r2, [sp, #4]
+ ldr r4, [r4, #0x88]
+ mov r2, #1
+ blx r4
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFCF8
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ bne _021DFCF8
+ mov r0, #3
+ bl MOD04_021DF5CC
+ ldr r1, _021DFD14 ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+_021DFCF8:
+ mov r0, #1
+ add sp, sp, #0x224
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFD04: .word UNK04_0221053C
+_021DFD08: .word UNK04_0220D344
+_021DFD0C: .word UNK04_0220D348
+_021DFD10: .word MOD04_021DF12C
+_021DFD14: .word UNK04_0220D334
+ arm_func_end MOD04_021DFB20
+
+ arm_func_start MOD04_021DFD18
+MOD04_021DFD18: ; 0x021DFD18
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFD50
+ ldr r0, _021DFDB4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #3
+ beq _021DFD5C
+_021DFD50:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFD5C:
+ bl MOD04_021DF6CC
+ ldr r1, _021DFDB4 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r3, [r1]
+ mov r0, #5
+ str r6, [r3, #0x88]
+ ldr r3, [r1]
+ str r5, [r3, #0x8c]
+ ldr r1, [r1]
+ strb r2, [r1, #0x2c]
+ bl MOD04_021DF5CC
+ sub r0, r7, #1
+ ldr r5, [sp, #0x18]
+ ldr r1, _021DFDB8 ; =MOD04_021DF12C
+ mov r3, r4
+ and r0, r0, #0xff
+ mov r2, #0
+ str r5, [sp]
+ bl MOD04_021EA138
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFDB4: .word UNK04_0221053C
+_021DFDB8: .word MOD04_021DF12C
+ arm_func_end MOD04_021DFD18
+
+ arm_func_start MOD04_021DFDBC
+MOD04_021DFDBC: ; 0x021DFDBC
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFDF8
+ ldr r0, _021DFE5C ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r1, [r2, #0x24]
+ cmp r1, #3
+ blt _021DFDF8
+ cmp r1, #4
+ bne _021DFE04
+_021DFDF8:
+ add sp, sp, #0x10
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFE04:
+ str r6, [r2, #0x78]
+ ldr r1, [r0]
+ mov r0, #4
+ str r5, [r1, #0x7c]
+ bl MOD04_021DF5CC
+ ldr r0, _021DFE5C ; =UNK04_0221053C
+ ldr r1, [sp, #0x20]
+ ldr r3, [r0]
+ ldr r0, [sp, #0x24]
+ str r4, [sp]
+ str r1, [sp, #4]
+ ldr r4, [sp, #0x28]
+ str r0, [sp, #8]
+ ldr r2, _021DFE60 ; =MOD04_021DF2B4
+ add r0, r3, #0xe0
+ add r1, r3, #0x1e0
+ mov r3, #0
+ str r4, [sp, #0xc]
+ bl MOD04_021E2174
+ mov r0, #1
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DFE5C: .word UNK04_0221053C
+_021DFE60: .word MOD04_021DF2B4
+ arm_func_end MOD04_021DFDBC
+
+ arm_func_start MOD04_021DFE64
+MOD04_021DFE64: ; 0x021DFE64
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r4, r0
+ mov r6, r2
+ mov r5, r3
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFE9C
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r1, [r2, #0x24]
+ cmp r1, #0
+ beq _021DFEA4
+_021DFE9C:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFEA4:
+ str r6, [r2, #0x70]
+ ldr r1, [r0]
+ cmp r4, #0
+ str r5, [r1, #0x74]
+ beq _021DFEC4
+ ldrh r1, [r4]
+ cmp r1, #0
+ bne _021DFECC
+_021DFEC4:
+ mov r5, #0
+ b _021DFF18
+_021DFECC:
+ ldr r1, [r0]
+ mov r0, #0
+ add r1, r1, #0x2e
+ mov r2, #0x34
+ bl MIi_CpuClear16
+ mov r0, r4
+ bl MOD04_021DE89C
+ cmp r0, #0x19
+ movhi r5, #0x19
+ bhi _021DFF00
+ mov r0, r4
+ bl MOD04_021DE89C
+ mov r5, r0
+_021DFF00:
+ ldr r1, _021DFF6C ; =UNK04_0221053C
+ mov r0, r4
+ ldr r1, [r1]
+ mov r2, r5, lsl #1
+ add r1, r1, #0x2e
+ bl MIi_CpuCopy16
+_021DFF18:
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r5, lsl #1
+ strh r1, [r0, #0x2e]
+ bl MOD04_021DDC1C
+ cmp r0, #4
+ beq _021DFF4C
+ ldr r1, _021DFF70 ; =0xFFFF1596
+ mov r0, #2
+ bl MOD04_021E0EAC
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFF4C:
+ mov r0, #1
+ bl MOD04_021DF5CC
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x68]
+ bl MOD04_021EE898
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DFF6C: .word UNK04_0221053C
+_021DFF70: .word 0xFFFF1596
+ arm_func_end MOD04_021DFE64
+
+ arm_func_start MOD04_021DFF74
+MOD04_021DFF74: ; 0x021DFF74
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DD984
+ cmp r0, #0
+ beq _021DFF8C
+ bl MOD04_021DF5EC
+_021DFF8C:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #6
+ addls pc, pc, r0, lsl #2
+ b _021E0194
+_021DFFD8: ; jump table
+ b _021E0194 ; case 0
+ b _021DFFF4 ; case 1
+ b _021E0124 ; case 2
+ b _021E012C ; case 3
+ b _021E012C ; case 4
+ b _021E013C ; case 5
+ b _021E014C ; case 6
+_021DFFF4:
+ bl MOD04_021EE6A0
+ cmp r0, #1
+ beq _021E0014
+ cmp r0, #2
+ beq _021E00FC
+ cmp r0, #3
+ beq _021E0110
+ b _021E0194
+_021E0014:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ ldr r1, [r0, #0xa0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F94
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ ldr r2, _021E01E8 ; =MOD04_021DF0D4
+ mov r3, r1
+ add r0, r0, #0x1c
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01EC ; =MOD04_021DEF6C
+ ldr r0, [r0]
+ mov r1, #3
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01F0 ; =MOD04_021E20C8
+ ldr r0, [r0]
+ mov r1, #1
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01F4 ; =MOD04_021E1FE4
+ ldr r0, [r0]
+ mov r1, #2
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD04_021DF5CC
+ bl MOD04_021E1034
+ b _021E0194
+_021E00FC:
+ ldr r1, _021E01F8 ; =0xFFFFB172
+ mov r0, #3
+ bl MOD04_021E0EAC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0110:
+ ldr r1, _021E01FC ; =0xFFFFB17B
+ mov r0, #4
+ bl MOD04_021E0EAC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0124:
+ bl MOD04_021E0F1C
+ b _021E0194
+_021E012C:
+ bl MOD04_021E2228
+ mov r0, #0
+ bl MOD04_021E9568
+ b _021E0194
+_021E013C:
+ mov r0, #1
+ bl MOD04_021E9568
+ bl MOD04_021E2228
+ b _021E0194
+_021E014C:
+ bl MOD04_021EAA64
+ bl MOD04_021E2228
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021E0174
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021E0180
+_021E0174:
+ mov r0, #1
+ bl MOD04_021E9568
+ b _021E0194
+_021E0180:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021E0194
+ mov r0, #0
+ bl MOD04_021E9568
+_021E0194:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x36c]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, [r1, #0x364]
+ cmp r0, #0
+ beq _021E01CC
+ bl MOD04_02202280
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x364]
+_021E01CC:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x36c]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E01E4: .word UNK04_0221053C
+_021E01E8: .word MOD04_021DF0D4
+_021E01EC: .word MOD04_021DEF6C
+_021E01F0: .word MOD04_021E20C8
+_021E01F4: .word MOD04_021E1FE4
+_021E01F8: .word 0xFFFFB172
+_021E01FC: .word 0xFFFFB17B
+ arm_func_end MOD04_021DFF74
+
+ arm_func_start MOD04_021E0200
+MOD04_021E0200: ; 0x021E0200
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x364]
+ cmp r0, #0
+ beq _021E023C
+ bl MOD04_02202280
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x364]
+_021E023C:
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #0x36c]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x438]
+ cmp r0, #0
+ beq _021E0270
+ bl MOD04_02203E80
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x438]
+_021E0270:
+ bl MOD04_02200D6C
+ bl MOD04_021FBE7C
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr ip, [r0]
+ ldr r0, [ip, #0x1c]
+ cmp r0, #0
+ beq _021E0324
+ mov r1, #0
+ mov r2, r1
+ mov r3, r1
+ add r0, ip, #0x1c
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r3, r2
+ add r0, r0, #0x1c
+ mov r1, #3
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r3, r2
+ add r0, r0, #0x1c
+ mov r1, #1
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #2
+ add r0, r0, #0x1c
+ mov r3, r2
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F18
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F64
+ mov r1, #0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ str r1, [r0, #0x1c]
+_021E0324:
+ bl MOD04_021E0E48
+ bl MOD04_021E1D90
+ bl MOD04_021E854C
+ bl MOD04_021EA9C4
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E035C
+ bl MOD04_021FD704
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0]
+_021E035C:
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E0370: .word UNK04_0221053C
+ arm_func_end MOD04_021E0200
+
+ arm_func_start MOD04_021E0374
+MOD04_021E0374: ; 0x021E0374
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ ldr ip, _021E05D8 ; =UNK04_0221053C
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ str r0, [ip]
+ bl MOD04_021DD6F0
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r3, _021E05DC ; =MOD04_021E8F80
+ str r2, [r1]
+ ldr r1, [r0]
+ ldr r2, _021E05E0 ; =MOD04_021DEF60
+ str r3, [r1, #4]
+ ldr r1, [r0]
+ ldr ip, [sp, #0x24]
+ str r2, [r1, #8]
+ cmp ip, #0
+ ldr r2, [r0]
+ ldr r3, _021E05E4 ; =MOD04_021DEBE4
+ ldr r1, _021E05E8 ; =MOD04_021DEBD8
+ str r3, [r2, #0xc]
+ ldr r0, [r0]
+ ldr r3, [sp, #0x28]
+ str r1, [r0, #0x10]
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ moveq ip, #0x2000
+ ldr r0, [r0]
+ cmp r3, #0
+ str ip, [r0, #0x14]
+ moveq r3, #0x2000
+ ldr r1, _021E05D8 ; =UNK04_0221053C
+ mov r0, #0
+ ldr r2, [r1]
+ ldr ip, _021E05EC ; =UNK04_02210F94
+ str r3, [r2, #0x18]
+ ldr r2, [r1]
+ ldr r3, _021E05F0 ; =UNK04_02211094
+ str r0, [r2, #0x1c]
+ ldr r2, [r1]
+ str r6, [r2, #0x20]
+ ldr r2, [r1]
+ str r0, [r2, #0x24]
+ ldr r2, [r1]
+ str r0, [r2, #0x28]
+ ldr r2, [r1]
+ strb r0, [r2, #0x2c]
+ ldr r2, [r1]
+ strb r0, [r2, #0x2d]
+ ldr r2, [r1]
+ str r0, [r2, #0x64]
+ ldr r2, [r1]
+ str ip, [r2, #0x68]
+ ldr r2, [r1]
+ str r3, [r2, #0x6c]
+ ldr r2, [r1]
+ str r0, [r2, #0x70]
+ ldr r2, [r1]
+ str r0, [r2, #0x74]
+ ldr r2, [r1]
+ str r0, [r2, #0x78]
+ ldr r2, [r1]
+ str r0, [r2, #0x7c]
+ ldr r2, [r1]
+ str r0, [r2, #0x80]
+ ldr r2, [r1]
+ str r0, [r2, #0x84]
+ ldr r2, [r1]
+ str r0, [r2, #0x88]
+ ldr r2, [r1]
+ str r0, [r2, #0x8c]
+ ldr r2, [r1]
+ str r0, [r2, #0x90]
+ ldr r1, [r1]
+ str r0, [r1, #0x94]
+ bl MOD04_021DF6CC
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ mov r3, r5
+ ldr r2, [r0]
+ ldr r1, [r6, #0x24]
+ ldr r0, _021E05F4 ; =MOD04_021DF304
+ str r1, [sp]
+ add r1, r2, #0x2e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r5, #0
+ add r0, r2, #0x98
+ mov r1, r6
+ add r2, r2, #0x1c
+ str r5, [sp, #0xc]
+ bl MOD04_021E1074
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ ldr r2, [sp, #0x30]
+ ldr r5, [r0]
+ ldr r3, [sp, #0x2c]
+ str r2, [sp]
+ add r0, r5, #0x2f8
+ add r1, r5, #0x1c
+ add r2, r5, #0x2e
+ bl MOD04_021E234C
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ ldr r2, [r0]
+ ldr r0, _021E05F0 ; =UNK04_02211094
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r2, #0x354
+ add r1, r2, #0x1c
+ add r3, r2, #4
+ bl MOD04_021EA368
+ ldr r1, _021E05D8 ; =UNK04_0221053C
+ ldr r0, _021E05F8 ; =0x000007D8
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl MOD04_021EACB4
+ mov r0, r4
+ bl strlen
+ cmp r0, #0x100
+ movhs r5, #0xff
+ bhs _021E0578
+ mov r0, r4
+ bl strlen
+ mov r5, r0
+_021E0578:
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ mov r0, r4
+ mov r2, r5
+ bl MI_CpuCopy8
+ ldr r0, [sp, #0x20]
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ mov r2, #0
+ strb r2, [r1, r5]
+ bl strlen
+ cmp r0, #0x100
+ movhs r4, #0xff
+ bhs _021E05B4
+ ldr r0, [sp, #0x20]
+ bl strlen
+ mov r4, r0
+_021E05B4:
+ ldr r0, [sp, #0x20]
+ ldr r1, _021E05F0 ; =UNK04_02211094
+ mov r2, r4
+ bl MI_CpuCopy8
+ ldr r0, _021E05F0 ; =UNK04_02211094
+ mov r1, #0
+ strb r1, [r0, r4]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E05D8: .word UNK04_0221053C
+_021E05DC: .word MOD04_021E8F80
+_021E05E0: .word MOD04_021DEF60
+_021E05E4: .word MOD04_021DEBE4
+_021E05E8: .word MOD04_021DEBD8
+_021E05EC: .word UNK04_02210F94
+_021E05F0: .word UNK04_02211094
+_021E05F4: .word MOD04_021DF304
+_021E05F8: .word 0x000007D8
+ arm_func_end MOD04_021E0374
+
+ .section .data
+
+ .global UNK04_0220D334
+UNK04_0220D334: ; 0x0220D334
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D338
+UNK04_0220D338: ; 0x0220D338
+ .asciz "GPCM"
+
+ .balign 4, 0
+ .global UNK04_0220D340
+UNK04_0220D340: ; 0x0220D340
+ .asciz "MAT"
+
+ .balign 4, 0
+ .global UNK04_0220D344
+UNK04_0220D344: ; 0x0220D344
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D348
+UNK04_0220D348: ; 0x0220D348
+ .asciz "SCN"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_0221053C
+UNK04_0221053C: ; 0x0221053C
+ .space 0x4
+
+ .global UNK04_02210540
+UNK04_02210540: ; 0x02210540
+ .space 0x4
+
+ .global UNK04_02210544
+UNK04_02210544: ; 0x02210544
+ .space 0x80
+
+ .global UNK04_022105C4
+UNK04_022105C4: ; 0x022105C4
+ .space 0x100
diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s
new file mode 100644
index 00000000..21395d39
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E05FC.s
@@ -0,0 +1,830 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E05FC
+MOD04_021E05FC: ; 0x021E05FC
+ ldr r0, _021E0624 ; =UNK04_022106C8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E061C
+ ldr r0, [r0, #4]
+ cmp r0, #5
+ moveq r0, #1
+ bxeq lr
+_021E061C:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021E0624: .word UNK04_022106C8
+ arm_func_end MOD04_021E05FC
+
+ arm_func_start MOD04_021E0628
+MOD04_021E0628: ; 0x021E0628
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x4c
+ mov r4, r1
+ ldr r1, [r4]
+ mov r5, r0
+ cmp r1, #0
+ addne sp, sp, #0x4c
+ ldmneia sp!, {r4, r5, pc}
+ ldr r1, _021E07CC ; =UNK04_022106C8
+ ldr r2, [r1]
+ ldr r1, [r2, #4]
+ cmp r1, #3
+ bne _021E0704
+ ldrsb r1, [r4, #0x8e]
+ cmp r1, #0
+ bne _021E06DC
+ ldr r0, [r2, #0x1c]
+ ldr r1, [r2, #0xc]
+ add r2, sp, #8
+ add r0, r0, #4
+ bl DWCi_Acc_LoginIdToUserName
+ ldr r1, _021E07D0 ; =0x00000705
+ add r2, sp, #8
+ mov r0, r5
+ bl MOD04_021F0B30
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ addne sp, sp, #0x4c
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ mov r3, #4
+ ldr r1, [r0]
+ ldr r0, _021E07D4 ; =MOD04_021E0628
+ str r3, [r1, #4]
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4, #4]
+ mov r0, r5
+ mov r3, r2
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
+ add sp, sp, #0x4c
+ cmp r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E06DC:
+ bl MOD04_021F0D54
+ ldr r0, _021E07D8 ; =MOD04_021E0C80
+ mov r1, #0
+ bl MOD04_021E0A00
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #0x4c
+ str r1, [r0, #4]
+ ldmia sp!, {r4, r5, pc}
+_021E0704:
+ cmp r1, #4
+ addne sp, sp, #0x4c
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, [r2, #0x1c]
+ ldr r1, [r2, #0xc]
+ add r2, sp, #0x1d
+ add r0, r0, #4
+ bl DWCi_Acc_LoginIdToUserName
+ add r1, sp, #0x1d
+ add r0, r4, #0x8e
+ bl strcmp
+ cmp r0, #0
+ bne _021E079C
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ add r2, sp, #0x32
+ ldr r0, [r0]
+ ldr r1, [r0, #0xc]
+ add r0, r0, #0x3c
+ bl DWCi_Acc_LoginIdToUserName
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ ldr r2, [r4, #4]
+ ldr r1, [r0]
+ ldr r0, [r1, #0x1c]
+ add r1, r1, #0x3c
+ bl DWCi_Acc_SetLoginIdToUserData
+ mov r0, r5
+ bl MOD04_021F0D54
+ ldr r0, _021E07CC ; =UNK04_022106C8
+ ldr r1, _021E07DC ; =UNK04_022106C4
+ ldr r4, [r0]
+ ldr r0, _021E07E0 ; =UNK04_022106CC
+ ldr r2, [r1]
+ ldr r3, [r0]
+ add r0, r4, #0x48
+ add r1, r4, #0x148
+ blx r3
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, pc}
+_021E079C:
+ ldr r0, _021E07D4 ; =MOD04_021E0628
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4, #4]
+ mov r0, r5
+ mov r3, r2
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E07CC: .word UNK04_022106C8
+_021E07D0: .word 0x00000705
+_021E07D4: .word MOD04_021E0628
+_021E07D8: .word MOD04_021E0C80
+_021E07DC: .word UNK04_022106C4
+_021E07E0: .word UNK04_022106CC
+ arm_func_end MOD04_021E0628
+
+ arm_func_start MOD04_021E07E4
+MOD04_021E07E4: ; 0x021E07E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x3d4
+ bl MOD04_021D988C
+ cmp r0, #0x15
+ bne _021E08BC
+ add r0, sp, #0
+ bl MOD04_021D97F8
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ add r1, sp, #0x4a
+ ldr r0, [r0]
+ add r0, r0, #0x48
+ bl strcpy
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ add r1, sp, #0x100
+ ldr r0, [r0]
+ add r1, r1, #0x77
+ add r0, r0, #0x148
+ bl strcpy
+ bl MOD04_021D991C
+ ldr r1, _021E09DC ; =UNK04_022106C8
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, r0
+ ldr r1, [r1, #0x24]
+ bl MOD04_021DD904
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1, #0x24]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x1c]
+ bl DWCi_Acc_IsAuthentic
+ cmp r0, #0
+ beq _021E0898
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r1, _021E09E0 ; =UNK04_022106C4
+ ldr ip, [r0]
+ ldr r0, _021E09E4 ; =UNK04_022106CC
+ ldr r2, [r1]
+ ldr r3, [r0]
+ add r0, ip, #0x48
+ add r1, ip, #0x148
+ blx r3
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+_021E0898:
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r2, _021E09E8 ; =MOD04_021E0C98
+ ldr r1, [r0]
+ mov r3, #3
+ add r0, r1, #0x48
+ add r1, r1, #0x148
+ bl MOD04_021E0BE0
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+_021E08BC:
+ bl MOD04_021D988C
+ cmp r0, #0
+ addeq sp, sp, #0x3d4
+ ldmeqia sp!, {pc}
+ bl OS_GetTick
+ ldr r3, _021E09DC ; =UNK04_022106C8
+ ldr r2, _021E09EC ; =0x000082EA
+ ldr ip, [r3]
+ mov r3, #0
+ ldr lr, [ip, #0x28]
+ ldr ip, [ip, #0x2c]
+ subs lr, r0, lr
+ sbc r0, r1, ip
+ mov r1, r0, lsl #6
+ orr r1, r1, lr, lsr #26
+ mov r0, lr, lsl #6
+ bl _ll_udiv
+ ldr r2, _021E09F0 ; =0x00002710
+ cmp r1, #0
+ cmpeq r0, r2
+ bls _021E0958
+ add r0, sp, #0x1c4
+ bl MOD04_021D97F8
+ bl MOD04_021D991C
+ ldr r1, _021E09DC ; =UNK04_022106C8
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, r0
+ ldr r1, [r1, #0x24]
+ bl MOD04_021DD904
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #2
+ str r2, [r1, #0x24]
+ ldr r1, [sp, #0x1c4]
+ bl MOD04_021E0EAC
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+_021E0958:
+ bl MOD04_021D991C
+ add r0, sp, #0x388
+ mov r1, #0
+ mov r2, #0x48
+ bl MI_CpuFill8
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl MOD04_021DE89C
+ ldr r1, _021E09DC ; =UNK04_022106C8
+ mov r2, r0, lsl #1
+ ldr r1, [r1]
+ add r2, r2, #2
+ ldr r0, [r1, #0x10]
+ add r1, sp, #0x388
+ bl MI_CpuCopy8
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ ldr r1, _021E09F4 ; =0x00000251
+ ldr r2, [r0]
+ add r0, sp, #0x3bc
+ add r1, r2, r1
+ bl strcpy
+ ldr r2, _021E09F8 ; =MOD04_021DD944
+ ldr r0, _021E09DC ; =UNK04_022106C8
+ str r2, [sp, #0x3c8]
+ ldr r2, _021E09FC ; =MOD04_021DD904
+ ldr r1, [r0]
+ str r2, [sp, #0x3cc]
+ ldr r1, [r1, #0x24]
+ add r0, sp, #0x388
+ bl MOD04_021D9ACC
+ add sp, sp, #0x3d4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E09DC: .word UNK04_022106C8
+_021E09E0: .word UNK04_022106C4
+_021E09E4: .word UNK04_022106CC
+_021E09E8: .word MOD04_021E0C98
+_021E09EC: .word 0x000082EA
+_021E09F0: .word 0x00002710
+_021E09F4: .word 0x00000251
+_021E09F8: .word MOD04_021DD944
+_021E09FC: .word MOD04_021DD904
+ arm_func_end MOD04_021E07E4
+
+ arm_func_start MOD04_021E0A00
+MOD04_021E0A00: ; 0x021E0A00
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x4c
+ mov r5, r0
+ mov r4, r1
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0x48
+ bl MI_CpuFill8
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r2, _021E0BBC ; =UNK04_022106CC
+ ldr r1, _021E0BC0 ; =UNK04_022106C4
+ ldr r0, [r0]
+ str r5, [r2]
+ str r4, [r1]
+ ldr r0, [r0, #0x1c]
+ bl DWCi_Acc_IsAuthentic
+ cmp r0, #0
+ beq _021E0A68
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r1, [r0]
+ ldr r0, [r1, #0x1c]
+ add r2, r1, #0x248
+ ldr r1, [r0, #0x24]
+ add r0, r0, #0x10
+ bl DWCi_Acc_LoginIdToUserName
+ b _021E0B1C
+_021E0A68:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ add r0, r0, #0x3c
+ bl DWCi_Acc_IsValidLoginId
+ cmp r0, #0
+ bne _021E0AD0
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x1c]
+ add r0, r0, #4
+ bl DWCi_Acc_CheckConsoleUserId
+ cmp r0, #0
+ beq _021E0ABC
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r1, [r0]
+ ldr r0, [r1, #0x1c]
+ add r3, r1, #0x3c
+ add r0, r0, #4
+ ldmia r0, {r0, r1, r2}
+ stmia r3, {r0, r1, r2}
+ b _021E0B04
+_021E0ABC:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ add r0, r0, #0x3c
+ bl DWCi_Acc_CreateTempLoginId
+ b _021E0B04
+_021E0AD0:
+ bl OS_GetTick
+ ldr r2, _021E0BC4 ; =0x6C078965
+ ldr r3, _021E0BC8 ; =0x5D588B65
+ umull ip, r4, r0, r2
+ mla r4, r0, r3, r4
+ ldr r3, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, _021E0BCC ; =0x00269EC3
+ mla r4, r1, r2, r4
+ adds r0, ip, r0
+ ldr r3, [r3]
+ adc r1, r4, #0
+ add r0, r3, #0x3c
+ bl DWCi_Acc_SetPlayerId
+_021E0B04:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r2, [r0]
+ ldr r1, [r2, #0xc]
+ add r0, r2, #0x3c
+ add r2, r2, #0x248
+ bl DWCi_Acc_LoginIdToUserName
+_021E0B1C:
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl MOD04_021DE89C
+ ldr r1, _021E0BB8 ; =UNK04_022106C8
+ mov r2, r0, lsl #1
+ ldr r1, [r1]
+ add r2, r2, #2
+ ldr r0, [r1, #0x10]
+ add r1, sp, #0
+ bl MI_CpuCopy8
+ ldr r0, _021E0BB8 ; =UNK04_022106C8
+ ldr r1, _021E0BD0 ; =0x00000251
+ ldr r2, [r0]
+ add r0, sp, #0x34
+ add r1, r2, r1
+ bl strcpy
+ ldr r4, _021E0BD4 ; =MOD04_021DD944
+ ldr r3, _021E0BD8 ; =MOD04_021DD904
+ ldr r1, _021E0BDC ; =0x00001C10
+ mov r0, #0
+ mov r2, #4
+ str r4, [sp, #0x40]
+ str r3, [sp, #0x44]
+ bl MOD04_021DD924
+ ldr r1, _021E0BB8 ; =UNK04_022106C8
+ mov r4, r0
+ ldr r0, [r1]
+ str r4, [r0, #0x24]
+ bl OS_GetTick
+ ldr r2, _021E0BB8 ; =UNK04_022106C8
+ ldr r2, [r2]
+ str r0, [r2, #0x28]
+ str r1, [r2, #0x2c]
+ mov r1, r4
+ add r0, sp, #0
+ bl MOD04_021D9ACC
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E0BB8: .word UNK04_022106C8
+_021E0BBC: .word UNK04_022106CC
+_021E0BC0: .word UNK04_022106C4
+_021E0BC4: .word 0x6C078965
+_021E0BC8: .word 0x5D588B65
+_021E0BCC: .word 0x00269EC3
+_021E0BD0: .word 0x00000251
+_021E0BD4: .word MOD04_021DD944
+_021E0BD8: .word MOD04_021DD904
+_021E0BDC: .word 0x00001C10
+ arm_func_end MOD04_021E0A00
+
+ arm_func_start MOD04_021E0BE0
+MOD04_021E0BE0: ; 0x021E0BE0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ ldr r4, _021E0C7C ; =UNK04_022106C8
+ mov r6, r1
+ ldr r4, [r4]
+ mov r1, r0
+ add r0, r4, #0x48
+ mov r5, r2
+ mov r4, r3
+ bl strcpy
+ ldr r0, _021E0C7C ; =UNK04_022106C8
+ mov r1, r6
+ ldr r0, [r0]
+ add r0, r0, #0x148
+ bl strcpy
+ ldr r0, _021E0C7C ; =UNK04_022106C8
+ ldr r6, [r0]
+ bl OS_GetTick
+ str r0, [r6, #0x34]
+ str r1, [r6, #0x38]
+ mov r3, #1
+ ldr r0, _021E0C7C ; =UNK04_022106C8
+ str r3, [r6, #0x30]
+ ldr r2, [r0]
+ mov r1, #0
+ str r1, [sp]
+ str r5, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r2]
+ add r1, r2, #0x48
+ add r2, r2, #0x148
+ bl MOD04_021F0D8C
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ ldreq r0, _021E0C7C ; =UNK04_022106C8
+ ldreq r0, [r0]
+ streq r4, [r0, #4]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E0C7C: .word UNK04_022106C8
+ arm_func_end MOD04_021E0BE0
+
+ arm_func_start MOD04_021E0C80
+MOD04_021E0C80: ; 0x021E0C80
+ ldr ip, _021E0C90 ; =MOD04_021E0BE0
+ ldr r2, _021E0C94 ; =MOD04_021E0C98
+ mov r3, #2
+ bx ip
+ .align 2, 0
+_021E0C90: .word MOD04_021E0BE0
+_021E0C94: .word MOD04_021E0C98
+ arm_func_end MOD04_021E0C80
+
+ arm_func_start MOD04_021E0C98
+MOD04_021E0C98: ; 0x021E0C98
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r3, _021E0DA0 ; =UNK04_022106C8
+ mov r2, #0
+ ldr ip, [r3]
+ mov r4, r1
+ str r2, [ip, #0x30]
+ ldr r1, [r4]
+ cmp r1, #0
+ bne _021E0D90
+ ldr ip, [r3]
+ ldr r1, [ip, #4]
+ cmp r1, #2
+ bne _021E0D5C
+ ldr r1, [ip, #0x1c]
+ ldr r0, [r4, #4]
+ ldr r1, [r1, #0x1c]
+ cmp r1, r0
+ bne _021E0D48
+ ldr r1, _021E0DA4 ; =UNK04_0220D34C
+ mov r3, #5
+ mov r0, #1
+ str r3, [ip, #4]
+ bl MOD04_021E1E30
+ bl MOD04_021E0DB0
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021E0DA0 ; =UNK04_022106C8
+ ldr r1, [r4, #4]
+ ldr r3, [r0]
+ mov r0, #0
+ ldr r2, [r3, #0x18]
+ ldr r3, [r3, #0x14]
+ blx r3
+ bl MOD04_021DF7C4
+ cmp r0, #0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ ldr r0, [r4, #4]
+ bl MOD04_021EA1E0
+ add sp, sp, #8
+ cmp r0, #0
+ ldmia sp!, {r4, pc}
+_021E0D48:
+ ldr r1, _021E0DA8 ; =0xFFFF15A0
+ mov r0, #6
+ bl MOD04_021E0EAC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_021E0D5C:
+ cmp r1, #3
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ ldr r1, _021E0DAC ; =MOD04_021E0628
+ mov r3, r2
+ str r1, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4, #4]
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
+ add sp, sp, #8
+ cmp r0, #0
+ ldmia sp!, {r4, pc}
+_021E0D90:
+ mov r0, r1
+ bl MOD04_021E0DB0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E0DA0: .word UNK04_022106C8
+_021E0DA4: .word UNK04_0220D34C
+_021E0DA8: .word 0xFFFF15A0
+_021E0DAC: .word MOD04_021E0628
+ arm_func_end MOD04_021E0C98
+
+ arm_func_start MOD04_021E0DB0
+MOD04_021E0DB0: ; 0x021E0DB0
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #4
+ addls pc, pc, r4, lsl #2
+ b _021E0E0C
+_021E0DCC: ; jump table
+ b _021E0E0C ; case 0
+ b _021E0DE0 ; case 1
+ b _021E0DEC ; case 2
+ b _021E0DF8 ; case 3
+ b _021E0E04 ; case 4
+_021E0DE0:
+ mov r0, #9
+ mvn r2, #0
+ b _021E0E0C
+_021E0DEC:
+ mov r0, #9
+ mvn r2, #1
+ b _021E0E0C
+_021E0DF8:
+ mov r0, #6
+ mvn r2, #9
+ b _021E0E0C
+_021E0E04:
+ mov r0, #6
+ mvn r2, #0x13
+_021E0E0C:
+ ldr r1, _021E0E20 ; =0xFFFF11B8
+ add r1, r2, r1
+ bl MOD04_021E0EAC
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E0E20: .word 0xFFFF11B8
+ arm_func_end MOD04_021E0DB0
+
+ arm_func_start MOD04_021E0E24
+MOD04_021E0E24: ; 0x021E0E24
+ ldr r0, _021E0E44 ; =UNK04_022106C8
+ ldr r2, [r0]
+ cmp r2, #0
+ movne r1, #0
+ strne r1, [r2, #4]
+ ldrne r0, [r0]
+ strne r1, [r0, #0x30]
+ bx lr
+ .align 2, 0
+_021E0E44: .word UNK04_022106C8
+ arm_func_end MOD04_021E0E24
+
+ arm_func_start MOD04_021E0E48
+MOD04_021E0E48: ; 0x021E0E48
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E0EA8 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ beq _021E0E94
+ bl MOD04_021D9974
+ bl MOD04_021D991C
+ ldr r1, _021E0EA8 ; =UNK04_022106C8
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, r0
+ ldr r1, [r1, #0x24]
+ bl MOD04_021DD904
+ ldr r0, _021E0EA8 ; =UNK04_022106C8
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x24]
+_021E0E94:
+ ldr r0, _021E0EA8 ; =UNK04_022106C8
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E0EA8: .word UNK04_022106C8
+ arm_func_end MOD04_021E0E48
+
+ arm_func_start MOD04_021E0EAC
+MOD04_021E0EAC: ; 0x021E0EAC
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E0EFC ; =UNK04_022106C8
+ 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, _021E0EFC ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r3, [r0, #0x14]
+ cmp r3, #0
+ beq _021E0EF4
+ ldr r2, [r0, #0x18]
+ mov r0, r4
+ mov r1, #0
+ blx r3
+_021E0EF4:
+ bl MOD04_021E0E24
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E0EFC: .word UNK04_022106C8
+ arm_func_end MOD04_021E0EAC
+
+ arm_func_start MOD04_021E0F00
+MOD04_021E0F00: ; 0x021E0F00
+ ldr r0, _021E0F18 ; =UNK04_022106C8
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrne r0, [r0, #0x1c]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021E0F18: .word UNK04_022106C8
+ arm_func_end MOD04_021E0F00
+
+ arm_func_start MOD04_021E0F1C
+MOD04_021E0F1C: ; 0x021E0F1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ ldr r1, [r0]
+ ldr r0, [r1, #4]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _021E101C
+_021E0F60: ; jump table
+ b _021E101C ; case 0
+ b _021E0F78 ; case 1
+ b _021E0F84 ; case 2
+ b _021E0F84 ; case 3
+ b _021E0F84 ; case 4
+ b _021E101C ; case 5
+_021E0F78:
+ bl MOD04_021E07E4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0F84:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021E0FA0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E0FA0
+ bl MOD04_021F0F18
+_021E0FA0:
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl OS_GetTick
+ ldr r3, _021E1024 ; =UNK04_022106C8
+ ldr r2, _021E1028 ; =0x000082EA
+ ldr ip, [r3]
+ mov r3, #0
+ ldr lr, [ip, #0x34]
+ ldr ip, [ip, #0x38]
+ subs lr, r0, lr
+ sbc r0, r1, ip
+ mov r1, r0, lsl #6
+ orr r1, r1, lr, lsr #26
+ mov r0, lr, lsl #6
+ bl _ll_udiv
+ ldr r2, _021E102C ; =0x0000EA60
+ cmp r1, #0
+ cmpeq r0, r2
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ ldr r1, _021E1030 ; =0xFFFF1172
+ mov r0, #6
+ bl MOD04_021E0EAC
+ ldr r0, _021E1024 ; =UNK04_022106C8
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x30]
+_021E101C:
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1024: .word UNK04_022106C8
+_021E1028: .word 0x000082EA
+_021E102C: .word 0x0000EA60
+_021E1030: .word 0xFFFF1172
+ arm_func_end MOD04_021E0F1C
+
+ arm_func_start MOD04_021E1034
+MOD04_021E1034: ; 0x021E1034
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E106C ; =MOD04_021E0C80
+ mov r1, #0
+ bl MOD04_021E0A00
+ ldr r0, _021E1070 ; =UNK04_022106C8
+ mov r3, #1
+ ldr r2, [r0]
+ mov r1, #0
+ str r3, [r2, #4]
+ ldr r0, [r0]
+ str r1, [r0, #0x30]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E106C: .word MOD04_021E0C80
+_021E1070: .word UNK04_022106C8
+ arm_func_end MOD04_021E1034
+
+ arm_func_start MOD04_021E1074
+MOD04_021E1074: ; 0x021E1074
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr ip, _021E10F4 ; =UNK04_022106C8
+ mov r6, r1
+ mov r5, r2
+ mov r1, #0
+ mov r2, #0x260
+ mov r4, r3
+ str r0, [ip]
+ bl MI_CpuFill8
+ ldr r0, _021E10F4 ; =UNK04_022106C8
+ mov r2, #0
+ ldr r1, [r0]
+ ldr ip, [sp, #0x10]
+ str r5, [r1]
+ ldr r1, [r0]
+ ldr r5, [sp, #0x14]
+ str r2, [r1, #4]
+ ldr r1, [r0]
+ ldr r3, [sp, #0x18]
+ str r4, [r1, #8]
+ ldr r1, [r0]
+ ldr r2, [sp, #0x1c]
+ str ip, [r1, #0xc]
+ ldr r1, [r0]
+ str r5, [r1, #0x10]
+ ldr r1, [r0]
+ str r3, [r1, #0x14]
+ ldr r1, [r0]
+ str r2, [r1, #0x18]
+ ldr r0, [r0]
+ str r6, [r0, #0x1c]
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E10F4: .word UNK04_022106C8
+ arm_func_end MOD04_021E1074
+
+ .section .data
+
+ .global UNK_0220D34C
+UNK04_0220D34C: ; 0x0220D34C
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .section .bss
+
+ .global UNK04_022106C4
+UNK04_022106C4: ; 0x022106C4
+ .space 0x4
+
+ .global UNK04_022106C8
+UNK04_022106C8: ; 0x022106C8
+ .space 0x4
+
+ .global UNK04_022106CC
+UNK04_022106CC: ; 0x022106CC
+ .space 0x4
diff --git a/arm9/modules/04/asm/mod04_0220C680_certs.s b/arm9/modules/04/asm/mod04_0220C680_certs.s
new file mode 100644
index 00000000..0117740f
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_0220C680_certs.s
@@ -0,0 +1,325 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .data
+ .balign 4, 0
+
+ .global UNK04_0220C680
+UNK04_0220C680: ; 0x0220C680
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220C684
+UNK04_0220C684: ; 0x0220C684
+ .word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003
+ .word UNK04_0220C680
+
+ .global UNK04_0220C698
+UNK04_0220C698: ; 0x0220C698
+ .asciz "BE, GlobalSign nv-sa, Root CA, GlobalSign Root CA"
+
+ .balign 4, 0
+ .global UNK04_0220C6CC
+UNK04_0220C6CC: ; 0x0220C6CC
+ .byte 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB
+ .byte 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, 0x95, 0x11, 0x04, 0xBD
+ .byte 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89
+ .byte 0x8E, 0x9A, 0xAF, 0x29, 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70
+ .byte 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, 0x8C, 0x50, 0x15, 0x1C
+ .byte 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35
+ .byte 0x30, 0x8E, 0x5E, 0x43, 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39
+ .byte 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, 0xB8, 0x6C, 0x89, 0xCC
+ .byte 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74
+ .byte 0x6E, 0x93, 0x44, 0x61, 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5
+ .byte 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, 0xF2, 0x24, 0x13, 0x4F
+ .byte 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77
+ .byte 0x8B, 0xB1, 0xDB, 0x1F, 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9
+ .byte 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, 0x26, 0x08, 0xC8, 0x19
+ .byte 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C
+ .byte 0x19, 0x43, 0x4A, 0x07, 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F
+ .byte 0x7F, 0x93, 0x90, 0xCF
+
+ .global UNK04_0220C7CC
+UNK04_0220C7CC: ; 0x0220C7CC
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220C7D0
+UNK04_0220C7D0: ; 0x0220C7D0
+ .word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003
+ .word UNK04_0220C7CC
+
+ .global UNK04_0220C7E4
+UNK04_0220C7E4: ; 0x0220C7E4
+ .asciz "IE, Baltimore, CyberTrust, Baltimore CyberTrust Root"
+
+ .balign 4, 0
+ .global UNK04_0220C81C
+UNK04_0220C81C: ; 0x0220C81C
+ .byte 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A
+ .byte 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29
+ .byte 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2
+ .byte 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52
+ .byte 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8
+ .byte 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8
+ .byte 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F
+ .byte 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12
+ .byte 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68
+ .byte 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC
+ .byte 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C
+ .byte 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F
+ .byte 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9
+ .byte 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99
+ .byte 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68
+ .byte 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90
+ .byte 0xDC, 0x27, 0x1A, 0x39
+
+ .global UNK04_0220C91C
+UNK04_0220C91C: ; 0x0220C91C
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220C920
+UNK04_0220C920: ; 0x0220C920
+ .word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003
+ .word UNK04_0220C91C
+
+ .global UNK04_0220C934
+UNK04_0220C934: ; 0x0220C934
+ .asciz "US, GTE Corporation, GTE CyberTrust Solutions, Inc., GTE CyberTrust Global Root"
+
+ .balign 4, 0
+ .global UNK04_0220C984
+UNK04_0220C984: ; 0x0220C984
+ .byte 0x95, 0x0F, 0xA0, 0xB6
+ .byte 0xF0, 0x50, 0x9C, 0xE8, 0x7A, 0xC7, 0x88, 0xCD, 0xDD, 0x17, 0x0E, 0x2E, 0xB0, 0x94, 0xD0, 0x1B
+ .byte 0x3D, 0x0E, 0xF6, 0x94, 0xC0, 0x8A, 0x94, 0xC7, 0x06, 0xC8, 0x90, 0x97, 0xC8, 0xB8, 0x64, 0x1A
+ .byte 0x7A, 0x7E, 0x6C, 0x3C, 0x53, 0xE1, 0x37, 0x28, 0x73, 0x60, 0x7F, 0xB2, 0x97, 0x53, 0x07, 0x9F
+ .byte 0x53, 0xF9, 0x6D, 0x58, 0x94, 0xD2, 0xAF, 0x8D, 0x6D, 0x88, 0x67, 0x80, 0xE6, 0xED, 0xB2, 0x95
+ .byte 0xCF, 0x72, 0x31, 0xCA, 0xA5, 0x1C, 0x72, 0xBA, 0x5C, 0x02, 0xE7, 0x64, 0x42, 0xE7, 0xF9, 0xA9
+ .byte 0x2C, 0xD6, 0x3A, 0x0D, 0xAC, 0x8D, 0x42, 0xAA, 0x24, 0x01, 0x39, 0xE6, 0x9C, 0x3F, 0x01, 0x85
+ .byte 0x57, 0x0D, 0x58, 0x87, 0x45, 0xF8, 0xD3, 0x85, 0xAA, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80
+ .byte 0x3F, 0x12, 0x15, 0xC7, 0x79, 0xB4, 0x1F, 0x05, 0x2F, 0x3B, 0x62, 0x99
+
+ .global UNK04_0220CA04
+UNK04_0220CA04: ; 0x0220CA04
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CA08
+UNK04_0220CA08: ; 0x0220CA08
+ .word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003
+ .word UNK04_0220CA04
+
+ .global UNK04_0220CA1C
+UNK04_0220CA1C: ; 0x0220CA1C
+ .asciz "US, GTE Corporation, GTE CyberTrust Root"
+
+ .balign 4, 0
+ .global UNK04_0220CA48
+UNK04_0220CA48: ; 0x0220CA48
+ .byte 0xB8, 0xE6, 0x4F, 0xBA, 0xDB, 0x98, 0x7C, 0x71, 0x7C, 0xAF, 0x44, 0xB7, 0xD3, 0x0F, 0x46, 0xD9
+ .byte 0x64, 0xE5, 0x93, 0xC1, 0x42, 0x8E, 0xC7, 0xBA, 0x49, 0x8D, 0x35, 0x2D, 0x7A, 0xE7, 0x8B, 0xBD
+ .byte 0xE5, 0x05, 0x31, 0x59, 0xC6, 0xB1, 0x2F, 0x0A, 0x0C, 0xFB, 0x9F, 0xA7, 0x3F, 0xA2, 0x09, 0x66
+ .byte 0x84, 0x56, 0x1E, 0x37, 0x29, 0x1B, 0x87, 0xE9, 0x7E, 0x0C, 0xCA, 0x9A, 0x9F, 0xA5, 0x7F, 0xF5
+ .byte 0x15, 0x94, 0xA3, 0xD5, 0xA2, 0x46, 0x82, 0xD8, 0x68, 0x4C, 0xD1, 0x37, 0x15, 0x06, 0x68, 0xAF
+ .byte 0xBD, 0xF8, 0xB0, 0xB3, 0xF0, 0x29, 0xF5, 0x95, 0x5A, 0x09, 0x16, 0x61, 0x77, 0x0A, 0x22, 0x25
+ .byte 0xD4, 0x4F, 0x45, 0xAA, 0xC7, 0xBD, 0xE5, 0x96, 0xDF, 0xF9, 0xD4, 0xA8, 0x8E, 0x42, 0xCC, 0x24
+ .byte 0xC0, 0x1E, 0x91, 0x27, 0x4A, 0xB5, 0x6D, 0x06, 0x80, 0x63, 0x39, 0xC4, 0xA2, 0x5E, 0x38, 0x03
+
+ .global UNK04_0220CAC8
+UNK04_0220CAC8: ; 0x0220CAC8
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CACC
+UNK04_0220CACC: ; 0x0220CACC
+ .word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003
+ .word UNK04_0220CAC8
+
+ .global UNK04_0220CAE0
+UNK04_0220CAE0: ; 0x0220CAE0
+ .asciz "US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com"
+
+ .balign 4, 0
+ .global UNK04_0220CB30
+UNK04_0220CB30: ; 0x0220CB30
+ .byte 0xB3, 0xCD, 0x79, 0x97, 0x77, 0x5D, 0x8A, 0xAF
+ .byte 0x86, 0xA8, 0xE8, 0xD7, 0x73, 0x1C, 0x77, 0xDF, 0x10, 0x90, 0x1F, 0x81, 0xF8, 0x41, 0x9E, 0x21
+ .byte 0x55, 0xDF, 0xBC, 0xFC, 0x63, 0xFB, 0x19, 0x43, 0xF1, 0xF6, 0xC4, 0x72, 0x42, 0x49, 0xBD, 0xAD
+ .byte 0x44, 0x68, 0x4E, 0xF3, 0xDA, 0x1D, 0xE6, 0x4D, 0xD8, 0xF9, 0x59, 0x88, 0xDC, 0xAE, 0x3E, 0x9B
+ .byte 0x38, 0x09, 0xCA, 0x7F, 0xFF, 0xDC, 0x24, 0xA2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xD4, 0x84, 0x40
+ .byte 0x10, 0xB8, 0xEC, 0x3E, 0xDB, 0x2D, 0x93, 0xC8, 0x11, 0xC8, 0xFD, 0x78, 0x2D, 0x61, 0xAD, 0x31
+ .byte 0xAE, 0x86, 0x26, 0xB0, 0xFD, 0x5A, 0x3F, 0xA1, 0x3D, 0xBF, 0xE2, 0x4B, 0x49, 0xEC, 0xCE, 0x66
+ .byte 0x98, 0x58, 0x26, 0x12, 0xC0, 0xFB, 0xF4, 0x77, 0x65, 0x1B, 0xEA, 0xFB, 0xCB, 0x7F, 0xE0, 0x8C
+ .byte 0xCB, 0x02, 0xA3, 0x4E, 0x5E, 0x8C, 0xEA, 0x9B
+
+ .global UNK04_0220CBB0
+UNK04_0220CBB0: ; 0x0220CBB0
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CBB4
+UNK04_0220CBB4: ; 0x0220CBB4
+ .word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003
+ .word UNK04_0220CBB0
+
+ .global UNK04_0220CBC8
+UNK04_0220CBC8: ; 0x0220CBC8
+ .byte 0xD2, 0x36, 0x36, 0x6A, 0x8B, 0xD7, 0xC2, 0x5B, 0x9E, 0xDA, 0x81, 0x41, 0x62, 0x8F, 0x38, 0xEE
+ .byte 0x49, 0x04, 0x55, 0xD6, 0xD0, 0xEF, 0x1C, 0x1B, 0x95, 0x16, 0x47, 0xEF, 0x18, 0x48, 0x35, 0x3A
+ .byte 0x52, 0xF4, 0x2B, 0x6A, 0x06, 0x8F, 0x3B, 0x2F, 0xEA, 0x56, 0xE3, 0xAF, 0x86, 0x8D, 0x9E, 0x17
+ .byte 0xF7, 0x9E, 0xB4, 0x65, 0x75, 0x02, 0x4D, 0xEF, 0xCB, 0x09, 0xA2, 0x21, 0x51, 0xD8, 0x9B, 0xD0
+ .byte 0x67, 0xD0, 0xBA, 0x0D, 0x92, 0x06, 0x14, 0x73, 0xD4, 0x93, 0xCB, 0x97, 0x2A, 0x00, 0x9C, 0x5C
+ .byte 0x4E, 0x0C, 0xBC, 0xFA, 0x15, 0x52, 0xFC, 0xF2, 0x44, 0x6E, 0xDA, 0x11, 0x4A, 0x6E, 0x08, 0x9F
+ .byte 0x2F, 0x2D, 0xE3, 0xF9, 0xAA, 0x3A, 0x86, 0x73, 0xB6, 0x46, 0x53, 0x58, 0xC8, 0x89, 0x05, 0xBD
+ .byte 0x83, 0x11, 0xB8, 0x73, 0x3F, 0xAA, 0x07, 0x8D, 0xF4, 0x42, 0x4D, 0xE7, 0x40, 0x9D, 0x1C, 0x37
+
+ .global UNK04_0220CC48
+UNK04_0220CC48: ; 0x0220CC48
+ .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, "
+ .asciz "Thawte Premium Server CA, premium-server@thawte.com"
+
+ .balign 4, 0
+ .global UNK04_0220CCD0
+UNK04_0220CCD0: ; 0x0220CCD0
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CCD4
+UNK04_0220CCD4: ; 0x0220CCD4
+ .word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003
+ .word UNK04_0220CCD0
+
+ .global UNK04_0220CCE8
+UNK04_0220CCE8: ; 0x0220CCE8
+ .ascii "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, "
+ .asciz "Thawte Server CA, server-certs@thawte.com"
+
+ .balign 4, 0
+ .global UNK04_0220CD68
+UNK04_0220CD68: ; 0x0220CD68
+ .byte 0xD3, 0xA4, 0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 0x68, 0x75
+ .byte 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20
+ .byte 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15
+ .byte 0x19, 0x02, 0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 0x38, 0xCD
+ .byte 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B
+ .byte 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C
+ .byte 0x43, 0xDE, 0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 0xD9, 0x5B
+ .byte 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D
+
+ .global UNK04_0220CDE8
+UNK04_0220CDE8: ; 0x0220CDE8
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CDEC
+UNK04_0220CDEC: ; 0x0220CDEC
+ .word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003
+ .word UNK04_0220CDE8
+
+ .global UNK04_0220CE00
+UNK04_0220CE00: ; 0x0220CE00
+ .byte 0xCC, 0x5E, 0xD1, 0x11, 0x5D, 0x5C, 0x69, 0xD0
+ .byte 0xAB, 0xD3, 0xB9, 0x6A, 0x4C, 0x99, 0x1F, 0x59, 0x98, 0x30, 0x8E, 0x16, 0x85, 0x20, 0x46, 0x6D
+ .byte 0x47, 0x3F, 0xD4, 0x85, 0x20, 0x84, 0xE1, 0x6D, 0xB3, 0xF8, 0xA4, 0xED, 0x0C, 0xF1, 0x17, 0x0F
+ .byte 0x3B, 0xF9, 0xA7, 0xF9, 0x25, 0xD7, 0xC1, 0xCF, 0x84, 0x63, 0xF2, 0x7C, 0x63, 0xCF, 0xA2, 0x47
+ .byte 0xF2, 0xC6, 0x5B, 0x33, 0x8E, 0x64, 0x40, 0x04, 0x68, 0xC1, 0x80, 0xB9, 0x64, 0x1C, 0x45, 0x77
+ .byte 0xC7, 0xD8, 0x6E, 0xF5, 0x95, 0x29, 0x3C, 0x50, 0xE8, 0x34, 0xD7, 0x78, 0x1F, 0xA8, 0xBA, 0x6D
+ .byte 0x43, 0x91, 0x95, 0x8F, 0x45, 0x57, 0x5E, 0x7E, 0xC5, 0xFB, 0xCA, 0xA4, 0x04, 0xEB, 0xEA, 0x97
+ .byte 0x37, 0x54, 0x30, 0x6F, 0xBB, 0x01, 0x47, 0x32, 0x33, 0xCD, 0xDC, 0x57, 0x9B, 0x64, 0x69, 0x61
+ .byte 0xF8, 0x9B, 0x1D, 0x1C, 0x89, 0x4F, 0x5C, 0x67
+
+ .global UNK04_0220CE80
+UNK04_0220CE80: ; 0x0220CE80
+ .ascii "US, VeriSign, Inc., Class 3 Public Primary Certification Authority - G2, (c) 1998 VeriSign, Inc."
+ .asciz " - For authorized use only, VeriSign Trust Network"
+
+ .balign 4, 0
+ .global UNK04_0220CF14
+UNK04_0220CF14: ; 0x0220CF14
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220CF18
+UNK04_0220CF18: ; 0x0220CF18
+ .word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003
+ .word UNK04_0220CF14
+
+ .global UNK04_0220CF2C
+UNK04_0220CF2C: ; 0x0220CF2C
+ .ascii "US, VeriSign, Inc., VeriSign Trust Network, (c) 1999 VeriSign, Inc. - For authorized use only, "
+ .asciz "VeriSign Class 3 Public Primary Certification Authority - G3"
+
+ .balign 4, 0
+ .global UNK04_0220CFC8
+UNK04_0220CFC8: ; 0x0220CFC8
+ .byte 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, 0x73, 0xBD, 0xF8, 0xC9
+ .byte 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5
+ .byte 0x61, 0xC1, 0x16, 0x40, 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D
+ .byte 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, 0x61, 0x59, 0xA4, 0x67
+ .byte 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69
+ .byte 0xBC, 0x83, 0x17, 0x64, 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0
+ .byte 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, 0x15, 0x1C, 0x70, 0xBC
+ .byte 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3
+ .byte 0x26, 0x11, 0x54, 0xA2, 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED
+ .byte 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, 0x2F, 0x95, 0x93, 0xBF
+ .byte 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76
+ .byte 0xE6, 0xB7, 0x46, 0xB7, 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8
+ .byte 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, 0x0C, 0xF0, 0xDE, 0xC2
+ .byte 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63
+ .byte 0xD3, 0x9E, 0x62, 0x37, 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D
+ .byte 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, 0x68, 0xB9, 0x57, 0x97
+
+ .global UNK04_0220D0C8
+UNK04_0220D0C8: ; 0x0220D0C8
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220D0CC
+UNK04_0220D0CC: ; 0x0220D0CC
+ .word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003
+ .word UNK04_0220D0C8
+
+ .global UNK04_0220D0E0
+UNK04_0220D0E0: ; 0x0220D0E0
+ .asciz "US, VeriSign, Inc., Class 3 Public Primary Certification Authority"
+
+ .balign 4, 0
+ .global UNK04_0220D124
+UNK04_0220D124: ; 0x0220D124
+ .byte 0xC9, 0x5C, 0x59, 0x9E
+ .byte 0xF2, 0x1B, 0x8A, 0x01, 0x14, 0xB4, 0x10, 0xDF, 0x04, 0x40, 0xDB, 0xE3, 0x57, 0xAF, 0x6A, 0x45
+ .byte 0x40, 0x8F, 0x84, 0x0C, 0x0B, 0xD1, 0x33, 0xD9, 0xD9, 0x11, 0xCF, 0xEE, 0x02, 0x58, 0x1F, 0x25
+ .byte 0xF7, 0x2A, 0xA8, 0x44, 0x05, 0xAA, 0xEC, 0x03, 0x1F, 0x78, 0x7F, 0x9E, 0x93, 0xB9, 0x9A, 0x00
+ .byte 0xAA, 0x23, 0x7D, 0xD6, 0xAC, 0x85, 0xA2, 0x63, 0x45, 0xC7, 0x72, 0x27, 0xCC, 0xF4, 0x4C, 0xC6
+ .byte 0x75, 0x71, 0xD2, 0x39, 0xEF, 0x4F, 0x42, 0xF0, 0x75, 0xDF, 0x0A, 0x90, 0xC6, 0x8E, 0x20, 0x6F
+ .byte 0x98, 0x0F, 0xF8, 0xAC, 0x23, 0x5F, 0x70, 0x29, 0x36, 0xA4, 0xC9, 0x86, 0xE7, 0xB1, 0x9A, 0x20
+ .byte 0xCB, 0x53, 0xA5, 0x85, 0xE7, 0x3D, 0xBE, 0x7D, 0x9A, 0xFE, 0x24, 0x45, 0x33, 0xDC, 0x76, 0x15
+ .byte 0xED, 0x0F, 0xA2, 0x71, 0x64, 0x4C, 0x65, 0x2E, 0x81, 0x68, 0x45, 0xA7
+
+ .global UNK04_0220D1A4
+UNK04_0220D1A4: ; 0x0220D1A4
+ .byte 0x01, 0x00, 0x01
+
+ .balign 4, 0
+ .global UNK04_0220D1A8
+UNK04_0220D1A8: ; 0x0220D1A8
+ .word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003
+ .word UNK04_0220D1A4
+
+ .global UNK04_0220D1BC
+UNK04_0220D1BC: ; 0x0220D1BC
+ .asciz "US, RSA Data Security, Inc., Secure Server Certification Authority"
+
+ .balign 4, 0
+ .global UNK04_0220D200
+UNK04_0220D200: ; 0x0220D200
+ .byte 0x92, 0xCE, 0x7A, 0xC1, 0xAE, 0x83, 0x3E, 0x5A
+ .byte 0xAA, 0x89, 0x83, 0x57, 0xAC, 0x25, 0x01, 0x76, 0x0C, 0xAD, 0xAE, 0x8E, 0x2C, 0x37, 0xCE, 0xEB
+ .byte 0x35, 0x78, 0x64, 0x54, 0x03, 0xE5, 0x84, 0x40, 0x51, 0xC9, 0xBF, 0x8F, 0x08, 0xE2, 0x8A, 0x82
+ .byte 0x08, 0xD2, 0x16, 0x86, 0x37, 0x55, 0xE9, 0xB1, 0x21, 0x02, 0xAD, 0x76, 0x68, 0x81, 0x9A, 0x05
+ .byte 0xA2, 0x4B, 0xC9, 0x4B, 0x25, 0x66, 0x22, 0x56, 0x6C, 0x88, 0x07, 0x8F, 0xF7, 0x81, 0x59, 0x6D
+ .byte 0x84, 0x07, 0x65, 0x70, 0x13, 0x71, 0x76, 0x3E, 0x9B, 0x77, 0x4C, 0xE3, 0x50, 0x89, 0x56, 0x98
+ .byte 0x48, 0xB9, 0x1D, 0xA7, 0x29, 0x1A, 0x13, 0x2E, 0x4A, 0x11, 0x59, 0x9C, 0x1E, 0x15, 0xD5, 0x49
+ .byte 0x54, 0x2C, 0x73, 0x3A, 0x69, 0x82, 0xB1, 0x97, 0x39, 0x9C, 0x6D, 0x70, 0x67, 0x48, 0xE5, 0xDD
+ .byte 0x2D, 0xD6, 0xC8, 0x1E, 0x7B, 0x00, 0x00, 0x00
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index c79684a0..ceb1a1cf 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -1,4 +1,5 @@
#include "scrcmd.h"
+#include "unk_0200CA44.h"
#include "unk_0204639C.h"
#include "main.h"
#include "options.h"
@@ -54,11 +55,11 @@ extern void MOD05_021E26CC(u32 param0, u8 param1);
extern void MOD05_021E2B80(u32 param0, u8 param1);
extern void MOD05_021E2B9C(u32 param0, u8 param1);
extern u32 FUN_0205AEA4(u32 param0, const void *ptr);
-extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2);
extern u32 FUN_02058B2C(u32 param0);
extern u32 FUN_02058B4C(u32 param0);
extern u32 FUN_020580B4(u32 param0, u32 param1);
extern u32 FUN_02058060(u32 param0, u32 param1);
+extern void FUN_0203B1A8(u32 param0, void *param1);
extern u8 *UNK_020F34E0;
@@ -79,6 +80,7 @@ static BOOL FUN_0203AD2C(struct ScriptContext *ctx);
static BOOL FUN_0203AD78(struct ScriptContext *ctx);
static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
static BOOL FUN_0203B158(struct ScriptContext *ctx);
+static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2);
extern u8 sScriptConditionTable[6][3];
@@ -1355,13 +1357,13 @@ THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx)
if (unk6 < unk2)
{
unk4[pos * 2] = 12;
- unk4[pos * 2 + 1] = unk2 - unk6;
+ unk4[pos * 2 + 1] = (u16)(unk2 - unk6);
pos++;
}
else if (unk6 > unk2)
{
unk4[pos * 2] = 13;
- unk4[pos * 2 + 1] = unk6 - unk2;
+ unk4[pos * 2 + 1] = (u16)(unk6 - unk2);
pos++;
}
@@ -1405,3 +1407,17 @@ THUMB_FUNC static BOOL FUN_0203B158(struct ScriptContext *ctx)
u8 *unk = FUN_02039438(ctx->unk80, 4);
return *unk == 0 ? TRUE : FALSE;
}
+
+THUMB_FUNC static void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2)
+{
+ UnkStruct_0203B174 *unkStruct = (UnkStruct_0203B174 *)AllocFromHeap(4, sizeof(UnkStruct_0203B174));
+ if (unkStruct == NULL)
+ {
+ GF_AssertFail();
+ return;
+ }
+ unkStruct->Unk0C = arg;
+ unkStruct->Unk04 = param1;
+ unkStruct->Unk08 = param2;
+ unkStruct->Unk00 = FUN_0200CA44(FUN_0203B1A8, unkStruct, 0);
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 8c89e230..7a0ab21e 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -15,6 +15,14 @@ struct UnkStruct_0203A288 {
u8 padding[1];
};
+typedef struct UnkStruct_0203B174
+{
+ BOOL Unk00;
+ u32 Unk04;
+ void *Unk08;
+ struct UnkSavStruct80 *Unk0C;
+} UnkStruct_0203B174;
+
//scrcmd.c
BOOL ScrCmd_Nop(struct ScriptContext* ctx);
BOOL ScrCmd_Dummy(struct ScriptContext* ctx);