summaryrefslogtreecommitdiff
path: root/arm9/modules/04/asm/mod04_021E10F8.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/04/asm/mod04_021E10F8.s')
-rw-r--r--arm9/modules/04/asm/mod04_021E10F8.s1670
1 files changed, 1670 insertions, 0 deletions
diff --git a/arm9/modules/04/asm/mod04_021E10F8.s b/arm9/modules/04/asm/mod04_021E10F8.s
new file mode 100644
index 00000000..0216e485
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021E10F8.s
@@ -0,0 +1,1670 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021E10F8
+MOD04_021E10F8: ; 0x021E10F8
+ ldr r0, _021E1108 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bx lr
+ .align 2, 0
+_021E1108: .word UNK04_022106D0
+ arm_func_end MOD04_021E10F8
+
+ arm_func_start MOD04_021E110C
+MOD04_021E110C: ; 0x021E110C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x24
+ mov sl, r1
+ ldr r0, [sl]
+ mov r8, #0
+ cmp r0, #0
+ mov r0, #1
+ str r0, [sp]
+ addne sp, sp, #0x24
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r4, _021E12B4 ; =UNK04_022106D0
+ mov sb, r8
+ ldr r2, [r4]
+ ldr r1, [r2, #0x14]
+ cmp r1, #0
+ ble _021E1274
+ mov r7, r8
+ str r0, [sp, #4]
+ mov fp, r8
+ mov r5, r0
+_021E115C:
+ ldr r0, [r2, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #1
+ bne _021E11C8
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ add r2, sp, #8
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_LoginIdToUserName
+ add r0, sp, #8
+ add r1, sl, #0x8e
+ bl strcmp
+ cmp r0, #0
+ bne _021E125C
+ ldr r0, [r4]
+ ldr r1, [sl, #4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWCi_SetBuddyFriendData
+ mov r8, r5
+ b _021E125C
+_021E11C8:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ beq _021E11F8
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E125C
+_021E11F8:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #1
+ streq fp, [sp]
+ beq _021E125C
+ ldr r6, [sl, #4]
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_GetGsProfileId
+ cmp r6, r0
+ bne _021E125C
+ ldr r0, [r4]
+ mov r1, r6
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWCi_SetBuddyFriendData
+ ldr r8, [sp, #4]
+_021E125C:
+ ldr r2, [r4]
+ add sb, sb, #1
+ ldr r1, [r2, #0x14]
+ add r7, r7, #0xc
+ cmp sb, r1
+ blt _021E115C
+_021E1274:
+ cmp r8, #0
+ addeq sp, sp, #0x24
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [r2, #0x18]
+ ldr r2, [sl, #4]
+ bl MOD04_021E17F0
+ ldr r1, [sp]
+ cmp r1, #0
+ beq _021E129C
+ bl MOD04_021E1DA4
+_021E129C:
+ ldr r0, _021E12B4 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x1d]
+ add sp, sp, #0x24
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E12B4: .word UNK04_022106D0
+ arm_func_end MOD04_021E110C
+
+ arm_func_start MOD04_021E12B8
+MOD04_021E12B8: ; 0x021E12B8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x1c
+ mov sb, r1
+ ldr r1, [sb]
+ mov sl, r0
+ cmp r1, #0
+ mov fp, #0
+ addne sp, sp, #0x1c
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r4, _021E1410 ; =UNK04_022106D0
+ mov r8, fp
+ ldr r1, [r4]
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ ble _021E13E4
+ add r0, sb, #0x8e
+ mov r7, fp
+ mov r5, #1
+ str r0, [sp]
+_021E1304:
+ ldr r0, [r1, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #1
+ bne _021E136C
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ add r2, sp, #4
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_LoginIdToUserName
+ ldr r1, [sp]
+ add r0, sp, #4
+ bl strcmp
+ cmp r0, #0
+ bne _021E13CC
+ ldr r1, [sb, #4]
+ mov r0, sl
+ bl MOD04_021F0944
+ ldr r0, [r4]
+ ldr r1, [sb, #4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_SetGsProfileId
+ mov fp, r5
+ b _021E13CC
+_021E136C:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ beq _021E139C
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r7
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E13CC
+_021E139C:
+ ldr r6, [sb, #4]
+ bl MOD04_021E0F00
+ ldr r1, [r4]
+ ldr r1, [r1, #0x18]
+ add r1, r1, r7
+ bl DWC_GetGsProfileId
+ cmp r6, r0
+ bne _021E13CC
+ mov r0, sl
+ mov r1, r6
+ bl MOD04_021F0944
+ mov fp, r5
+_021E13CC:
+ ldr r1, [r4]
+ add r8, r8, #1
+ ldr r0, [r1, #0x14]
+ add r7, r7, #0xc
+ cmp r8, r0
+ blt _021E1304
+_021E13E4:
+ cmp fp, #0
+ beq _021E13FC
+ ldr r0, [sb, #4]
+ bl MOD04_021E17BC
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E13FC:
+ ldr r1, [sb, #4]
+ mov r0, sl
+ bl MOD04_021F0864
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1410: .word UNK04_022106D0
+ arm_func_end MOD04_021E12B8
+
+ arm_func_start MOD04_021E1414
+MOD04_021E1414: ; 0x021E1414
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov sb, r1
+ ldr r1, [sb]
+ mov sl, r0
+ mov r8, r2
+ cmp r1, #0
+ bne _021E15FC
+ ldr r0, [sb, #4]
+ cmp r0, #0
+ beq _021E15FC
+ mov r0, #0xc
+ ldr r1, _021E1670 ; =UNK04_022106D0
+ mul r6, r8, r0
+ ldr r0, [r1]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWC_GetFriendDataType
+ cmp r0, #0
+ beq _021E15FC
+ ldr r7, _021E1670 ; =UNK04_022106D0
+ ldr r1, [r7]
+ ldr r0, [r1]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, #1
+ strb r0, [r1, #0x1d]
+ ldr r0, [sb, #4]
+ mov r5, #0
+ cmp r0, #0
+ ble _021E14FC
+ mov r4, r5
+_021E1498:
+ ldr r0, [r7]
+ ldr r1, [sb, #0xc]
+ ldr r0, [r0, #0x18]
+ ldr r2, [r1, r4]
+ mov r1, r8
+ bl MOD04_021E1900
+ cmp r0, #0
+ beq _021E14E8
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r2, #1
+ ldr r4, [r0]
+ ldr r1, _021E1674 ; =0x00000601
+ ldrb r3, [r4, #0x1c]
+ add sp, sp, #4
+ add r3, r3, #1
+ strb r3, [r4, #0x1c]
+ ldr r0, [r0]
+ strb r2, [r0, #0x1e]
+ str r1, [sb, #8]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E14E8:
+ ldr r0, [sb, #4]
+ add r5, r5, #1
+ cmp r5, r0
+ add r4, r4, #0xac
+ blt _021E1498
+_021E14FC:
+ cmp r0, #0
+ mov r5, #0
+ ble _021E15C4
+ mov r7, r5
+ add fp, sp, #0
+ mvn r4, #0
+_021E1514:
+ ldr r1, [sb, #0xc]
+ mov r0, sl
+ ldr r1, [r1, r7]
+ mov r2, fp
+ bl MOD04_021F0664
+ bl MOD04_021E1678
+ ldr r0, [sp]
+ cmp r0, r4
+ bne _021E1548
+ ldr r0, [sb, #0xc]
+ ldr r0, [r0, r7]
+ bl MOD04_021E17BC
+ b _021E15B0
+_021E1548:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r1, [sb, #0xc]
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWC_SetGsProfileId
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x18]
+ add r0, r0, r6
+ bl DWCi_SetBuddyFriendData
+ mov r0, r8
+ bl MOD04_021E1DA4
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r2, #1
+ ldr r4, [r0]
+ ldr r1, _021E1674 ; =0x00000601
+ ldrb r3, [r4, #0x1c]
+ add sp, sp, #4
+ add r3, r3, #1
+ strb r3, [r4, #0x1c]
+ ldr r0, [r0]
+ strb r2, [r0, #0x1e]
+ str r1, [sb, #8]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E15B0:
+ ldr r0, [sb, #4]
+ add r5, r5, #1
+ cmp r5, r0
+ add r7, r7, #0xac
+ blt _021E1514
+_021E15C4:
+ ldr r0, [sb, #8]
+ cmp r0, #0x600
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r3, [r0]
+ add sp, sp, #4
+ ldrb r2, [r3, #0x1c]
+ add r2, r2, #1
+ strb r2, [r3, #0x1c]
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E15FC:
+ ldr r0, [sb]
+ cmp r0, #0
+ beq _021E1618
+ bl MOD04_021E1678
+ add sp, sp, #4
+ cmp r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1618:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [r1]
+ cmp r0, #1
+ beq _021E1648
+ ldr r1, [r1, #0x18]
+ mov r0, #0xc
+ mla r0, r8, r0, r1
+ bl DWC_GetFriendDataType
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1648:
+ ldr r0, _021E1670 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r3, [r0]
+ ldrb r2, [r3, #0x1c]
+ add r2, r2, #1
+ strb r2, [r3, #0x1c]
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1670: .word UNK04_022106D0
+_021E1674: .word 0x00000601
+ arm_func_end MOD04_021E1414
+
+ arm_func_start MOD04_021E1678
+MOD04_021E1678: ; 0x021E1678
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #4
+ addls pc, pc, r4, lsl #2
+ b _021E16D4
+_021E1694: ; jump table
+ b _021E16D4 ; case 0
+ b _021E16A8 ; case 1
+ b _021E16B4 ; case 2
+ b _021E16C0 ; case 3
+ b _021E16CC ; case 4
+_021E16A8:
+ mov r0, #9
+ mvn r2, #0
+ b _021E16D4
+_021E16B4:
+ mov r0, #9
+ mvn r2, #1
+ b _021E16D4
+_021E16C0:
+ mov r0, #6
+ mvn r2, #9
+ b _021E16D4
+_021E16CC:
+ mov r0, #6
+ mvn r2, #0x13
+_021E16D4:
+ ldr r1, _021E16E8 ; =0xFFFEEAA8
+ add r1, r2, r1
+ bl MOD04_021E2114
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E16E8: .word 0xFFFEEAA8
+ arm_func_end MOD04_021E1678
+
+ arm_func_start MOD04_021E16EC
+MOD04_021E16EC: ; 0x021E16EC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021E17B8 ; =UNK04_022106D0
+ mov r3, #0
+ ldr r2, [r2]
+ mov r5, r0
+ mov r4, r1
+ str r3, [sp]
+ cmp r2, #0
+ beq _021E1720
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E172C
+_021E1720:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E172C:
+ bl MOD04_021E0F00
+ mov r1, r5
+ bl DWC_GetGsProfileId
+ mov r5, r0
+ cmp r5, #0
+ ble _021E176C
+ ldr r0, _021E17B8 ; =UNK04_022106D0
+ add r2, sp, #0
+ ldr r0, [r0]
+ mov r1, r5
+ ldr r0, [r0, #4]
+ bl MOD04_021F0664
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+_021E176C:
+ cmp r5, #0
+ ble _021E1784
+ ldr r1, [sp]
+ mvn r0, #0
+ cmp r1, r0
+ bne _021E1790
+_021E1784:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E1790:
+ ldr r0, _021E17B8 ; =UNK04_022106D0
+ mov r2, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F06E4
+ cmp r0, #0
+ movne r0, #0
+ moveq r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E17B8: .word UNK04_022106D0
+ arm_func_end MOD04_021E16EC
+
+ arm_func_start MOD04_021E17BC
+MOD04_021E17BC: ; 0x021E17BC
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E17E8 ; =UNK04_022106D0
+ mov r1, r0
+ ldr r0, [r2]
+ ldr r2, _021E17EC ; =UNK04_0220D350
+ ldr r0, [r0, #4]
+ bl MOD04_021F09B0
+ mov r4, r0
+ bl MOD04_021E1678
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E17E8: .word UNK04_022106D0
+_021E17EC: .word UNK04_0220D350
+ arm_func_end MOD04_021E17BC
+
+ arm_func_start MOD04_021E17F0
+MOD04_021E17F0: ; 0x021E17F0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov sl, r1
+ mov fp, r0
+ mvn r0, #0
+ str r2, [sp]
+ cmp sl, #0
+ str r0, [sp, #4]
+ mov r8, #0
+ ble _021E18F0
+ mov r6, fp
+ mov r5, fp
+ mov r0, #1
+ str r0, [sp, #8]
+_021E1828:
+ mov r0, r8
+ bl MOD04_021E1F84
+ movs sb, r0
+ beq _021E18DC
+ ldr r0, [sp]
+ add r7, r8, #1
+ cmp sb, r0
+ streq r8, [sp, #4]
+ cmp r7, sl
+ bge _021E18DC
+ mov r0, #0xc
+ mla r4, r7, r0, fp
+_021E1858:
+ mov r0, r7
+ bl MOD04_021E1F84
+ cmp sb, r0
+ bne _021E18CC
+ mov r0, r6
+ bl DWC_GetFriendDataType
+ cmp r0, #2
+ bne _021E1894
+ mov r0, r4
+ bl DWC_GetFriendDataType
+ cmp r0, #3
+ bne _021E1894
+ mov r0, r5
+ mov r1, sb
+ bl DWC_SetGsProfileId
+_021E1894:
+ mov r0, r4
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ beq _021E18AC
+ mov r0, r5
+ bl DWCi_SetBuddyFriendData
+_021E18AC:
+ mov r0, fp
+ mov r1, r7
+ mov r2, r8
+ bl MOD04_021E19B8
+ ldr r0, _021E18FC ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [sp, #8]
+ strb r0, [r1, #0x1d]
+_021E18CC:
+ add r7, r7, #1
+ cmp r7, sl
+ add r4, r4, #0xc
+ blt _021E1858
+_021E18DC:
+ add r8, r8, #1
+ cmp r8, sl
+ add r6, r6, #0xc
+ add r5, r5, #0xc
+ blt _021E1828
+_021E18F0:
+ ldr r0, [sp, #4]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E18FC: .word UNK04_022106D0
+ arm_func_end MOD04_021E17F0
+
+ arm_func_start MOD04_021E1900
+MOD04_021E1900: ; 0x021E1900
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ cmp r6, #0
+ mov r4, #0
+ ble _021E19A8
+_021E1920:
+ mov r0, r4
+ bl MOD04_021E1F84
+ cmp r0, #0
+ beq _021E199C
+ cmp r0, r5
+ bne _021E199C
+ mov r0, #0xc
+ mla r0, r6, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ beq _021E1974
+ mov r0, #0xc
+ mla r0, r4, r0, r7
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ bne _021E1974
+ mov r0, r7
+ mov r1, r4
+ mov r2, r6
+ bl MOD04_021E19B8
+ b _021E1984
+_021E1974:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ bl MOD04_021E19B8
+_021E1984:
+ ldr r1, _021E19B4 ; =UNK04_022106D0
+ mov r0, #1
+ ldr r1, [r1]
+ add sp, sp, #4
+ strb r0, [r1, #0x1d]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021E199C:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021E1920
+_021E19A8:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E19B4: .word UNK04_022106D0
+ arm_func_end MOD04_021E1900
+
+ arm_func_start MOD04_021E19B8
+MOD04_021E19B8: ; 0x021E19B8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r3, _021E1A1C ; =UNK04_022106D0
+ mov r5, r1
+ ldr r1, [r3]
+ mov r4, r2
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ mov r2, #0xc
+ mla r0, r5, r2, r0
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _021E1A1C ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r3, [r0, #0x3c]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, [r0, #0x40]
+ mov r0, r5
+ mov r1, r4
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E1A1C: .word UNK04_022106D0
+ arm_func_end MOD04_021E19B8
+
+ arm_func_start MOD04_021E1A20
+MOD04_021E1A20: ; 0x021E1A20
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021E1A5C ; =UNK04_022106D0
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x1d]
+ ldr r2, [r3, #0x30]
+ ldr r3, [r3, #0x2c]
+ blx r3
+ ldr r0, _021E1A5C ; =UNK04_022106D0
+ mov r1, #2
+ ldr r0, [r0]
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1A5C: .word UNK04_022106D0
+ arm_func_end MOD04_021E1A20
+
+ arm_func_start MOD04_021E1A60
+MOD04_021E1A60: ; 0x021E1A60
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x24c
+ ldr r2, _021E1CC4 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r2, [r2]
+ mov r5, r1
+ ldrb r0, [r2, #0x1e]
+ cmp r0, #0
+ bne _021E1B8C
+ ldr r0, [r2, #4]
+ add r1, sp, #0x18
+ bl MOD04_021F0828
+ bl MOD04_021E1678
+ ldr r0, [sp, #0x18]
+ mov fp, #0
+ str fp, [sp, #0x1c]
+ cmp r0, #0
+ ble _021E1B7C
+ ldr r8, _021E1CC4 ; =UNK04_022106D0
+ mov sb, #1
+ mov r7, #0xc
+_021E1AB4:
+ ldr r0, [r8]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r0, #4]
+ add r2, sp, #0x38
+ bl MOD04_021F06E4
+ bl MOD04_021E1678
+ mov r4, fp
+ cmp r5, #0
+ ble _021E1B30
+_021E1AD8:
+ mov r0, r4
+ bl MOD04_021E1F84
+ ldr r1, [sp, #0x38]
+ cmp r1, r0
+ bne _021E1B24
+ mul sl, r4, r7
+ add r0, r6, sl
+ bl DWC_IsBuddyFriendData
+ cmp r0, #0
+ bne _021E1B30
+ add sl, r6, sl
+ ldr r1, [sp, #0x38]
+ mov r0, sl
+ bl DWC_SetGsProfileId
+ mov r0, sl
+ bl DWCi_SetBuddyFriendData
+ ldr r0, [r8]
+ strb sb, [r0, #0x1d]
+ b _021E1B30
+_021E1B24:
+ add r4, r4, #1
+ cmp r4, r5
+ blt _021E1AD8
+_021E1B30:
+ cmp r4, r5
+ bne _021E1B64
+ ldr r0, [r8]
+ ldr r1, [sp, #0x38]
+ ldr r0, [r0, #4]
+ bl MOD04_021F0580
+ bl MOD04_021E1678
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ sub r1, r1, #1
+ sub r0, r0, #1
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+_021E1B64:
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r1, r1, #1
+ str r1, [sp, #0x1c]
+ cmp r1, r0
+ blt _021E1AB4
+_021E1B7C:
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+_021E1B8C:
+ ldr sl, _021E1CC4 ; =UNK04_022106D0
+ ldr r0, [sl]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, r5
+ addge sp, sp, #0x24c
+ ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r4, sp, #0x1c
+ mov r8, #0xc
+ mvn sb, #0
+_021E1BB0:
+ bl MOD04_021E1F84
+ movs r7, r0
+ beq _021E1C08
+ ldr r1, [sl]
+ mov r0, r6
+ ldrb r1, [r1, #0x1c]
+ mov r2, r7
+ bl MOD04_021E1900
+ cmp r0, #0
+ bne _021E1C9C
+ ldr r0, [sl]
+ mov r1, r7
+ ldr r0, [r0, #4]
+ mov r2, r4
+ bl MOD04_021F0664
+ bl MOD04_021E1678
+ ldr r0, [sp, #0x1c]
+ cmp r0, sb
+ bne _021E1C9C
+ mov r0, r7
+ bl MOD04_021E17BC
+ b _021E1C9C
+_021E1C08:
+ bl MOD04_021E0F00
+ ldr r1, [sl]
+ ldrb r2, [r1, #0x1c]
+ mla r1, r2, r8, r6
+ bl DWC_GetGsProfileId
+ cmp r0, sb
+ bne _021E1C9C
+ bl MOD04_021E0F00
+ ldr r2, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #0xc
+ ldr r3, [r2]
+ add r2, sp, #0x20
+ ldrb r3, [r3, #0x1c]
+ mla r1, r3, r1, r6
+ bl DWC_LoginIdToUserName
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #0
+ ldr r4, [r0]
+ add r2, sp, #0x20
+ str r1, [sp]
+ str r2, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, _021E1CC8 ; =MOD04_021E1414
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldrb r0, [r4, #0x1c]
+ mov r2, r1
+ mov r3, r1
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #4]
+ bl MOD04_021F0C84
+ ldr r0, _021E1CC4 ; =UNK04_022106D0
+ mov r1, #2
+ ldr r0, [r0]
+ add sp, sp, #0x24c
+ strb r1, [r0, #0x1e]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021E1C9C:
+ ldr r1, [sl]
+ ldrb r0, [r1, #0x1c]
+ add r0, r0, #1
+ strb r0, [r1, #0x1c]
+ ldr r0, [sl]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, r5
+ blt _021E1BB0
+ add sp, sp, #0x24c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021E1CC4: .word UNK04_022106D0
+_021E1CC8: .word MOD04_021E1414
+ arm_func_end MOD04_021E1A60
+
+ arm_func_start MOD04_021E1CCC
+MOD04_021E1CCC: ; 0x021E1CCC
+ ldr r0, _021E1CF8 ; =UNK04_022106D0
+ ldr r1, [r0]
+ cmp r1, #0
+ bxeq lr
+ mov r2, #0
+ str r2, [r1]
+ ldr r1, [r0]
+ strb r2, [r1, #0x1e]
+ ldr r0, [r0]
+ strb r2, [r0, #0x1f]
+ bx lr
+ .align 2, 0
+_021E1CF8: .word UNK04_022106D0
+ arm_func_end MOD04_021E1CCC
+
+ arm_func_start MOD04_021E1CFC
+MOD04_021E1CFC: ; 0x021E1CFC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021E1D88 ; =UNK04_022106D0
+ mov r5, #0
+ ldr r4, [r0]
+ bl OS_GetTick
+ ldr r3, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ subs r3, r0, r3
+ sbc r0, r1, r2
+ mov r1, r0, lsl #6
+ ldr r2, _021E1D8C ; =0x000082EA
+ orr r1, r1, r3, lsr #26
+ mov r0, r3, lsl #6
+ mov r3, r5
+ bl _ll_udiv
+ cmp r1, #0
+ cmpeq r0, #0x12c
+ blo _021E1D7C
+ ldr r1, [r4, #8]
+ ldr r0, _021E1D88 ; =UNK04_022106D0
+ add r1, r1, #1
+ str r1, [r4, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F0F18
+ mov r5, r0
+ bl OS_GetTick
+ ldr r2, _021E1D88 ; =UNK04_022106D0
+ ldr r2, [r2]
+ str r0, [r2, #0xc]
+ str r1, [r2, #0x10]
+_021E1D7C:
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E1D88: .word UNK04_022106D0
+_021E1D8C: .word 0x000082EA
+ arm_func_end MOD04_021E1CFC
+
+ arm_func_start MOD04_021E1D90
+MOD04_021E1D90: ; 0x021E1D90
+ ldr r0, _021E1DA0 ; =UNK04_022106D0
+ mov r1, #0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_021E1DA0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1D90
+
+ arm_func_start MOD04_021E1DA4
+MOD04_021E1DA4: ; 0x021E1DA4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x210
+ ldr r1, _021E1E2C ; =UNK04_022106D0
+ mov r4, r0
+ ldr r3, [r1]
+ ldr r2, [r3, #0x44]
+ cmp r2, #0
+ beq _021E1DD8
+ ldr r1, [r3]
+ cmp r1, #1
+ beq _021E1DD8
+ ldr r1, [r3, #0x48]
+ blx r2
+_021E1DD8:
+ ldr r0, _021E1E2C ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldr r0, [r1, #0x34]
+ cmp r0, #0
+ addeq sp, sp, #0x210
+ ldmeqia sp!, {r4, pc}
+ ldr r1, [r1, #0x18]
+ mov r0, #0xc
+ mla r0, r4, r0, r1
+ add r1, sp, #0x108
+ bl MOD04_021E26B8
+ ldr r2, _021E1E2C ; =UNK04_022106D0
+ mov r1, r0
+ ldr r0, [r2]
+ add r2, sp, #0x108
+ ldr r3, [r0, #0x38]
+ ldr ip, [r0, #0x34]
+ mov r0, r4
+ blx ip
+ add sp, sp, #0x210
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E1E2C: .word UNK04_022106D0
+ arm_func_end MOD04_021E1DA4
+
+ arm_func_start MOD04_021E1E30
+MOD04_021E1E30: ; 0x021E1E30
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r3, _021E1ED0 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r3]
+ mov r5, r1
+ mov r4, r2
+ cmp r0, #0
+ beq _021E1E5C
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E1E64
+_021E1E5C:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E1E64:
+ mvn r0, #0
+ cmp r6, r0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ ldreq r6, [r0, #0x214]
+ cmp r5, #0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ mov r1, r6
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ addeq r5, r0, #0x218
+ cmp r4, #0
+ ldreq r0, _021E1ED0 ; =UNK04_022106D0
+ mov r2, r5
+ ldreq r0, [r0]
+ ldreq r0, [r0, #4]
+ ldreq r0, [r0]
+ addeq r4, r0, #0x318
+ ldr r0, _021E1ED0 ; =UNK04_022106D0
+ mov r3, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD04_021F034C
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E1ED0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1E30
+
+ arm_func_start MOD04_021E1ED4
+MOD04_021E1ED4: ; 0x021E1ED4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E1F14 ; =UNK04_022106D0
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ str r0, [r1, #8]
+ bl OS_GetTick
+ ldr r2, _021E1F14 ; =UNK04_022106D0
+ ldr r2, [r2]
+ str r0, [r2, #0xc]
+ str r1, [r2, #0x10]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E1F14: .word UNK04_022106D0
+ arm_func_end MOD04_021E1ED4
+
+ arm_func_start MOD04_021E1F18
+MOD04_021E1F18: ; 0x021E1F18
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r4, _021E1F80 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E1F38
+ cmp r6, #0
+ bne _021E1F40
+_021E1F38:
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021E1F40:
+ ldr r0, [r0, #0x14]
+ mov r5, #0
+ cmp r0, #0
+ ble _021E1F78
+_021E1F50:
+ mov r0, r5
+ bl MOD04_021E1F84
+ cmp r6, r0
+ moveq r0, r5
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, [r4]
+ add r5, r5, #1
+ ldr r0, [r0, #0x14]
+ cmp r5, r0
+ blt _021E1F50
+_021E1F78:
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E1F80: .word UNK04_022106D0
+ arm_func_end MOD04_021E1F18
+
+ arm_func_start MOD04_021E1F84
+MOD04_021E1F84: ; 0x021E1F84
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _021E1FE0 ; =UNK04_022106D0
+ mov r5, r0
+ ldr r0, [r1]
+ ldr r4, [r0, #0x18]
+ cmp r4, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ bl MOD04_021E0F00
+ mov r1, #0xc
+ mla r1, r5, r1, r4
+ bl DWC_GetGsProfileId
+ cmp r0, #0
+ beq _021E1FD4
+ mvn r1, #0
+ cmp r0, r1
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+_021E1FD4:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E1FE0: .word UNK04_022106D0
+ arm_func_end MOD04_021E1F84
+
+ arm_func_start MOD04_021E1FE4
+MOD04_021E1FE4: ; 0x021E1FE4
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x210
+ ldr r2, _021E2064 ; =UNK04_022106D0
+ mov r6, r0
+ ldr r0, [r2]
+ mov r5, r1
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ addeq sp, sp, #0x210
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, [r5]
+ bl MOD04_021E1F18
+ mov r4, r0
+ mvn r0, #0
+ cmp r4, r0
+ addeq sp, sp, #0x210
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, [r5, #8]
+ add r2, sp, #0
+ mov r0, r6
+ bl MOD04_021F06E4
+ ldr r0, _021E2064 ; =UNK04_022106D0
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ add r2, sp, #0x108
+ ldr r3, [r0, #0x38]
+ ldr ip, [r0, #0x34]
+ mov r0, r4
+ and r1, r1, #0xff
+ blx ip
+ add sp, sp, #0x210
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E2064: .word UNK04_022106D0
+ arm_func_end MOD04_021E1FE4
+
+ arm_func_start MOD04_021E2068
+MOD04_021E2068: ; 0x021E2068
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ mov r4, r1
+ mov r5, r0
+ ldr r0, [r4, #8]
+ ldr r1, _021E20C0 ; =UNK04_0220D354
+ bl strcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _021E20C4 ; =MOD04_021E110C
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r4]
+ mov r0, r5
+ mov r3, r2
+ bl MOD04_021F0B9C
+ mov r0, #1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E20C0: .word UNK04_0220D354
+_021E20C4: .word MOD04_021E110C
+ arm_func_end MOD04_021E2068
+
+ arm_func_start MOD04_021E20C8
+MOD04_021E20C8: ; 0x021E20C8
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r2, _021E210C ; =UNK04_022106D0
+ ldr r2, [r2]
+ ldr r2, [r2, #0x18]
+ cmp r2, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {pc}
+ ldr r3, _021E2110 ; =MOD04_021E12B8
+ mov r2, #0
+ str r3, [sp]
+ str r2, [sp, #4]
+ ldr r1, [r1]
+ mov r3, r2
+ bl MOD04_021F0B9C
+ add sp, sp, #0xc
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E210C: .word UNK04_022106D0
+_021E2110: .word MOD04_021E12B8
+ arm_func_end MOD04_021E20C8
+
+ arm_func_start MOD04_021E2114
+MOD04_021E2114: ; 0x021E2114
+ stmdb sp!, {r4, lr}
+ ldr r2, _021E2170 ; =UNK04_022106D0
+ mov r4, r0
+ ldr r2, [r2]
+ cmp r2, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021DD6B0
+ ldr r0, _021E2170 ; =UNK04_022106D0
+ ldr r3, [r0]
+ ldr r0, [r3]
+ cmp r0, #0
+ beq _021E2168
+ cmp r0, #2
+ beq _021E2168
+ ldrb r1, [r3, #0x1d]
+ ldr r2, [r3, #0x30]
+ ldr r3, [r3, #0x2c]
+ mov r0, r4
+ blx r3
+_021E2168:
+ bl MOD04_021E1CCC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2170: .word UNK04_022106D0
+ arm_func_end MOD04_021E2114
+
+ arm_func_start MOD04_021E2174
+MOD04_021E2174: ; 0x021E2174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _021E2224 ; =UNK04_022106D0
+ ldr r5, [sp, #0x10]
+ ldr r1, [r0]
+ ldr r4, [sp, #0x14]
+ str r2, [r1, #0x2c]
+ ldr r1, [r0]
+ ldr lr, [sp, #0x18]
+ str r3, [r1, #0x30]
+ ldr r1, [r0]
+ ldr ip, [sp, #0x1c]
+ str r5, [r1, #0x34]
+ ldr r1, [r0]
+ mov r3, #0
+ str r4, [r1, #0x38]
+ ldr r1, [r0]
+ mov r2, #1
+ str lr, [r1, #0x3c]
+ ldr r1, [r0]
+ str ip, [r1, #0x40]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1d]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1e]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1f]
+ ldr r1, [r0]
+ strb r3, [r1, #0x1c]
+ ldr r1, [r0]
+ str r2, [r1]
+ ldr r1, [r0]
+ ldr r0, [r1, #0x18]
+ cmp r0, #0
+ ldreqb r0, [r1, #0x1f]
+ addeq r0, r0, #1
+ streqb r0, [r1, #0x1f]
+ ldr r0, _021E2224 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1f]
+ add r0, r0, #1
+ strb r0, [r1, #0x1f]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E2224: .word UNK04_022106D0
+ arm_func_end MOD04_021E2174
+
+ arm_func_start MOD04_021E2228
+MOD04_021E2228: ; 0x021E2228
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x18]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD04_021E10F8
+ cmp r0, #0
+ bne _021E227C
+ bl MOD04_021FBE5C
+ cmp r0, #0
+ beq _021E2280
+_021E227C:
+ bl MOD04_021FBD00
+_021E2280:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021E231C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E231C
+ bl MOD04_021E1CFC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r3, [r0]
+ ldr r0, [r3, #0x18]
+ cmp r0, #0
+ beq _021E231C
+ ldrb r2, [r3, #0x1e]
+ cmp r2, #3
+ beq _021E231C
+ ldr r1, [r3, #8]
+ cmp r1, #7
+ bls _021E231C
+ cmp r2, #1
+ bhi _021E22EC
+ ldr r1, [r3, #0x14]
+ bl MOD04_021E1A60
+_021E22EC:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r3, [r0]
+ ldrb r2, [r3, #0x1c]
+ ldr r1, [r3, #0x14]
+ cmp r2, r1
+ blt _021E231C
+ mov r1, #3
+ strb r1, [r3, #0x1e]
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1f]
+ add r0, r0, #1
+ strb r0, [r1, #0x1f]
+_021E231C:
+ ldr r0, _021E2348 ; =UNK04_022106D0
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1f]
+ cmp r0, #2
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ mov r0, #0
+ strb r0, [r1, #0x1f]
+ bl MOD04_021E1A20
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E2348: .word UNK04_022106D0
+ arm_func_end MOD04_021E2228
+
+ arm_func_start MOD04_021E234C
+MOD04_021E234C: ; 0x021E234C
+ stmdb sp!, {r4, lr}
+ ldr lr, _021E2428 ; =UNK04_022106D0
+ mov ip, #0
+ str r0, [lr]
+ str ip, [r0]
+ ldr r4, [lr]
+ ldr r0, [sp, #8]
+ str r1, [r4, #4]
+ ldr r1, [lr]
+ str ip, [r1, #8]
+ ldr r1, [lr]
+ str ip, [r1, #0xc]
+ str ip, [r1, #0x10]
+ str r0, [r1, #0x14]
+ ldr r0, [lr]
+ str r3, [r0, #0x18]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1c]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1d]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1e]
+ ldr r0, [lr]
+ strb ip, [r0, #0x1f]
+ ldr r0, [lr]
+ str ip, [r0, #0x20]
+ ldr r0, [lr]
+ str ip, [r0, #0x24]
+ ldr r0, [lr]
+ str r2, [r0, #0x28]
+ ldr r0, [lr]
+ str ip, [r0, #0x2c]
+ ldr r0, [lr]
+ str ip, [r0, #0x30]
+ ldr r0, [lr]
+ str ip, [r0, #0x34]
+ ldr r0, [lr]
+ str ip, [r0, #0x38]
+ ldr r0, [lr]
+ str ip, [r0, #0x3c]
+ ldr r0, [lr]
+ str ip, [r0, #0x40]
+ ldr r0, [lr]
+ str ip, [r0, #0x44]
+ ldr r0, [lr]
+ str ip, [r0, #0x48]
+ ldr r0, [lr]
+ str ip, [r0, #0x4c]
+ ldr r0, [lr]
+ str ip, [r0, #0x50]
+ ldr r0, [lr]
+ str ip, [r0, #0x54]
+ ldr r0, [lr]
+ str ip, [r0, #0x58]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021E2428: .word UNK04_022106D0
+ arm_func_end MOD04_021E234C
+
+ arm_func_start MOD04_021E242C
+MOD04_021E242C: ; 0x021E242C
+ ldr r2, _021E2450 ; =UNK04_022106D0
+ ldr r3, [r2]
+ cmp r3, #0
+ moveq r0, #0
+ strne r0, [r3, #0x44]
+ ldrne r2, [r2]
+ movne r0, #1
+ strne r1, [r2, #0x48]
+ bx lr
+ .align 2, 0
+_021E2450: .word UNK04_022106D0
+ arm_func_end MOD04_021E242C
+
+ arm_func_start MOD04_021E2454
+MOD04_021E2454: ; 0x021E2454
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x104
+ ldr r2, _021E24DC ; =UNK04_022106D0
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ cmp r0, #0
+ beq _021E2480
+ bl MOD04_021E05FC
+ cmp r0, #0
+ bne _021E248C
+_021E2480:
+ add sp, sp, #0x104
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_021E248C:
+ add r2, sp, #0
+ mov r0, r5
+ mov r1, r4
+ mov r3, #0xff
+ bl MOD04_021DD4FC
+ mvn r3, #0
+ cmp r0, r3
+ addeq sp, sp, #0x104
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ add r2, sp, #0
+ mov r1, #0
+ strb r1, [r2, r0]
+ mov r0, r3
+ bl MOD04_021E1E30
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #0x104
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021E24DC: .word UNK04_022106D0
+ arm_func_end MOD04_021E2454
+
+ arm_func_start MOD04_021E24E0
+MOD04_021E24E0: ; 0x021E24E0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x100
+ mov r6, r3
+ add r3, sp, #0
+ ldr r4, [sp, #0x110]
+ bl MOD04_021E259C
+ movs r5, r0
+ mvneq r1, #0
+ addeq sp, sp, #0x100
+ streq r1, [r4]
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r0, sp, #0
+ bl strlen
+ mov r2, #0
+ mov r1, r0
+ add r0, sp, #0
+ mov r3, r2
+ bl MOD04_021DD36C
+ str r0, [r4]
+ cmp r6, #0
+ beq _021E2544
+ ldr r4, [r4]
+ mvn r0, #0
+ cmp r4, r0
+ bne _021E2550
+_021E2544:
+ add sp, sp, #0x100
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, pc}
+_021E2550:
+ add r0, sp, #0
+ bl strlen
+ mov r1, r0
+ add r0, sp, #0
+ mov r2, r6
+ mov r3, r4
+ bl MOD04_021DD36C
+ mov r0, r5
+ add sp, sp, #0x100
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD04_021E24E0
+
+ arm_func_start MOD04_021E2578
+MOD04_021E2578: ; 0x021E2578
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r3, r1
+ mov r1, #0
+ str r2, [sp]
+ mov r2, r1
+ bl MOD04_021E24E0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021E2578
+
+ arm_func_start MOD04_021E259C
+MOD04_021E259C: ; 0x021E259C
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x218
+ mov r6, r1
+ add r1, sp, #4
+ mov r4, r2
+ mov r5, r3
+ bl MOD04_021E16EC
+ cmp r0, #0
+ beq _021E268C
+ ldr r0, [sp, #8]
+ cmp r0, #6
+ bne _021E2650
+ cmp r6, #0
+ beq _021E260C
+ ldr r0, _021E26B0 ; =UNK04_0220D38C
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ cmp r0, #0
+ movle r0, #0
+ strleb r0, [r6]
+ ble _021E260C
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ strb r0, [r6]
+_021E260C:
+ cmp r4, #0
+ beq _021E2668
+ ldr r0, _021E26B4 ; =UNK04_0220D390
+ add r1, sp, #0
+ add r2, sp, #0xc
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ cmp r0, #0
+ movle r0, #0
+ strleb r0, [r4]
+ ble _021E2668
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ strb r0, [r4]
+ b _021E2668
+_021E2650:
+ cmp r6, #0
+ movne r0, #0
+ strneb r0, [r6]
+ cmp r4, #0
+ movne r0, #0
+ strneb r0, [r4]
+_021E2668:
+ cmp r5, #0
+ beq _021E267C
+ add r1, sp, #0x10c
+ mov r0, r5
+ bl strcpy
+_021E267C:
+ ldr r0, [sp, #8]
+ add sp, sp, #0x218
+ and r0, r0, #0xff
+ ldmia sp!, {r4, r5, r6, pc}
+_021E268C:
+ cmp r6, #0
+ movne r0, #0
+ strneb r0, [r6]
+ cmp r4, #0
+ movne r0, #0
+ strneb r0, [r4]
+ mov r0, #0
+ add sp, sp, #0x218
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E26B0: .word UNK04_0220D38C
+_021E26B4: .word UNK04_0220D390
+ arm_func_end MOD04_021E259C
+
+ arm_func_start MOD04_021E26B8
+MOD04_021E26B8: ; 0x021E26B8
+ ldr ip, _021E26CC ; =MOD04_021E259C
+ mov r3, r1
+ mov r1, #0
+ mov r2, r1
+ bx ip
+ .align 2, 0
+_021E26CC: .word MOD04_021E259C
+ arm_func_end MOD04_021E26B8
+
+ .section .data
+
+ .global UNK04_0220D350
+UNK04_0220D350: ; 0x0220D350
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D354
+UNK04_0220D354: ; 0x0220D354
+ .asciz "I have authorized your request to add me to your list"
+
+ .balign 4, 0
+ .global UNK04_0220D38C
+UNK04_0220D38C: ; 0x0220D38C
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D390
+UNK04_0220D390: ; 0x0220D390
+ .asciz "SCN"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_022106D0
+UNK04_022106D0: ; 0x022106D0
+ .space 0x4