summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/global.inc5
-rw-r--r--arm9/modules/04/asm/arm_04.s1494
-rw-r--r--arm9/modules/04/asm/mod04_021DB730.s1512
4 files changed, 1522 insertions, 1490 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index b0cf06f4..834780fa 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -661,6 +661,7 @@ Overlay MODULE_04
Object mod04_021D8D18.o
Object mod04_021D9C2C.o
Object mod04_021DA260.o
+ Object mod04_021DB730.o
Object arm_04.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index 81856abb..18dca976 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6131,6 +6131,11 @@
.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_021DD36C
.extern MOD04_021DD4FC
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 7d791941..26b8d60b 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,1364 +3,6 @@
.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
-
arm_func_start MOD04_021DCA84
MOD04_021DCA84: ; 0x021DCA84
stmdb sp!, {r4, r5, r6, r7, r8, lr}
@@ -57015,12 +55657,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
@@ -57172,124 +55815,7 @@ UNK04_0220BE70: ; 0x0220BE70
.section .data
- .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
+ .global UNK04_0220C520
UNK04_0220C520: ; 0x0220C520
.byte 0x44, 0x65, 0x63, 0x00
@@ -60465,18 +58991,6 @@ UNK04_0220FBA4: ; 0x0220FBA4
.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
-
.global UNK04_022104F8
UNK04_022104F8: ; 0x022104F8
.space 0x4
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