diff options
Diffstat (limited to 'arm9/modules/04/asm/mod04_021E10F8.s')
-rw-r--r-- | arm9/modules/04/asm/mod04_021E10F8.s | 1670 |
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 |