summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/global.inc14
-rw-r--r--arm9/modules/04/asm/arm_04.s1684
-rw-r--r--arm9/modules/04/asm/mod04_021D9C2C.s2
-rw-r--r--arm9/modules/04/asm/mod04_021DA260.s1689
5 files changed, 1716 insertions, 1674 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 08253453..b0cf06f4 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -660,6 +660,7 @@ Overlay MODULE_04
Object mod04_021D868C.o
Object mod04_021D8D18.o
Object mod04_021D9C2C.o
+ Object mod04_021DA260.o
Object arm_04.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index 09d6fe08..81856abb 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6123,6 +6123,7 @@
.extern MOD04_021DA334
.extern MOD04_021DA388
.extern MOD04_021DA3DC
+.extern MOD04_021DAACC
.extern MOD04_021DAB68
.extern MOD04_021DAC98
.extern MOD04_021DAE4C
@@ -6131,6 +6132,8 @@
.extern MOD04_021DB570
.extern MOD04_021DB608
.extern MOD04_021DCA84
+.extern MOD04_021DD36C
+.extern MOD04_021DD4FC
.extern MOD04_021DD6F0
.extern MOD04_021DD718
.extern MOD04_021DD808
@@ -8268,6 +8271,17 @@
.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
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index bbdafb6a..7d791941 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,1499 +3,6 @@
.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
-
arm_func_start MOD04_021DB730
MOD04_021DB730: ; 0x021DB730
stmdb sp!, {r4, lr}
@@ -58665,175 +57172,6 @@ UNK04_0220BE70: ; 0x0220BE70
.section .data
- .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
@@ -59075,7 +57413,7 @@ UNK04_0220C63C: ; 0x0220C63C
UNK04_0220C680: ; 0x0220C680
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220C684
+ .global UNK04_0220C684
UNK04_0220C684: ; 0x0220C684
.word UNK04_0220C698, 0x00000100, UNK04_0220C6CC, 0x00000003
.word UNK04_0220C680
@@ -59111,7 +57449,7 @@ UNK04_0220C6CC: ; 0x0220C6CC
UNK04_0220C7CC: ; 0x0220C7CC
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220C7D0
+ .global UNK04_0220C7D0
UNK04_0220C7D0: ; 0x0220C7D0
.word UNK04_0220C7E4, 0x00000100, UNK04_0220C81C, 0x00000003
.word UNK04_0220C7CC
@@ -59148,7 +57486,7 @@ UNK04_0220C81C: ; 0x0220C81C
UNK04_0220C91C: ; 0x0220C91C
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220C920
+ .global UNK04_0220C920
UNK04_0220C920: ; 0x0220C920
.word UNK04_0220C934, 0x00000080, UNK04_0220C984, 0x00000003
.word UNK04_0220C91C
@@ -59178,7 +57516,7 @@ UNK04_0220C984: ; 0x0220C984
UNK04_0220CA04: ; 0x0220CA04
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220CA08
+ .global UNK04_0220CA08
UNK04_0220CA08: ; 0x0220CA08
.word UNK04_0220CA1C, 0x00000080, UNK04_0220CA48, 0x00000003
.word UNK04_0220CA04
@@ -59204,7 +57542,7 @@ UNK04_0220CA48: ; 0x0220CA48
UNK04_0220CAC8: ; 0x0220CAC8
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220CACC
+ .global UNK04_0220CACC
UNK04_0220CACC: ; 0x0220CACC
.word UNK04_0220CAE0, 0x00000080, UNK04_0220CB30, 0x00000003
.word UNK04_0220CAC8
@@ -59234,7 +57572,7 @@ UNK04_0220CB30: ; 0x0220CB30
UNK04_0220CBB0: ; 0x0220CBB0
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220CBB4
+ .global UNK04_0220CBB4
UNK04_0220CBB4: ; 0x0220CBB4
.word UNK04_0220CC48, 0x00000080, UNK04_0220CBC8, 0x00000003
.word UNK04_0220CBB0
@@ -59266,7 +57604,7 @@ UNK04_0220CC48: ; 0x0220CC48
UNK04_0220CCD0: ; 0x0220CCD0
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220CCD4
+ .global UNK04_0220CCD4
UNK04_0220CCD4: ; 0x0220CCD4
.word UNK04_0220CCE8, 0x00000080, UNK04_0220CD68, 0x00000003
.word UNK04_0220CCD0
@@ -59297,7 +57635,7 @@ UNK04_0220CD68: ; 0x0220CD68
UNK04_0220CDE8: ; 0x0220CDE8
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220CDEC
+ .global UNK04_0220CDEC
UNK04_0220CDEC: ; 0x0220CDEC
.word UNK04_0220CE80, 0x00000080, UNK04_0220CE00, 0x00000003
.word UNK04_0220CDE8
@@ -59331,7 +57669,7 @@ UNK04_0220CE80: ; 0x0220CE80
UNK04_0220CF14: ; 0x0220CF14
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220CF18
+ .global UNK04_0220CF18
UNK04_0220CF18: ; 0x0220CF18
.word UNK04_0220CF2C, 0x00000100, UNK04_0220CFC8, 0x00000003
.word UNK04_0220CF14
@@ -59372,7 +57710,7 @@ UNK04_0220CFC8: ; 0x0220CFC8
UNK04_0220D0C8: ; 0x0220D0C8
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220D0CC
+ .global UNK04_0220D0CC
UNK04_0220D0CC: ; 0x0220D0CC
.word UNK04_0220D0E0, 0x00000080, UNK04_0220D124, 0x00000003
.word UNK04_0220D0C8
@@ -59401,7 +57739,7 @@ UNK04_0220D124: ; 0x0220D124
UNK04_0220D1A4: ; 0x0220D1A4
.byte 0x01, 0x00, 0x01, 0x00
- .global UNK_0220D1A8
+ .global UNK04_0220D1A8
UNK04_0220D1A8: ; 0x0220D1A8
.word UNK04_0220D1BC, 0x0000007D, UNK04_0220D200, 0x00000003
.word UNK04_0220D1A4
diff --git a/arm9/modules/04/asm/mod04_021D9C2C.s b/arm9/modules/04/asm/mod04_021D9C2C.s
index 206df265..fdff3193 100644
--- a/arm9/modules/04/asm/mod04_021D9C2C.s
+++ b/arm9/modules/04/asm/mod04_021D9C2C.s
@@ -542,7 +542,7 @@ UNK04_0220C0B8: ; 0x0220C0B8
.asciz "%02d%02d%02d%02d%02d%02d"
.balign 4, 0
- .global UNK_0220C0D4
+ .global UNK04_0220C0D4
UNK04_0220C0D4: ; 0x0220C0D4
.asciz "%02d:0000000-00"
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