diff options
-rw-r--r-- | arm9/arm9.lcf | 10 | ||||
-rw-r--r-- | arm9/asm/DWC_account.s | 847 | ||||
-rw-r--r-- | arm9/asm/DWC_backup.s | 959 | ||||
-rw-r--r-- | arm9/asm/DWC_bm_init.s | 357 | ||||
-rw-r--r-- | arm9/asm/DWC_init.s | 37 | ||||
-rw-r--r-- | arm9/asm/DWC_report.s | 2 | ||||
-rw-r--r-- | arm9/asm/DWC_util_wifiidtool.s | 458 | ||||
-rw-r--r-- | arm9/asm/unk_020281E0.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_0202DB14.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_020337E8.s | 16 | ||||
-rw-r--r-- | arm9/asm/unk_02033874.s | 24 | ||||
-rw-r--r-- | arm9/asm/unk_020910EC.s | 2660 | ||||
-rw-r--r-- | arm9/global.inc | 89 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 108 | ||||
-rw-r--r-- | arm9/modules/04/asm/thumb_04.s | 20 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm2.s | 40 | ||||
-rw-r--r-- | arm9/modules/55/asm/module_55.s | 10 | ||||
-rw-r--r-- | arm9/modules/56/asm/module_56.s | 4 | ||||
-rw-r--r-- | arm9/modules/80/asm/module_80.s | 2 | ||||
-rw-r--r-- | arm9/modules/82/asm/module_82.s | 2 |
20 files changed, 2833 insertions, 2816 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 098e71f8..65774dac 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -431,6 +431,11 @@ SECTIONS { unk_0208AC14.o (.text) custom_allocator.o (.text) unk_020910EC.o (.text) + DWC_backup.o (.text) + DWC_bm_init.o (.text) + DWC_util_wifiidtool.o (.text) + DWC_init.o (.text) + DWC_account.o (.text) SOC_socl_startup.o (.text) SOC_socl_command.o (.text) SOC_socl_create.o (.text) @@ -730,6 +735,8 @@ SECTIONS { unk_02089F24.o (.rodata) unk_0208A998.o (.rodata) unk_020910EC.o (.rodata) + DWC_bm_init.o (.rodata) + DWC_util_wifiidtool.o (.rodata) SOC_soc.o (.rodata) CPS_network.o (.rodata) SSL_ssl.o (.rodata) @@ -792,6 +799,8 @@ SECTIONS { unk_020893E0.o (.data) unk_0208AC14.o (.data) unk_020910EC.o (.data) + DWC_backup.o (.data) + DWC_account.o (.data) SOC_socl_bind.o (.data) SOC_soc.o (.data) CPS_network.o (.data) @@ -880,6 +889,7 @@ SECTIONS { unk_0208AC14.o (.bss) custom_allocator.o (.bss) unk_020910EC.o (.bss) + DWC_backup.o (.bss) SOC_socl_startup.o (.bss) SOC_socl_command.o (.bss) SOC_socl_read.o (.bss) diff --git a/arm9/asm/DWC_account.s b/arm9/asm/DWC_account.s new file mode 100644 index 00000000..45db0c45 --- /dev/null +++ b/arm9/asm/DWC_account.s @@ -0,0 +1,847 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + .global UNK_0210618C +UNK_0210618C: ; 0x0210618C + .asciz "%s%c%c%c%c%s" + + .balign 4, 0 + .global UNK_0210619C +UNK_0210619C: ; 0x0210619C + ; .asciz "0123456789abcdefghijklmnopqrstuvwxyz" + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 + .byte 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 + .byte 0x00, 0x00, 0x00, 0x00 + + .text + + arm_func_start DWC_IsEqualFriendData +DWC_IsEqualFriendData: ; 0x02096B78 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r7, r0 + bl DWCi_Acc_GetFlag_DataType + mov r5, r0 + mov r0, r4 + bl DWCi_Acc_GetFlag_DataType + cmp r5, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + cmp r5, #0x3 + bne _02096BD8 + mov r0, r7 + bl DWCi_Acc_GetGsProfileId + mov r5, r0 + mov r0, r4 + bl DWCi_Acc_GetGsProfileId + cmp r5, r0 + moveq r0, #0x1 + add sp, sp, #0x4 + movne r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096BD8: + cmp r5, #0x1 + bne _02096C34 + mov r0, r7 + bl DWCi_Acc_GetUserId + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl DWCi_Acc_GetUserId + cmp r6, r1 + cmpeq r5, r0 + bne _02096C28 + mov r0, r7 + bl DWCi_Acc_GetPlayerId + mov r5, r0 + mov r0, r4 + bl DWCi_Acc_GetPlayerId + cmp r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r7,pc} +_02096C28: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096C34: + cmp r5, #0x2 + bne _02096C6C + mov r0, r7 + bl DWCi_Acc_GetFriendKey + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl DWCi_Acc_GetFriendKey + cmp r6, r1 + cmpeq r5, r0 + moveq r0, #0x1 + add sp, sp, #0x4 + movne r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096C6C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start DWC_LoginIdToUserName +DWC_LoginIdToUserName: ; 0x02096C78 + ldr ip, _02096C8C ; =DWCi_Acc_LoginIdToUserName + mov r3, r0 + mov r0, r1 + ldr r1, [r3, #0x24] + bx r12 + .balign 4 +_02096C8C: .word DWCi_Acc_LoginIdToUserName + + arm_func_start DWC_SetGsProfileId +DWC_SetGsProfileId: ; 0x02096C90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + mov r1, r4 + bl DWCi_Acc_SetGsProfileId + mov r0, r5 + mov r1, #0x3 + bl DWCi_Acc_SetFlag_DataType + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWC_CreateExchangeToken +DWC_CreateExchangeToken: ; 0x02096CCC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + bl DWCi_Acc_IsAuthentic + cmp r0, #0x0 + addeq r0, r5, #0x4 + ldmeqia r0, {r0-r2} + addeq sp, sp, #0x4 + stmeqia r4, {r0-r2} + ldmeqia sp!, {r4-r5,pc} + ldr r1, [r5, #0x1c] + mov r0, r4 + bl DWCi_Acc_SetGsProfileId + mov r0, r4 + mov r1, #0x3 + bl DWCi_Acc_SetFlag_DataType + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWC_CreateFriendKeyToken +DWC_CreateFriendKeyToken: ; 0x02096D2C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, r2 + mov r6, r0 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl DWCi_Acc_SetFriendKey + mov r0, r6 + mov r1, #0x2 + bl DWCi_Acc_SetFlag_DataType + ldmia sp!, {r4-r6,pc} + + arm_func_start DWC_CreateFriendKey +DWC_CreateFriendKey: ; 0x02096D68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r3, #0x1c] + mov r2, #0x0 + mov r1, r2 + cmp r0, #0x0 + beq _02096D94 + ldr r1, [r3, #0x24] + bl DWC_Acc_CreateFriendKey + mov r2, r0 +_02096D94: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWC_GetGsProfileId +DWC_GetGsProfileId: ; 0x02096DA0 + stmdb sp!, {r4-r6,lr} + mov r4, r1 + mov r6, r0 + mov r0, r4 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x1 + beq _02096E14 + cmp r0, #0x2 + beq _02096DD0 + cmp r0, #0x3 + beq _02096E08 + b _02096E1C +_02096DD0: + mov r0, r4 + bl DWCi_Acc_GetFriendKey + ldr r2, [r6, #0x24] + mov r4, r0 + mov r5, r1 + bl DWC_Acc_CheckFriendKey + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, [r6, #0x24] + mov r0, r4 + mov r1, r5 + bl DWC_Acc_FriendKeyToGsProfileId + ldmia sp!, {r4-r6,pc} +_02096E08: + mov r0, r4 + bl DWCi_Acc_GetGsProfileId + ldmia sp!, {r4-r6,pc} +_02096E14: + mvn r0, #0x0 + ldmia sp!, {r4-r6,pc} +_02096E1C: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start DWC_GetFriendKey +DWC_GetFriendKey: ; 0x02096E24 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x2 + movne r0, #0x0 + movne r1, r0 + ldmneia sp!, {r4,pc} + mov r0, r4 + bl DWCi_Acc_GetFriendKey + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_ClearDirty +DWCi_Acc_ClearDirty: ; 0x02096E4C + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + mov r4, r0 + ldr r1, [r4, #0x20] + add r0, sp, #0x0 + bic r2, r1, #0x1 + ldr r1, _02096E8C ; =0xEDB88320 + str r2, [r4, #0x20] + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096E8C: .word 0xEDB88320 + + arm_func_start DWC_ClearDirtyFlag +DWC_ClearDirtyFlag: ; 0x02096E90 + ldr ip, _02096E98 ; =DWCi_Acc_ClearDirty + bx r12 + .balign 4 +_02096E98: .word DWCi_Acc_ClearDirty + + arm_func_start DWCi_Acc_IsDirty +DWCi_Acc_IsDirty: ; 0x02096E9C + ldr r0, [r0, #0x20] + and r0, r0, #0x1 + cmp r0, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start DWC_CheckDirtyFlag +DWC_CheckDirtyFlag: ; 0x02096EB4 + ldr ip, _02096EBC ; =DWCi_Acc_IsDirty + bx r12 + .balign 4 +_02096EBC: .word DWCi_Acc_IsDirty + + arm_func_start DWCi_Acc_SetLoginIdToUserData +DWCi_Acc_SetLoginIdToUserData: ; 0x02096EC0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + mov r4, r0 + add r3, r4, #0x10 + mov r12, r2 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} + ldr r1, _02096F14 ; =0xEDB88320 + add r0, sp, #0x0 + str r12, [r4, #0x1c] + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x20] + orr r0, r0, #0x1 + str r0, [r4, #0x20] + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096F14: .word 0xEDB88320 + + arm_func_start DWC_CheckValidConsole +DWC_CheckValidConsole: ; 0x02096F18 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, r4, #0x10 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + add r0, sp, #0x0 + bl DWC_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + add r0, r4, #0x10 + bl DWCi_Acc_GetUserId + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start DWC_CheckHasProfile +DWC_CheckHasProfile: ; 0x02096F80 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x10 + bl DWCi_Acc_IsValidLoginId + cmp r0, #0x0 + beq _02096FA8 + ldr r0, [r4, #0x1c] + cmp r0, #0x0 + movgt r0, #0x1 + ldmgtia sp!, {r4,pc} +_02096FA8: + mov r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start DWC_CheckUserData +DWC_CheckUserData: ; 0x02096FB0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + ldr r1, _02096FF0 ; =0xEDB88320 + mov r4, r0 + add r0, sp, #0x0 + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + ldr r1, [r4, #0x3c] + cmp r0, r1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096FF0: .word 0xEDB88320 + + arm_func_start DWC_CreateUserData +DWC_CreateUserData: ; 0x02096FF4 + ldr ip, _02096FFC ; =DWCi_Acc_CreateUserData + bx r12 + .balign 4 +_02096FFC: .word DWCi_Acc_CreateUserData + + arm_func_start DWCi_Acc_IsValidFriendData +DWCi_Acc_IsValidFriendData: ; 0x02097000 + ldr ip, _02097008 ; =DWC_IsValidFriendData + bx r12 + .balign 4 +_02097008: .word DWC_IsValidFriendData + + arm_func_start DWC_IsValidFriendData +DWC_IsValidFriendData: ; 0x0209700C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWCi_Acc_IsAuthentic +DWCi_Acc_IsAuthentic: + ldr ip, _02097038 ; =DWCi_Acc_IsValidLoginId + add r0, r0, #0x10 + bx r12 + .balign 4 +_02097038: .word DWCi_Acc_IsValidLoginId + + arm_func_start DWCi_Acc_IsValidLoginId +DWCi_Acc_IsValidLoginId: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWCi_Acc_CheckConsoleUserId +DWCi_Acc_CheckConsoleUserId: ; 0x0209705C + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl DWC_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _020970A4 + mov r0, r4 + bl DWCi_Acc_GetUserId + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + add sp, sp, #0x18 + movne r0, #0x0 + ldmia sp!, {r4,pc} +_020970A4: + mov r0, r4 + bl DWCi_Acc_GetUserId + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_CreateTempLoginId +DWCi_Acc_CreateTempLoginId: ; 0x020970CC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x38 + mov r6, r0 + add r0, sp, #0x14 + bl OS_GetLowEntropyData + mov r3, #0x1 + add r2, sp, #0x14 +_020970E8: + add r0, r2, r3, lsl #0x2 + ldr r1, [r2, r3, lsl #0x2] + ldr r0, [r0, #-0x4] + eor r0, r1, r0 + str r0, [r2, r3, lsl #0x2] + add r3, r3, #0x1 + cmp r3, #0x8 + blo _020970E8 + add r0, sp, #0x0 + ldr r5, [sp, #0x30] + mov r4, #0x0 + bl DWC_Auth_GetId + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _02097138 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + mov r0, r6 + bl DWCi_Acc_SetUserId + b _02097148 +_02097138: + ldr r1, [sp, #0x8] + ldr r2, [sp, #0xc] + mov r0, r6 + bl DWCi_Acc_SetUserId +_02097148: + ldr r0, _02097184 ; =0x6C078965 + ldr r1, _02097188 ; =0x5D588B65 + umull r3, r2, r5, r0 + mla r2, r5, r1, r2 + ldr r1, _0209718C ; =0x00269EC3 + mla r2, r4, r0, r2 + adds r0, r3, r1 + mov r0, r6 + adc r1, r2, #0x0 + bl DWCi_Acc_SetPlayerId + mov r0, r6 + mov r1, #0x1 + bl DWCi_Acc_SetFlag_DataType + add sp, sp, #0x38 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02097184: .word 0x6C078965 +_02097188: .word 0x5D588B65 +_0209718C: .word 0x00269EC3 + + arm_func_start DWCi_Acc_CreateUserData +DWCi_Acc_CreateUserData: ; 0x02097190 + stmdb sp!, {r4-r5,lr} + ldr ip, _02097210 ; =0x00000404 + sub sp, sp, r12 + mov r4, r1 + mov r1, #0x0 + mov r2, #0x40 + mov r5, r0 + bl MI_CpuFill8 + mov r0, #0x40 + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r5, #0x1c] + add r0, r5, #0x4 + str r4, [r5, #0x24] + bl DWCi_Acc_CreateTempLoginId + add r0, r5, #0x10 + mov r1, #0x0 + bl DWCi_Acc_SetFlag_DataType + ldr r1, _02097214 ; =0xEDB88320 + add r0, sp, #0x0 + bl MATHi_CRC32InitTableRev + add r0, sp, #0x0 + mov r1, r5 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x20] + orr r0, r0, #0x1 + str r0, [r5, #0x20] + ldr ip, _02097210 ; =0x00000404 + add sp, sp, r12 + ldmia sp!, {r4-r5,pc} + .balign 4 +_02097210: .word 0x00000404 +_02097214: .word 0xEDB88320 + + arm_func_start DWCi_Acc_LoginIdToUserName +DWCi_Acc_LoginIdToUserName: ; 0x02097218 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r4, r1 + mov r5, r2 + bl DWCi_Acc_GetUserId + add r3, sp, #0x14 + mov r2, #0x2b + bl DWCi_Acc_U64ToString32 + mov r0, r6 + bl DWCi_Acc_GetPlayerId + mov r1, #0x0 + mov r2, #0x20 + add r3, sp, #0x29 + bl DWCi_Acc_U64ToString32 + mov r1, r4, lsr #0x18 + and r1, r1, #0xff + str r1, [sp, #0x0] + mov r1, r4, lsr #0x10 + and r1, r1, #0xff + str r1, [sp, #0x4] + mov r1, r4, lsr #0x8 + and r1, r1, #0xff + str r1, [sp, #0x8] + and r1, r4, #0xff + str r1, [sp, #0xc] + add r2, sp, #0x29 + str r2, [sp, #0x10] + ldr r2, _020972A4 ; =UNK_0210618C + mov r0, r5 + mov r1, #0x15 + add r3, sp, #0x14 + bl OS_SNPrintf + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020972A4: .word UNK_0210618C + + arm_func_start DWCi_Acc_U64ToString32 +DWCi_Acc_U64ToString32: ; 0x020972A8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, _0209731C ; =0x66666667 + add r4, r2, #0x4 + smull r12, r2, lr, r4 + mov r2, r2, asr #0x1 + mov r12, r4, lsr #0x1f + add r2, r12, r2 + cmp r2, #0x0 + ldr r6, _02097320 ; =UNK_0210619C + mov r7, #0x0 + ble _0209730C + add r4, r3, r2 + sub r4, r4, #0x1 + mov r12, #0x1f +_020972E4: + and r5, r0, r12 + ldrsb r5, [r6, r5] + mov r0, r0, lsr #0x5 + mov lr, r1, lsr #0x5 + strb r5, [r4, -r7] + add r7, r7, #0x1 + orr r0, r0, r1, lsl #0x1b + mov r1, lr + cmp r7, r2 + blt _020972E4 +_0209730C: + mov r0, #0x0 + strb r0, [r3, r2] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_0209731C: .word 0x66666667 +_02097320: .word UNK_0210619C + + arm_func_start DWC_Acc_FriendKeyToGsProfileId +DWC_Acc_FriendKeyToGsProfileId: ; 0x02097324 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWC_Acc_CheckFriendKey + cmp r0, #0x0 + mvnne r0, #0x0 + andne r0, r4, r0 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start DWC_Acc_CheckFriendKey +DWC_Acc_CheckFriendKey: ; 0x02097334 + stmdb sp!, {r4,lr} + sub sp, sp, #0x108 + mov r4, r1 + and r3, r4, #0x0 + mov r1, #0x0 + and r12, r0, #0x80000000 + cmp r3, r1 + cmpeq r12, r1 + addne sp, sp, #0x108 + movne r0, r1 + ldmneia sp!, {r4,pc} + str r0, [sp, #0x0] + add r0, sp, #0x8 + mov r1, #0x7 + str r2, [sp, #0x4] + bl MATHi_CRC8InitTable + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x8 + bl MATH_CalcCRC8 + and r2, r0, #0x7f + mov r1, r2, asr #0x1f + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r4 + moveq r0, #0x1 + add sp, sp, #0x108 + ldmia sp!, {r4,pc} + + arm_func_start DWC_CheckFriendKey +DWC_CheckFriendKey: ; 0x020973B4 + ldr ip, _020973CC ; =DWC_Acc_CheckFriendKey + mov r3, r0 + mov r0, r1 + mov r1, r2 + ldr r2, [r3, #0x24] + bx r12 + .balign 4 +_020973CC: .word DWC_Acc_CheckFriendKey + + arm_func_start DWC_Acc_CreateFriendKey +DWC_Acc_CreateFriendKey: ; 0x020973D0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x108 + mov r4, r0 + str r1, [sp, #0x4] + add r0, sp, #0x8 + mov r1, #0x7 + str r4, [sp, #0x0] + bl MATHi_CRC8InitTable + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x8 + bl MATH_CalcCRC8 + and r0, r0, #0x7f + orr r1, r0, #0x0 + orr r0, r4, #0x0 + add sp, sp, #0x108 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_SetBuddyFriendData +DWCi_SetBuddyFriendData: ; 0x02097414 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x3 + ldmneia sp!, {r4,pc} + mov r0, r4 + bl DWCi_Acc_GetFlags + orr r1, r0, #0x4 + mov r0, r4 + bl DWCi_Acc_SetFlags + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_SetFlag_DataType +DWCi_Acc_SetFlag_DataType: ; 0x02097440 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl DWCi_Acc_GetFlags + bic r1, r0, #0x3 + mov r0, r5 + orr r1, r1, r4 + bl DWCi_Acc_SetFlags + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWCi_Acc_SetFlags +DWCi_Acc_SetFlags: ; 0x0209746C + ldr ip, _0209747C ; =DWCi_Acc_SetMaskBits + ldr r3, _02097480 ; =0x001FFFFF + mov r2, #0xb + bx r12 + .balign 4 +_0209747C: .word DWCi_Acc_SetMaskBits +_02097480: .word 0x001FFFFF + + arm_func_start DWC_GetFriendDataType +DWC_GetFriendDataType: ; 0x02097484 + ldr ip, _0209748C ; =DWCi_Acc_GetFlag_DataType + bx r12 + .balign 4 +_0209748C: .word DWCi_Acc_GetFlag_DataType + + arm_func_start DWC_IsBuddyFriendData +DWC_IsBuddyFriendData: ; 0x02097490 + stmdb sp!, {r4,lr} + mov r4, r0 + bl DWCi_Acc_GetFlag_DataType + cmp r0, #0x3 + bne _020974C0 + mov r0, r4 + bl DWCi_Acc_GetFlags + and r0, r0, #0x4 + cmp r0, #0x4 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4,pc} +_020974C0: + mov r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_Acc_GetFlag_DataType +DWCi_Acc_GetFlag_DataType: ; 0x020974C8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl DWCi_Acc_GetFlags + and r0, r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start DWCi_Acc_GetFlags +DWCi_Acc_GetFlags: ; 0x020974E0 + ldr r1, [r0, #0x0] + ldr r0, _020974F0 ; =0x001FFFFF + and r0, r0, r1, lsr #0xb + bx lr + .balign 4 +_020974F0: .word 0x001FFFFF + + arm_func_start DWCi_Acc_SetGsProfileId +DWCi_Acc_SetGsProfileId: ; 0x020974F4 + str r1, [r0, #0x4] + bx lr + + arm_func_start DWCi_Acc_SetFriendKey +DWCi_Acc_SetFriendKey: ; 0x020974FC + str r1, [r0, #0x4] + str r2, [r0, #0x8] + bx lr + + arm_func_start DWCi_Acc_SetPlayerId +DWCi_Acc_SetPlayerId: ; 0x02097508 + str r1, [r0, #0x8] + bx lr + + arm_func_start DWCi_Acc_SetUserId +DWCi_Acc_SetUserId: ; 0x02097510 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r4, r1 + mov r1, r2 + ldr r3, _02097540 ; =0x000007FF + mov r2, r12 + mov r5, r0 + bl DWCi_Acc_SetMaskBits + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_02097540: .word 0x000007FF + + arm_func_start DWCi_Acc_GetGsProfileId +DWCi_Acc_GetGsProfileId: + ldr r0, [r0, #0x4] + bx lr + + arm_func_start DWCi_Acc_GetFriendKey +DWCi_Acc_GetFriendKey: ; 0x0209754C + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x4] + orr r1, r1, #0x0 + orr r0, r0, #0x0 + bx lr + + arm_func_start DWCi_Acc_GetPlayerId +DWCi_Acc_GetPlayerId: + ldr r0, [r0, #0x8] + bx lr + + arm_func_start DWCi_Acc_GetUserId +DWCi_Acc_GetUserId: ; 0x02097568 + ldr r2, [r0, #0x0] + ldr r1, _02097584 ; =0x000007FF + ldr r0, [r0, #0x4] + and r1, r2, r1 + orr r1, r1, #0x0 + orr r0, r0, #0x0 + bx lr + .balign 4 +_02097584: .word 0x000007FF + + arm_func_start DWCi_Acc_SetMaskBits +DWCi_Acc_SetMaskBits: ; 0x02097588 + mvn r12, r3 + ands r12, r1, r12 + movne r0, #0x0 + bxne lr + mvn r3, r3, lsl r2 + ldr r12, [r0, #0x0] + and r3, r12, r3 + orr r1, r3, r1, lsl r2 + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr diff --git a/arm9/asm/DWC_backup.s b/arm9/asm/DWC_backup.s new file mode 100644 index 00000000..6a06652f --- /dev/null +++ b/arm9/asm/DWC_backup.s @@ -0,0 +1,959 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global nv_result +nv_result: ; 0x021C8C78 + .space 0x4 + + .global nv_cb_occurred +nv_cb_occurred: ; 0x021C8C7C + .space 0x4 + + .global Address +Address: ; 0x021C8C80 + .space 0x4 + + .global Wifi +Wifi: ; 0x021C8C84 + .space 0x1c + + .global Work +Work: ; 0x021C8CA0 + .space 0x20 + + .text + + arm_func_start DWCi_BACKUPlGetWifi +DWCi_BACKUPlGetWifi: ; 0x02095324 + ldr r0, _0209532C ; =Wifi + bx lr + .balign 4 +_0209532C: .word Wifi + + arm_func_start DWCi_BACKUPlConvWifiInfo +DWCi_BACKUPlConvWifiInfo: ; 0x02095330 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldr r3, [r4, #0x8] + ldr r2, [r4, #0xc] + ldr r1, _020953E4 ; =Wifi + str r2, [sp, #0x4] + str r3, [sp, #0x0] + mov r2, #0x5 + bl MI_CpuCopy8 + ldr r1, [sp, #0x0] + ldr r2, [r4, #0x4] + ldr r0, [sp, #0x4] + mov r2, r2, lsr #0x8 + mov r12, r1, lsr #0x5 + mov r3, r0, lsr #0x5 + orr r12, r12, r0, lsl #0x1b + and lr, r2, #0x7 + and r0, r1, #0x1f + orr lr, lr, r0, lsl #0x3 + ldr r2, _020953E4 ; =Wifi + ldr r1, _020953E8 ; =Wifi + 0x6 + strb lr, [r2, #0x5] + add r0, sp, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r2, #0x4 + bl MI_CpuCopy8 + ldrh r0, [r4, #0x10] + ldr r1, [sp, #0x4] + ldr r3, _020953E4 ; =Wifi + and r1, r1, #0x3f + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0x6 + strb r0, [r3, #0xa] + ldrh r2, [r4, #0x10] + add r0, r4, #0x12 + ldr r1, _020953EC ; =Wifi + 0xc + mov r4, r2, asr #0x2 + mov r2, #0x2 + strb r4, [r3, #0xb] + bl MI_CpuCopy8 + ldr r0, _020953E4 ; =Wifi + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020953E4: .word Wifi +_020953E8: .word Wifi + 0x6 +_020953EC: .word Wifi + 0xc + + arm_func_start Callback_NVRAM +Callback_NVRAM: ; 0x020953F0 + ldr r3, _02095420 ; =nv_result + and r12, r1, #0xff + ldr r0, _02095424 ; =nv_cb_occurred + mov r1, #0x1 + strh r12, [r3, #0x0] + str r1, [r0, #0x0] + cmp r2, #0x0 + movne r0, #0xff + strneh r0, [r3, #0x0] + ldr r0, _02095420 ; =nv_result + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_02095420: .word nv_result +_02095424: .word nv_cb_occurred + + arm_func_start writeDisable +writeDisable: + stmdb sp!, {r4-r6,lr} + mov r5, #0x4 + mov r4, #0x1 +_02095434: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _02095434 + ldr r1, _02095490 ; =Callback_NVRAM + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r4, #0x40000 + mov r6, #0x7 + mov r5, #0x0 +_02095460: + mov r0, r6 + mov r1, r5 + mov r2, r5 + mov r3, r5 + bl NVRAMm_ExecuteCommand + cmp r0, #0x1 + beq _02095488 + mov r0, r4 + bl SVC_WaitByLoop + b _02095460 +_02095488: + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02095490: .word Callback_NVRAM + + arm_func_start verify +verify: + stmdb sp!, {r4-r6,lr} + mov r5, r2 + mov r4, r3 + mov r6, r0 + mov r0, r1 + mov r1, r5 + mov r2, r4 + bl readNvram + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl memcmp + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start writeNvram +writeNvram: ; 0x020954E0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0x4 + mov r4, #0x1 +_020954F8: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _020954F8 + ldr r1, _02095558 ; =Callback_NVRAM + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r0, r6 + mov r1, r7 + bl DC_StoreRange + mov r4, #0x40000 + mov r5, #0x2 +_0209552C: + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl NVRAMm_ExecuteCommand + cmp r0, #0x1 + ldmeqia sp!, {r4-r8,pc} + mov r0, r4 + bl SVC_WaitByLoop + b _0209552C + ldmia sp!, {r4-r8,pc} + .balign 4 +_02095558: .word Callback_NVRAM + + arm_func_start readNvram +readNvram: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r4, r2 + mov r6, r0 + mov r0, r4 + mov r5, r1 + bl DC_InvalidateRange + mov r8, #0x4 + mov r7, #0x1 +_02095580: + mov r0, r8 + mov r1, r7 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _02095580 + ldr r1, _020955F0 ; =Callback_NVRAM + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r0, r5, lsl #0x10 + mov r8, r0, lsr #0x10 + mov r7, #0x40000 + mov r9, #0x1 +_020955B0: + mov r0, r9 + mov r1, r6 + mov r2, r8 + mov r3, r4 + bl NVRAMm_ExecuteCommand + cmp r0, #0x1 + beq _020955D8 + mov r0, r7 + bl SVC_WaitByLoop + b _020955B0 +_020955D8: + mov r0, r4 + mov r1, r5 + bl DC_InvalidateRange + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020955F0: .word Callback_NVRAM + + arm_func_start NVRAMm_ExecuteCommand +NVRAMm_ExecuteCommand: ; 0x020955F4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc4 + ldr ip, _02095AAC ; =0x0000FFFF + ldr sl, _02095AB0 ; =Work + and r8, r2, r12 + and r7, r1, r12 + mov r5, r1, lsr #0x10 + mov r4, r3, lsr #0x10 + and r1, r3, r12 + orr r3, r8, #0x30000 + str r3, [sp, #0xc] + ldr r3, _02095AB4 ; =0x01050000 + orr r2, r2, #0x20000 + orr r3, r1, r3 + str r3, [sp, #0x14] + orr r1, r1, #0x1040000 + mov r9, r0 + and r0, r5, #0xff + str r2, [sp, #0x1c] + str r1, [sp, #0x24] + ldr r1, _02095AB8 ; =0x02002200 + mov r8, #0x0 + orr r2, r4, #0x40000 + orr r1, r1, r10, lsr #0x18 + str r1, [sp, #0x28] + and r1, r12, r10, lsr #0x8 + orr r1, r1, #0x10000 + ldr r3, _02095ABC ; =0x02002300 + str r2, [sp, #0x10] + orr r2, r0, r3 + str r2, [sp, #0x8] + orr r2, r4, #0x30000 + str r2, [sp, #0x20] + ldr r2, _02095AC0 ; =0x02002500 + mov r6, r10, lsl #0x8 + str r1, [sp, #0x2c] + and r1, r6, #0xff00 + orr r0, r0, r2 + ldr r3, _02095AC4 ; =0x01020000 + str r0, [sp, #0x18] + orr r0, r1, r3 + str r0, [sp, #0x30] + mov r0, #0x20000 + str r0, [sp, #0x40] + mov r0, #0x5 + str r0, [sp, #0xac] + mov r0, #0x3 + str r0, [sp, #0xb0] + mov r0, #0x6 + str r0, [sp, #0xb8] + mov r0, #0x4000 + orr r7, r7, #0x10000 + str r8, [sp, #0xb4] + mov r4, #0x1 + str r8, [sp, #0xa8] + mov r5, #0x4 + str r8, [sp, #0xa4] + str r8, [sp, #0xa0] + str r8, [sp, #0x90] + str r8, [sp, #0x98] + str r8, [sp, #0x9c] + str r8, [sp, #0x94] + str r8, [sp, #0x8c] + str r8, [sp, #0x6c] + str r8, [sp, #0x74] + str r8, [sp, #0x7c] + str r8, [sp, #0x84] + str r8, [sp, #0x88] + str r8, [sp, #0x80] + str r8, [sp, #0x78] + str r8, [sp, #0x70] + str r8, [sp, #0x68] + str r8, [sp, #0x64] + str r8, [sp, #0x38] + str r8, [sp, #0x44] + str r8, [sp, #0x4c] + str r8, [sp, #0x54] + str r8, [sp, #0x5c] + str r8, [sp, #0x60] + str r8, [sp, #0x58] + str r8, [sp, #0x50] + str r8, [sp, #0x48] + str r8, [sp, #0x3c] + str r8, [sp, #0x34] + mov r6, r8 + str r0, [sp, #0xbc] +_0209574C: + cmp r8, #0x0 + bne _02095988 + ldr r0, _02095AC8 ; =nv_cb_occurred + cmp r9, #0x7 + str r6, [r0, #0x0] + addls pc, pc, r9, lsl #0x2 + b _0209574C +_02095768: ; jump table + b _0209574C ; case 0 + b _02095788 ; case 1 + b _02095834 ; case 2 + b _02095854 ; case 3 + b _020958F0 ; case 4 + b _020958F0 ; case 5 + b _02095948 ; case 6 + b _02095968 ; case 7 +_02095788: + ldr r1, [sp, #0x8] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x34] + blt _0209574C + ldr r2, [sp, #0x38] + mov r0, r5 + mov r1, r7 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x3c] + blt _0209574C + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x44] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x48] + blt _0209574C + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x4c] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x50] + blt _0209574C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x54] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x58] + blt _0209574C + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x5c] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x60] + movge r8, r4 + b _0209574C +_02095834: + ldr r1, _02095ACC ; =0x03002000 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0x64] + b _0209574C +_02095854: + ldr r1, [sp, #0x18] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x68] + blt _020958E0 + ldr r2, [sp, #0x6c] + mov r0, r5 + mov r1, r7 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x70] + blt _020958E0 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x74] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x78] + blt _020958E0 + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x7c] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x80] + blt _020958E0 + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x84] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x88] + movge r8, r4 +_020958E0: + bl OS_GetTick + str r0, [sp, #0x0] + mov r11, r1 + b _0209574C +_020958F0: + ldr r1, [sp, #0x28] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x8c] + blt _0209574C + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x90] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x94] + blt _0209574C + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x98] + mov r0, r5 + bl PXI_SendWordByFifo + cmp r0, #0x0 + ldrlt r8, [sp, #0x9c] + movge r8, r4 + b _0209574C +_02095948: + ldr r1, _02095AD0 ; =0x03002D00 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0xa0] + b _0209574C +_02095968: + ldr r1, _02095AD4 ; =0x03002100 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0xa4] + b _0209574C +_02095988: + ldr r0, _02095AC8 ; =nv_cb_occurred + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _0209574C + ldr r0, _02095AD8 ; =nv_result + ldr r8, [sp, #0xa8] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02095AA0 + cmp r9, #0x7 + addls pc, pc, r9, lsl #0x2 + b _0209574C +_020959B8: ; jump table + b _0209574C ; case 0 + b _020959D8 ; case 1 + b _020959E4 ; case 2 + b _020959EC ; case 3 + b _020959F4 ; case 4 + b _020959F4 ; case 5 + b _02095A88 ; case 6 + b _02095A94 ; case 7 +_020959D8: + add sp, sp, #0xc4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020959E4: + mov r9, r5 + b _0209574C +_020959EC: + ldr r9, [sp, #0xac] + b _0209574C +_020959F4: + mov r0, r10 + mov r1, r4 + bl DC_InvalidateRange + cmp r9, #0x4 + bne _02095A24 + ldrb r0, [r10, #0x0] + ands r0, r0, #0x2 + ldrne r9, [sp, #0xb0] + bne _0209574C + add sp, sp, #0xc4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_02095A24: + ldrb r1, [r10, #0x0] + ands r0, r1, #0x1 + addeq sp, sp, #0xc4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} + ands r0, r1, #0x20 + bne _02095A74 + bl OS_GetTick + ldr r2, [sp, #0x0] + ldr r3, [sp, #0xb4] + subs r2, r0, r2 + sbc r0, r1, r11 + mov r1, r0, lsl #0x6 + orr r1, r1, r2, lsr #0x1a + mov r0, r2, lsl #0x6 + ldr r2, _02095ADC ; =0x000082EA + bl _ll_udiv + cmp r1, #0x0 + cmpeq r0, #0xfa0 + bls _02095A7C +_02095A74: + ldr r9, [sp, #0xb8] + b _0209574C +_02095A7C: + ldr r0, [sp, #0xbc] + bl SVC_WaitByLoop + b _0209574C +_02095A88: + add sp, sp, #0xc4 + mov r0, r8 + ldmia sp!, {r4-r11,pc} +_02095A94: + add sp, sp, #0xc4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_02095AA0: + mov r0, r8 + add sp, sp, #0xc4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095AAC: .word 0x0000FFFF +_02095AB0: .word Work +_02095AB4: .word 0x01050000 +_02095AB8: .word 0x02002200 +_02095ABC: .word 0x02002300 +_02095AC0: .word 0x02002500 +_02095AC4: .word 0x01020000 +_02095AC8: .word nv_cb_occurred +_02095ACC: .word 0x03002000 +_02095AD0: .word 0x03002D00 +_02095AD4: .word 0x03002100 +_02095AD8: .word nv_result +_02095ADC: .word 0x000082EA + + arm_func_start DWC_BACKUPlCheckAddress +DWC_BACKUPlCheckAddress: + ldrb r0, [r0, #0x0] + cmp r0, #0x7f + moveq r0, #0x0 + bxeq lr + cmp r0, #0x1 + movcc r0, #0x0 + bxcc lr + cmp r0, #0xdf + movls r0, #0x1 + movhi r0, #0x0 + bx lr + + arm_func_start DWC_BACKUPlCheckIp +DWC_BACKUPlCheckIp: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x4 + bl MI_CpuCopy8 + add r1, sp, #0x4 + mov r0, r4 + mov r2, #0x4 + bl MI_CpuCopy8 + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x0] + mvn r0, #0x1 + orr r1, r2, r3 + cmp r1, r0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + mvn r0, r3 + ands r0, r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start DWC_BACKUPlCheckSsid +DWC_BACKUPlCheckSsid: + mov r2, #0x0 +_02095B8C: + ldrb r1, [r0, r2] + cmp r1, #0x0 + movne r0, #0x1 + bxne lr + add r2, r2, #0x1 + cmp r2, #0x20 + blt _02095B8C + mov r0, #0x0 + bx lr + + arm_func_start DWCi_BACKUPlConvMaskAddr +DWCi_BACKUPlConvMaskAddr: ; 0x02095BB0 + mvn r2, #0x0 + mov r12, #0x0 + eor r3, r2, r2, lsr r0 + mov r2, r12 +_02095BC0: + rsb r0, r2, #0x18 + mov r0, r3, lsr r0 + strb r0, [r1, r12] + add r12, r12, #0x1 + cmp r12, #0x4 + add r2, r2, #0x8 + blt _02095BC0 + bx lr + + arm_func_start DWCi_BACKUPlConvMaskCidr +DWCi_BACKUPlConvMaskCidr: ; 0x02095BE0 + stmdb sp!, {r4,lr} + mov lr, #0x0 + mov r4, lr + mov r2, lr +_02095BF0: + ldrb r3, [r0, lr] + mov r12, r2 +_02095BF8: + mov r1, r3, asr r12 + ands r1, r1, #0x1 + add r12, r12, #0x1 + addne r4, r4, #0x1 + cmp r12, #0x8 + blt _02095BF8 + add lr, lr, #0x1 + cmp lr, #0x4 + blt _02095BF0 + and r0, r4, #0xff + ldmia sp!, {r4,pc} + + arm_func_start DWCi_BACKUPlSetWiFi +DWCi_BACKUPlSetWiFi: ; 0x02095C24 + ldr ip, _02095C34 ; =MI_CpuCopy8 + ldr r1, _02095C38 ; =Wifi + mov r2, #0xe + bx r12 + .balign 4 +_02095C34: .word MI_CpuCopy8 +_02095C38: .word Wifi + + arm_func_start DWCi_BACKUPlWriteAll +DWCi_BACKUPlWriteAll: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r1, _02095CD8 ; =Address + mov r10, r0 + ldr r8, [r1, #0x0] + mov r7, r10 + mov r9, #0x0 + add r4, r10, #0x400 + add r6, r10, #0x500 + mov r5, #0x100 + mov r11, #0xfe +_02095C68: + mov r0, r6 + mov r1, r7 + mov r2, r11 + bl MATH_CalcCRC16 + add r1, r10, r9, lsl #0x8 + strh r0, [r1, #0xfe] +_02095C80: + mov r0, r8 + mov r1, r5 + mov r2, r7 + bl writeNvram + mov r0, r7 + mov r1, r8 + mov r2, r5 + mov r3, r4 + bl verify + cmp r0, #0x0 + beq _02095C80 + add r9, r9, #0x1 + cmp r9, #0x4 + add r7, r7, #0x100 + add r8, r8, #0x100 + blt _02095C68 + bl writeDisable + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095CD8: .word Address + + arm_func_start DWCi_BACKUPlWritePage +DWCi_BACKUPlWritePage: ; 0x02095CDC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _02095D64 ; =Address + mov r4, r0 + ldr r6, [r3, #0x0] + mov r9, r1 + mov r8, r2 + mov r7, #0x0 + mov r5, #0x100 +_02095D00: + ldr r0, [r9, r7, lsl #0x2] + cmp r0, #0x0 + beq _02095D38 +_02095D0C: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl writeNvram + mov r0, r4 + mov r1, r6 + mov r2, r5 + mov r3, r8 + bl verify + cmp r0, #0x0 + beq _02095D0C +_02095D38: + add r7, r7, #0x1 + cmp r7, #0x4 + add r4, r4, #0x100 + add r6, r6, #0x100 + blt _02095D00 + bl writeDisable + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_02095D64: .word Address + + arm_func_start DWCi_BACKUPlRead +DWCi_BACKUPlRead: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02095D98 ; =Address + mov r2, r0 + ldr r0, [r1, #0x0] + mov r1, #0x400 + bl readNvram + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_02095D98: .word Address + + arm_func_start DWCi_BACKUPlInit +DWCi_BACKUPlInit: + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x20 + mov r1, r0 + mov r2, r4 + bl readNvram + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldrh r2, [r4, #0x0] + ldr r1, _02095DDC ; =Address + mov r0, #0x1 + mov r2, r2, lsl #0x3 + sub r2, r2, #0x400 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_02095DDC: .word Address + + arm_func_start DWCi_BM_SetWiFiInfo +DWCi_BM_SetWiFiInfo: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, _02095EBC ; =Address + mov r10, r1 + ldr r8, [r2, #0x0] + bl DWCi_BACKUPlConvWifiInfo + ldr r1, _02095EC0 ; =0x0000A001 + add r0, r10, #0x200 + bl MATHi_CRC16InitTableRev + mov r9, #0x0 + add r4, r10, #0x100 + add r6, r10, #0xf0 + mov r7, #0x100 + mov r5, #0xe + mov r11, #0xfe +_02095E1C: + mov r0, r8 + mov r1, r7 + mov r2, r10 + bl readNvram + cmp r0, #0x0 + bne _02095E44 + bl OS_Terminate + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_02095E44: + ldr r0, _02095EC4 ; =Wifi + mov r1, r6 + mov r2, r5 + bl MI_CpuCopy8 + mov r1, r10 + mov r2, r11 + add r0, r10, #0x200 + bl MATH_CalcCRC16 + strh r0, [r10, #0xfe] +_02095E68: + mov r0, r8 + mov r1, r7 + mov r2, r10 + bl writeNvram + mov r0, r10 + mov r1, r8 + mov r2, r7 + mov r3, r4 + bl verify + cmp r0, #0x0 + beq _02095E68 + add r9, r9, #0x1 + cmp r9, #0x2 + add r8, r8, #0x100 + blt _02095E1C + bl writeDisable + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095EBC: .word Address +_02095EC0: .word 0x0000A001 +_02095EC4: .word Wifi + + arm_func_start DWCi_BM_GetWiFiInfo +DWCi_BM_GetWiFiInfo: + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _02095F90 ; =Wifi + mov r1, r4 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r3, [r4, #0x0] + mvn r0, #0x0 + ldr r2, [r4, #0x4] + ldr r1, _02095F94 ; =0x000007FF + and r0, r3, r0 + str r0, [r4, #0x0] + and r1, r2, r1 + ldr r0, _02095F98 ; =Wifi + 0x5 + str r1, [r4, #0x4] + add r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + add r12, r4, #0x8 + ldr r1, [r4, #0x8] + ldr r0, [r12, #0x4] + mov r1, r1, lsr #0x3 + orr r1, r1, r0, lsl #0x1d + str r1, [r4, #0x8] + mov r0, r0, lsr #0x3 + str r0, [r12, #0x4] + ldr r3, [r4, #0x8] + mvn r0, #0x0 + ldr r2, [r12, #0x4] + ldr r1, _02095F94 ; =0x000007FF + and r0, r3, r0 + str r0, [r4, #0x8] + and r1, r2, r1 + ldr r0, _02095F9C ; =Wifi + 0xa + str r1, [r12, #0x4] + add r1, r4, #0x10 + mov r2, #0x2 + bl MI_CpuCopy8 + ldrh r1, [r4, #0x10] + ldr r3, _02095FA0 ; =0x000003FF + ldr r0, _02095FA4 ; =Wifi + 0xc + mov r1, r1, asr #0x6 + strh r1, [r4, #0x10] + ldrh r12, [r4, #0x10] + add r1, r4, #0x12 + mov r2, #0x2 + and r3, r12, r3 + strh r3, [r4, #0x10] + bl MI_CpuCopy8 + ldmia sp!, {r4,pc} + .balign 4 +_02095F90: .word Wifi +_02095F94: .word 0x000007FF +_02095F98: .word Wifi + 0x5 +_02095F9C: .word Wifi + 0xa +_02095FA0: .word 0x000003FF +_02095FA4: .word Wifi + 0xc + + arm_func_start DWCi_BM_GetApInfo +DWCi_BM_GetApInfo: ; 0x02095FA8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02095FD8 ; =Address + mov r2, r0 + ldr r0, [r1, #0x0] + mov r1, #0x300 + bl readNvram + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_02095FD8: .word Address diff --git a/arm9/asm/DWC_bm_init.s b/arm9/asm/DWC_bm_init.s new file mode 100644 index 00000000..038abe94 --- /dev/null +++ b/arm9/asm/DWC_bm_init.s @@ -0,0 +1,357 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global DWCi_SETTING_NONE +DWCi_SETTING_NONE: ; 0x020FF574 + .byte 0x00, 0x00, 0x00, 0x00 + + .text + + arm_func_start initPage +initPage: ; 0x02095FDC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r1, r5, r4, lsl #0x8 + mov r0, #0x0 + mov r2, #0x100 + bl MIi_CpuClear16 + add r0, r5, r4, lsl #0x8 + mov r1, #0xff + strb r1, [r0, #0xe7] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start init +init: ; 0x02096010 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r7, r0 + mov r1, r7 + mov r0, #0x0 + mov r2, #0x400 + bl MIi_CpuClear16 + mov r2, #0x0 + mov r1, #0xff +_02096034: + add r0, r7, r2, lsl #0x8 + add r2, r2, #0x1 + strb r1, [r0, #0xe7] + cmp r2, #0x3 + blt _02096034 + add r0, sp, #0x0 + bl DWCi_AUTH_GetNewWiFiInfo + add r0, sp, #0x0 + bl DWCi_BACKUPlConvWifiInfo + mov r6, r0 + mov r5, #0x0 + mov r4, #0xe +_02096064: + mov r0, r6 + mov r2, r4 + add r1, r7, #0xf0 + bl MI_CpuCopy8 + add r5, r5, #0x1 + cmp r5, #0x2 + add r7, r7, #0x100 + blt _02096064 + mov r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start checkAp +checkAp: + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldrb r0, [r4, #0xe7] + cmp r0, #0xff + addeq sp, sp, #0x8 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + cmp r0, #0x2 + addhi sp, sp, #0x8 + movhi r0, #0x0 + ldmhiia sp!, {r4,pc} + add r0, r4, #0x40 + bl DWC_BACKUPlCheckSsid + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, _0209618C ; =DWCi_SETTING_NONE + add r0, r4, #0xc0 + mov r2, #0x4 + bl memcmp + cmp r0, #0x0 + beq _02096140 + add r0, r4, #0xc4 + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldrb r0, [r4, #0xd0] + cmp r0, #0x20 + addhi sp, sp, #0x8 + movhi r0, #0x0 + ldmhiia sp!, {r4,pc} + add r1, sp, #0x0 + bl DWCi_BACKUPlConvMaskAddr + add r1, sp, #0x0 + add r0, r4, #0xc0 + bl DWC_BACKUPlCheckIp + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096140: + ldr r1, _0209618C ; =DWCi_SETTING_NONE + add r0, r4, #0xc8 + mov r2, #0x4 + bl memcmp + cmp r0, #0x0 + beq _02096180 + add r0, r4, #0xc8 + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + bne _02096180 + add r0, r4, #0xcc + bl DWC_BACKUPlCheckAddress + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096180: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_0209618C: .word DWCi_SETTING_NONE + + arm_func_start DWC_BM_Init +DWC_BM_Init: ; 0x02096190 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + mov r1, #0x0 + mov r2, #0x700 + bl MI_CpuFill8 + mov r0, r10 + bl DWCi_BACKUPlInit + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964B4 ; =0xFFFFD8EF + ldmeqia sp!, {r4-r11,pc} + ldr r1, _020964B8 ; =0x0000A001 + add r0, r10, #0x500 + bl MATHi_CRC16InitTableRev + mov r0, r10 + bl DWCi_BACKUPlRead + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964B4 ; =0xFFFFD8EF + ldmeqia sp!, {r4-r11,pc} + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r8, r10 + mov r7, r10 + mov r9, #0x0 + add r11, sp, #0x0 + add r6, r10, #0x500 + mov r4, #0x1 + mov r5, #0xfe +_02096210: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl MATH_CalcCRC16 + add r1, r10, r9, lsl #0x8 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + bne _02096240 + mov r0, r7 + bl checkAp + cmp r0, #0x0 + strne r4, [r11, r9, lsl #0x2] +_02096240: + add r9, r9, #0x1 + cmp r9, #0x3 + add r8, r8, #0x100 + add r7, r7, #0x100 + blt _02096210 + add r0, r10, #0x500 + add r1, r10, #0x300 + mov r2, #0xfe + bl MATH_CalcCRC16 + add r1, r10, #0x300 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + moveq r0, #0x1 + ldr r1, [sp, #0x0] + streq r0, [sp, #0xc] + cmp r1, #0x0 + beq _020962BC + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _020962BC + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020962BC + ldr r0, [sp, #0xc] + cmp r0, #0x0 + beq _020962BC + add r0, r10, #0xf0 + bl DWCi_BACKUPlSetWiFi + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020962BC: + cmp r1, #0x0 + bne _0209630C + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0209630C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _0209630C + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0209630C + mov r0, r10 + bl init + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_0209630C: + cmp r1, #0x0 + beq _02096320 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0209635C +_02096320: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02096338 + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0209635C +_02096338: + mov r0, r10 + bl init + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_0209635C: + cmp r1, #0x0 + bne _02096394 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _02096394 + mov r0, r10 + bl init + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + ldrne r0, _020964C0 ; =0xFFFFD8ED + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_02096394: + cmp r1, #0x0 + bne _020963C4 + mov r0, r10 + mov r1, #0x0 + bl initPage + add r0, r10, #0x1f0 + add r1, r10, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r10, #0x1ef] + strb r0, [r10, #0xef] + b _020963F4 +_020963C4: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _020963F4 + mov r0, r10 + mov r1, #0x1 + bl initPage + add r0, r10, #0xf0 + add r1, r10, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r10, #0xef] + strb r0, [r10, #0x1ef] +_020963F4: + add r0, r10, #0xf0 + bl DWCi_BACKUPlSetWiFi + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _02096414 + mov r0, r10 + mov r1, #0x2 + bl initPage +_02096414: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _02096430 + add r1, r10, #0x300 + mov r0, #0x0 + mov r2, #0x100 + bl MIi_CpuClear16 +_02096430: + mov r4, #0x0 + mov r1, r4 + add r0, sp, #0x0 + add r5, r10, #0xef + mov r6, #0x1 +_02096444: + ldr r2, [r0, r1, lsl #0x2] + cmp r2, #0x0 + bne _0209647C + ldrb r2, [r10, #0xef] + mov r7, r6, lsl r1 + ands r2, r2, r7 + beq _0209647C + ldrb r3, [r5, #0x0] + mvn r2, r7 + mov r4, r6 + and r2, r3, r2 + strb r2, [r5, #0x0] + ldrb r2, [r10, #0xef] + strb r2, [r10, #0x1ef] +_0209647C: + add r1, r1, #0x1 + cmp r1, #0x3 + blt _02096444 + mov r0, r10 + bl DWCi_BACKUPlWriteAll + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmeqia sp!, {r4-r11,pc} + cmp r4, #0x0 + ldrne r0, _020964C4 ; =0xFFFFD8EE + moveq r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020964B4: .word 0xFFFFD8EF +_020964B8: .word 0x0000A001 +_020964BC: .word 0xFFFFD8F0 +_020964C0: .word 0xFFFFD8ED +_020964C4: .word 0xFFFFD8EE diff --git a/arm9/asm/DWC_init.s b/arm9/asm/DWC_init.s new file mode 100644 index 00000000..24395f70 --- /dev/null +++ b/arm9/asm/DWC_init.s @@ -0,0 +1,37 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + .extern _SDK_NintendoDWC + + arm_func_start DWC_Init +DWC_Init: ; 0x02096B14 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, _02096B74 ; =_SDK_NintendoDWC + mov r4, #0x0 + bl OSi_ReferSymbol + mov r0, r6 + bl DWC_BM_Init + mov r5, r0 + bl DWC_Auth_CheckWiFiIDNeedCreate + cmp r0, #0x0 + beq _02096B4C + mov r0, r6 + bl DWCi_AUTH_MakeWiFiID + mov r4, #0x1 +_02096B4C: + cmp r5, #0x0 + bge _02096B64 + cmp r4, #0x0 + movne r0, #0x2 + moveq r0, #0x3 + ldmia sp!, {r4-r6,pc} +_02096B64: + cmp r4, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02096B74: .word _SDK_NintendoDWC diff --git a/arm9/asm/DWC_report.s b/arm9/asm/DWC_report.s new file mode 100644 index 00000000..1a4b032e --- /dev/null +++ b/arm9/asm/DWC_report.s @@ -0,0 +1,2 @@ + .include "asm/macros.inc" + .include "global.inc" diff --git a/arm9/asm/DWC_util_wifiidtool.s b/arm9/asm/DWC_util_wifiidtool.s new file mode 100644 index 00000000..660db18e --- /dev/null +++ b/arm9/asm/DWC_util_wifiidtool.s @@ -0,0 +1,458 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + .global UNK_020FF578 +UNK_020FF578: ; 0x020FF578 + .byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07 + + .global UNK_020FF580 +UNK_020FF580: ; 0x020FF580 + .byte 0x05, 0x09, 0x01, 0x0E, 0x0C, 0x02, 0x0A, 0x00, 0x0B, 0x0D, 0x03, 0x04, 0x08, 0x06, 0x0F, 0x07 + + .text + + arm_func_start DWC_Auth_CheckWiFiIDNeedCreate +DWC_Auth_CheckWiFiIDNeedCreate: + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0x0 + bl DWCi_BM_GetWiFiInfo + ldr r2, [sp, #0x8] + ldr r1, [sp, #0xc] + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r0 + bne _0209650C + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + cmp r1, r0 + cmpeq r2, r0 + addeq sp, sp, #0x14 + moveq r0, #0x1 + ldmeqia sp!, {pc} +_0209650C: + mov r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {pc} + + arm_func_start DWC_Auth_GetId +DWC_Auth_GetId: ; 0x02096518 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl DWCi_BM_GetWiFiInfo + add r0, sp, #0x0 + ldmia r0, {r2-r3} + stmia r4, {r2-r3} + add r1, sp, #0x8 + add r0, r4, #0x8 + ldmia r1, {r2-r3} + stmia r0, {r2-r3} + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r0 + streq r0, [r4, #0x10] + movne r0, #0x1 + strne r0, [r4, #0x10] + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02096570 +FUN_02096570: ; 0x02096570 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x28 + add r2, sp, #0x0 + mov r1, #0x0 + strb r1, [r2, #0x0] + strb r1, [r2, #0x1] + strb r1, [r2, #0x2] + strb r1, [r2, #0x3] + strb r1, [r2, #0x4] + mov r5, r0 + strb r1, [r2, #0x5] + bl DWCi_BM_GetWiFiInfo + bl RTC_Init + add r0, sp, #0x8 + bl RTC_GetDate + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x18 + bl RTC_GetTime + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x8 + add r1, sp, #0x18 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0x0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x28 + ldmltia sp!, {r4-r10,pc} + bl OS_IsTickAvailable + cmp r0, #0x0 + beq _0209660C + ldr r0, _02096700 ; =OS_GetTick + adds r4, r4, r0 +_0209660C: + add r0, sp, #0x0 + bl OS_GetMacAddress + ldrb r1, [sp, #0x0] + ldr r6, _02096704 ; =0x5D588B65 + ldr r7, _02096708 ; =0x00269EC3 + ldrb r0, [sp, #0x1] + mla r9, r4, r6, r7 + mov r1, r1, lsl #0x10 + orr r1, r1, r0, lsl #0x8 + ldrb r2, [sp, #0x2] + ldr r0, _0209670C ; =0x000009BF + ldrb r8, [sp, #0x3] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #0x1 + mov r2, r9, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + mov r3, r8, lsl #0x10 + ldrb r4, [sp, #0x4] + ldrb r0, [sp, #0x5] + mov r8, #0x0 + orr r10, r3, r4, lsl #0x8 + strh r2, [r5, #0x10] + str r8, [r5, #0x8] + str r8, [r5, #0xc] + moveq r1, #0x0 + ldr r2, [r5, #0xc] + ldr r3, [r5, #0x8] + cmp r2, r8 + cmpeq r3, r8 + and r4, r1, #0xff + orr r10, r0, r10 + bne _020966F4 +_02096698: + mla r9, r6, r9, r7 + b _020966A4 +_020966A0: + mla r9, r6, r9, r7 +_020966A4: + cmp r9, #0x0 + beq _020966A0 + ldrh r1, [r5, #0x12] + mov r0, r9, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r1, r0 + beq _020966A0 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + mov r1, r10 + mov r2, r4 + mov r3, r8 + bl FUN_02096988 + str r0, [r5, #0x8] + str r1, [r5, #0xc] + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x8] + cmp r0, r8 + cmpeq r1, r8 + beq _02096698 +_020966F4: + mov r0, #0x1 + add sp, sp, #0x28 + ldmia sp!, {r4-r10,pc} + .balign 4 +_02096700: .word OS_GetTick +_02096704: .word 0x5D588B65 +_02096708: .word 0x00269EC3 +_0209670C: .word 0x000009BF + + arm_func_start FUN_02096710 +FUN_02096710: ; 0x02096710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r5, r0 + add r0, sp, #0x0 + mov r4, r1 + bl DWCi_BM_GetWiFiInfo + add r12, r5, #0x8 + ldmia r12, {r2-r3} + stmia r5, {r2-r3} + add r1, sp, #0x8 + ldmia r1, {r2-r3} + mov r0, r5 + mov r1, r4 + stmia r12, {r2-r3} + bl DWCi_BM_SetWiFiInfo + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r5,pc} + + arm_func_start DWCi_AUTH_MakeWiFiID +DWCi_AUTH_MakeWiFiID: ; 0x02096760 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl DWCi_AUTH_GetNewWiFiInfo + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + add r0, sp, #0x0 + mov r1, r4 + bl DWCi_BM_SetWiFiInfo + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start DWCi_AUTH_GetNewWiFiInfo +DWCi_AUTH_GetNewWiFiInfo: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x28 + mov r8, r0 + bl DWCi_BM_GetWiFiInfo + bl RTC_Init + add r0, sp, #0x8 + bl RTC_GetDate + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x18 + bl RTC_GetTime + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} + add r0, sp, #0x8 + add r1, sp, #0x18 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0x0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x28 + ldmltia sp!, {r4-r10,pc} + bl OS_IsTickAvailable + cmp r0, #0x0 + beq _02096820 + ldr r0, _02096978 ; =OS_GetTick + adds r4, r4, r0 +_02096820: + add r0, sp, #0x0 + bl OS_GetMacAddress + ldrb r1, [sp, #0x0] + ldr sb, _0209697C ; =0x5D588B65 + ldr sl, _02096980 ; =0x00269EC3 + ldrb r0, [sp, #0x1] + mla r5, r4, r9, r10 + mov r1, r1, lsl #0x10 + orr r1, r1, r0, lsl #0x8 + ldrb r2, [sp, #0x2] + ldr r0, _02096984 ; =0x000009BF + ldrb r6, [sp, #0x3] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #0x1 + moveq r1, #0x0 + mov r2, r5, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + ldrb r0, [sp, #0x5] + ldrb r4, [sp, #0x4] + mov r3, r6, lsl #0x10 + and r7, r1, #0xff + orr r3, r3, r4, lsl #0x8 + strh r2, [r8, #0x10] + mov r4, #0x0 + str r4, [r8, #0x0] + str r4, [r8, #0x4] + ldrh r2, [r8, #0x12] + orr r6, r0, r3 + cmp r2, #0x0 + bne _02096910 + str r4, [r8, #0x8] + str r4, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + bne _0209696C +_020968C0: + mul r0, r5, r9 + adds r5, r0, r10 + bne _020968D8 +_020968CC: + mul r0, r5, r9 + adds r5, r0, r10 + beq _020968CC +_020968D8: + strh r5, [r8, #0x12] + ldrh r0, [r8, #0x12] + mov r1, r6 + mov r2, r7 + mov r3, r4 + bl FUN_02096988 + str r0, [r8, #0x8] + str r1, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, #0x0 + beq _020968C0 + b _0209696C +_02096910: + str r4, [r8, #0x8] + str r4, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + bne _0209696C + add r5, r8, #0x12 +_02096930: + ldrh r0, [r5, #0x0] + mov r1, r6 + mov r2, r7 + add r0, r0, #0x1 + strh r0, [r5, #0x0] + ldrh r0, [r8, #0x12] + mov r3, r4 + bl FUN_02096988 + str r0, [r8, #0x8] + str r1, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + beq _02096930 +_0209696C: + mov r0, #0x1 + add sp, sp, #0x28 + ldmia sp!, {r4-r10,pc} + .balign 4 +_02096978: .word OS_GetTick +_0209697C: .word 0x5D588B65 +_02096980: .word 0x00269EC3 +_02096984: .word 0x000009BF + + arm_func_start FUN_02096988 +FUN_02096988: ; 0x02096988 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov lr, #0x0 + and r12, lr, #0x0 + mvn r5, #0xff000000 + ldr r4, _02096B08 ; =0x0000FFFF + and r2, r2, #0x1 + mov r6, r12, lsl #0x2 + and r3, r3, #0x3 + and r5, r1, r5 + orr r1, r3, r2, lsl #0x2 + orr r6, r6, r2, lsr #0x1e + mov r7, r12, lsl #0x3 + and r2, r0, r4 + orr r0, r1, r5, lsl #0x3 + orr r1, r0, r2, lsl #0x1b + mov r3, r12, lsl #0x1b + orr r3, r3, r2, lsr #0x5 + orr r7, r7, r5, lsr #0x1d + orr r0, r12, r6 + orr r0, r7, r0 + orr r0, r3, r0 + add r2, sp, #0x0 + str r1, [sp, #0x0] + str r0, [sp, #0x4] +_020969EC: + ldrb r0, [r2, #0x0] + add lr, lr, #0x1 + cmp lr, #0x6 + eor r0, r0, #0xd6 + strb r0, [r2], #0x1 + blt _020969EC + ldr r2, _02096B0C ; =UNK_020FF580 + add r5, sp, #0x0 + mov r4, #0x0 +_02096A10: + ldrb r3, [r5, #0x0] + add r4, r4, #0x1 + cmp r4, #0x5 + mov r0, r3, asr #0x4 + and r1, r0, #0xf + and r0, r3, #0xf + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + orr r0, r0, r1, lsl #0x4 + strb r0, [r5], #0x1 + blt _02096A10 + add r0, sp, #0x0 + add r1, sp, #0x8 + mov r2, #0x8 + bl MI_CpuCopy8 + ldr r4, _02096B10 ; =UNK_020FF578 + add r5, sp, #0x8 + mov r3, #0x0 + add r1, sp, #0x0 +_02096A5C: + ldrb r2, [r5, #0x0] + ldrb r0, [r4, #0x0] + add r3, r3, #0x1 + cmp r3, #0x5 + strb r2, [r1, r0] + add r5, r5, #0x1 + add r4, r4, #0x1 + blt _02096A5C + ldrb r2, [sp, #0x5] + mov r0, #0x0 + ldr r3, [sp, #0x0] + and r2, r2, #0x7 + strb r0, [sp, #0x7] + strb r0, [sp, #0x6] + strb r2, [sp, #0x5] + ldr r2, [sp, #0x4] + mov r4, r3, lsl #0x1 + mov r2, r2, lsl #0x1 + orr r2, r2, r3, lsr #0x1f + str r2, [sp, #0x4] + ldrb r2, [sp, #0x5] + str r4, [sp, #0x0] + ldrb r3, [sp, #0x0] + mov r2, r2, asr #0x3 + and r2, r2, #0x1 + orr r2, r3, r2 + strb r2, [sp, #0x0] +_02096AC8: + ldrb r2, [r1, #0x0] + add r0, r0, #0x1 + cmp r0, #0x6 + eor r2, r2, #0x67 + strb r2, [r1], #0x1 + blt _02096AC8 + ldrb r0, [sp, #0x5] + mov r1, #0x0 + strb r1, [sp, #0x7] + and r0, r0, #0x7 + strb r1, [sp, #0x6] + strb r0, [sp, #0x5] + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + .balign 4 +_02096B08: .word 0x0000FFFF +_02096B0C: .word UNK_020FF580 +_02096B10: .word UNK_020FF578 diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s index e7c3eeb8..edf5e64f 100644 --- a/arm9/asm/unk_020281E0.s +++ b/arm9/asm/unk_020281E0.s @@ -347,7 +347,7 @@ _0202843A: add r5, #0x40 mul r0, r4 add r0, r5, r0 - bl FUN_0209700C + bl DWC_IsValidFriendData pop {r3-r5, pc} thumb_func_start FUN_02028448 diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s index be2e9a54..1af52e10 100644 --- a/arm9/asm/unk_0202DB14.s +++ b/arm9/asm/unk_0202DB14.s @@ -198,7 +198,7 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r1, [r1, #0x0] add r1, #0x48 add r1, r1, r5 - bl FUN_02096CCC + bl DWC_CreateExchangeToken ldr r0, _0202DCD8 ; =UNK_021C59E4 mov r1, #0x0 ldr r0, [r0, #0x0] diff --git a/arm9/asm/unk_020337E8.s b/arm9/asm/unk_020337E8.s index 34148259..d535c8fc 100644 --- a/arm9/asm/unk_020337E8.s +++ b/arm9/asm/unk_020337E8.s @@ -13,7 +13,7 @@ FUN_020337E8: ; 0x020337E8 add r0, #0x1f mov r1, #0x1f bic r0, r1 - bl FUN_02096B14 + bl DWC_Init add r5, r0, #0x0 add r0, r4, #0x0 bl FUN_02016A18 @@ -26,14 +26,14 @@ FUN_0203380C: ; 0x0203380C push {r4, lr} bl FUN_02028228 add r4, r0, #0x0 - bl FUN_02096FB0 + bl DWC_CheckUserData cmp r0, #0x0 bne _0203382A ldr r1, _0203382C ; =0x4144414A add r0, r4, #0x0 - bl thunk_FUN_02097190 + bl DWC_CreateUserData add r0, r4, #0x0 - bl thunk_FUN_02096e4c + bl DWC_ClearDirtyFlag _0203382A: pop {r4, pc} .balign 4 @@ -46,10 +46,10 @@ FUN_02033830: ; 0x02033830 bl FUN_02028228 add r4, r0, #0x0 add r1, sp, #0x0 - bl FUN_02096CCC + bl DWC_CreateExchangeToken add r0, r4, #0x0 add r1, sp, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId add sp, #0xc pop {r3-r4, pc} @@ -59,11 +59,11 @@ FUN_0203384C: ; 0x0203384C bl FUN_020286EC bl FUN_02028228 add r4, r0, #0x0 - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0x0 beq _0203386E add r0, r4, #0x0 - bl FUN_02096F18 + bl DWC_CheckValidConsole cmp r0, #0x0 beq _0203386E mov r0, #0x1 diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s index 1a099779..a321f397 100644 --- a/arm9/asm/unk_02033874.s +++ b/arm9/asm/unk_02033874.s @@ -23,7 +23,7 @@ FUN_02033874: ; 0x02033874 mvn r1, r1 str r1, [r0, #0x0] add r0, r5, #0x0 - bl FUN_0209700C + bl DWC_IsValidFriendData cmp r0, #0x0 bne _020338AE add sp, #0x8 @@ -34,7 +34,7 @@ _020338AE: _020338B0: add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_02096B78 + bl DWC_IsEqualFriendData cmp r0, #0x0 beq _020338C6 ldr r0, [sp, #0x0] @@ -45,16 +45,16 @@ _020338B0: _020338C6: add r0, r6, #0x0 add r1, r5, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, #0x0 ble _020338F4 add r0, r6, #0x0 add r1, r5, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId str r0, [sp, #0x4] add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId ldr r1, [sp, #0x4] cmp r1, r0 bne _020338F4 @@ -69,7 +69,7 @@ _020338F4: cmp r0, #0x0 bge _0203390A add r0, r4, #0x0 - bl FUN_0209700C + bl DWC_IsValidFriendData cmp r0, #0x0 bne _0203390A ldr r0, [sp, #0x0] @@ -102,7 +102,7 @@ FUN_02033918: ; 0x02033918 ldr r1, [sp, #0x0] ldr r2, [sp, #0x4] add r0, r7, #0x0 - bl FUN_020973B4 + bl DWC_CheckFriendKey cmp r0, #0x0 bne _02033950 add sp, #0x18 @@ -112,10 +112,10 @@ _02033950: ldr r1, [sp, #0x0] ldr r2, [sp, #0x4] add r0, sp, #0xc - bl FUN_02096D2C + bl DWC_CreateFriendKeyToken add r0, r7, #0x0 add r1, sp, #0xc - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, #0x0 bgt _0203396C add sp, #0x18 @@ -129,11 +129,11 @@ _0203396C: _02033974: add r0, r7, #0x0 add r1, sp, #0xc - bl FUN_02096DA0 + bl DWC_GetGsProfileId str r0, [sp, #0x8] add r0, r7, #0x0 add r1, r5, #0x0 - bl FUN_02096DA0 + bl DWC_GetGsProfileId ldr r1, [sp, #0x8] cmp r1, r0 bne _02033994 @@ -146,7 +146,7 @@ _02033994: cmp r0, #0x0 bge _020339A6 add r0, r5, #0x0 - bl FUN_0209700C + bl DWC_IsValidFriendData cmp r0, #0x0 bne _020339A6 str r4, [r6, #0x0] diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index 185f3505..abab2d60 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -1,8 +1,6 @@ .include "asm/macros.inc" .include "global.inc" - .extern OSi_ThreadInfo - .section .rodata .global UNK_020FF500 @@ -50,18 +48,6 @@ UNK_020FF572: ; 0x020FF572 UNK_020FF573: ; 0x020FF573 .byte 0x00 - .global UNK_020FF574 -UNK_020FF574: ; 0x020FF574 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF578 -UNK_020FF578: ; 0x020FF578 - .byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07 - - .global UNK_020FF580 -UNK_020FF580: ; 0x020FF580 - .byte 0x05, 0x09, 0x01, 0x0E, 0x0C, 0x02, 0x0A, 0x00, 0x0B, 0x0D, 0x03, 0x04, 0x08, 0x06, 0x0F, 0x07 - .section .data .global UNK_02106170 @@ -74,60 +60,8 @@ UNK_02106170: ; 0x02106170 .word UNK_020FF554 .word UNK_020FF534 - .global UNK_0210618C -UNK_0210618C: ; 0x0210618C - .asciz "%s%c%c%c%c%s" - - .balign 4, 0 - .global UNK_0210619C -UNK_0210619C: ; 0x0210619C - ; .asciz "0123456789abcdefghijklmnopqrstuvwxyz" - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 - .byte 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 - .byte 0x00, 0x00, 0x00, 0x00 - - .section .bss - - .global UNK_021C8C78 -UNK_021C8C78: ; 0x021C8C78 - .space 0x4 - - .global UNK_021C8C7C -UNK_021C8C7C: ; 0x021C8C7C - .space 0x4 - - .global UNK_021C8C80 -UNK_021C8C80: ; 0x021C8C80 - .space 0x4 - - .global UNK_021C8C84 -UNK_021C8C84: ; 0x021C8C84 - .space 0x5 - - .global UNK_021C8C89 -UNK_021C8C89: ; 0x021C8C89 - .space 0x1 - - .global UNK_021C8C8A -UNK_021C8C8A: ; 0x021C8C8A - .space 0x4 - - .global UNK_021C8C8E -UNK_021C8C8E: ; 0x021C8C8E - .space 0x2 - - .global UNK_021C8C90 -UNK_021C8C90: ; 0x021C8C90 - .space 0x10 - - .global UNK_021C8CA0 -UNK_021C8CA0: ; 0x021C8CA0 - .space 0x20 - .text - ; Nintendo DWC - arm_func_start FUN_020910EC FUN_020910EC: ; 0x020910EC stmdb sp!, {r4-r5,lr} @@ -4822,2597 +4756,3 @@ _0209530C: strb r7, [r0, #-0x4] strb r6, [r0, #-0x3] ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_02095324 -FUN_02095324: ; 0x02095324 - ldr r0, _0209532C ; =UNK_021C8C84 - bx lr - .balign 4 -_0209532C: .word UNK_021C8C84 - - arm_func_start FUN_02095330 -FUN_02095330: ; 0x02095330 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - mov r4, r0 - ldr r3, [r4, #0x8] - ldr r2, [r4, #0xc] - ldr r1, _020953E4 ; =UNK_021C8C84 - str r2, [sp, #0x4] - str r3, [sp, #0x0] - mov r2, #0x5 - bl MI_CpuCopy8 - ldr r1, [sp, #0x0] - ldr r2, [r4, #0x4] - ldr r0, [sp, #0x4] - mov r2, r2, lsr #0x8 - mov r12, r1, lsr #0x5 - mov r3, r0, lsr #0x5 - orr r12, r12, r0, lsl #0x1b - and lr, r2, #0x7 - and r0, r1, #0x1f - orr lr, lr, r0, lsl #0x3 - ldr r2, _020953E4 ; =UNK_021C8C84 - ldr r1, _020953E8 ; =UNK_021C8C8A - strb lr, [r2, #0x5] - add r0, sp, #0x0 - str r12, [sp, #0x0] - str r3, [sp, #0x4] - mov r2, #0x4 - bl MI_CpuCopy8 - ldrh r0, [r4, #0x10] - ldr r1, [sp, #0x4] - ldr r3, _020953E4 ; =UNK_021C8C84 - and r1, r1, #0x3f - and r0, r0, #0x3 - orr r0, r1, r0, lsl #0x6 - strb r0, [r3, #0xa] - ldrh r2, [r4, #0x10] - add r0, r4, #0x12 - ldr r1, _020953EC ; =UNK_021C8C90 - mov r4, r2, asr #0x2 - mov r2, #0x2 - strb r4, [r3, #0xb] - bl MI_CpuCopy8 - ldr r0, _020953E4 ; =UNK_021C8C84 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_020953E4: .word UNK_021C8C84 -_020953E8: .word UNK_021C8C8A -_020953EC: .word UNK_021C8C90 - - arm_func_start FUN_020953F0 -FUN_020953F0: ; 0x020953F0 - ldr r3, _02095420 ; =UNK_021C8C78 - and r12, r1, #0xff - ldr r0, _02095424 ; =UNK_021C8C7C - mov r1, #0x1 - strh r12, [r3, #0x0] - str r1, [r0, #0x0] - cmp r2, #0x0 - movne r0, #0xff - strneh r0, [r3, #0x0] - ldr r0, _02095420 ; =UNK_021C8C78 - ldrh r0, [r0, #0x0] - bx lr - .balign 4 -_02095420: .word UNK_021C8C78 -_02095424: .word UNK_021C8C7C - - arm_func_start FUN_02095428 -FUN_02095428: - stmdb sp!, {r4-r6,lr} - mov r5, #0x4 - mov r4, #0x1 -_02095434: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0x0 - beq _02095434 - ldr r1, _02095490 ; =FUN_020953F0 - mov r0, #0x4 - bl PXI_SetFifoRecvCallback - mov r4, #0x40000 - mov r6, #0x7 - mov r5, #0x0 -_02095460: - mov r0, r6 - mov r1, r5 - mov r2, r5 - mov r3, r5 - bl FUN_020955F4 - cmp r0, #0x1 - beq _02095488 - mov r0, r4 - bl SVC_WaitByLoop - b _02095460 -_02095488: - mov r0, #0x1 - ldmia sp!, {r4-r6,pc} - .balign 4 -_02095490: .word FUN_020953F0 - - arm_func_start FUN_02095494 -FUN_02095494: - stmdb sp!, {r4-r6,lr} - mov r5, r2 - mov r4, r3 - mov r6, r0 - mov r0, r1 - mov r1, r5 - mov r2, r4 - bl FUN_0209555C - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl memcmp - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020954E0 -FUN_020954E0: ; 0x020954E0 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0x4 - mov r4, #0x1 -_020954F8: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0x0 - beq _020954F8 - ldr r1, _02095558 ; =FUN_020953F0 - mov r0, #0x4 - bl PXI_SetFifoRecvCallback - mov r0, r6 - mov r1, r7 - bl DC_StoreRange - mov r4, #0x40000 - mov r5, #0x2 -_0209552C: - mov r0, r5 - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl FUN_020955F4 - cmp r0, #0x1 - ldmeqia sp!, {r4-r8,pc} - mov r0, r4 - bl SVC_WaitByLoop - b _0209552C - ldmia sp!, {r4-r8,pc} - .balign 4 -_02095558: .word FUN_020953F0 - - arm_func_start FUN_0209555C -FUN_0209555C: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r4, r2 - mov r6, r0 - mov r0, r4 - mov r5, r1 - bl DC_InvalidateRange - mov r8, #0x4 - mov r7, #0x1 -_02095580: - mov r0, r8 - mov r1, r7 - bl PXI_IsCallbackReady - cmp r0, #0x0 - beq _02095580 - ldr r1, _020955F0 ; =FUN_020953F0 - mov r0, #0x4 - bl PXI_SetFifoRecvCallback - mov r0, r5, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r7, #0x40000 - mov r9, #0x1 -_020955B0: - mov r0, r9 - mov r1, r6 - mov r2, r8 - mov r3, r4 - bl FUN_020955F4 - cmp r0, #0x1 - beq _020955D8 - mov r0, r7 - bl SVC_WaitByLoop - b _020955B0 -_020955D8: - mov r0, r4 - mov r1, r5 - bl DC_InvalidateRange - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020955F0: .word FUN_020953F0 - - arm_func_start FUN_020955F4 -FUN_020955F4: ; 0x020955F4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc4 - ldr ip, _02095AAC ; =0x0000FFFF - ldr sl, _02095AB0 ; =UNK_021C8CA0 - and r8, r2, r12 - and r7, r1, r12 - mov r5, r1, lsr #0x10 - mov r4, r3, lsr #0x10 - and r1, r3, r12 - orr r3, r8, #0x30000 - str r3, [sp, #0xc] - ldr r3, _02095AB4 ; =0x01050000 - orr r2, r2, #0x20000 - orr r3, r1, r3 - str r3, [sp, #0x14] - orr r1, r1, #0x1040000 - mov r9, r0 - and r0, r5, #0xff - str r2, [sp, #0x1c] - str r1, [sp, #0x24] - ldr r1, _02095AB8 ; =0x02002200 - mov r8, #0x0 - orr r2, r4, #0x40000 - orr r1, r1, r10, lsr #0x18 - str r1, [sp, #0x28] - and r1, r12, r10, lsr #0x8 - orr r1, r1, #0x10000 - ldr r3, _02095ABC ; =0x02002300 - str r2, [sp, #0x10] - orr r2, r0, r3 - str r2, [sp, #0x8] - orr r2, r4, #0x30000 - str r2, [sp, #0x20] - ldr r2, _02095AC0 ; =0x02002500 - mov r6, r10, lsl #0x8 - str r1, [sp, #0x2c] - and r1, r6, #0xff00 - orr r0, r0, r2 - ldr r3, _02095AC4 ; =0x01020000 - str r0, [sp, #0x18] - orr r0, r1, r3 - str r0, [sp, #0x30] - mov r0, #0x20000 - str r0, [sp, #0x40] - mov r0, #0x5 - str r0, [sp, #0xac] - mov r0, #0x3 - str r0, [sp, #0xb0] - mov r0, #0x6 - str r0, [sp, #0xb8] - mov r0, #0x4000 - orr r7, r7, #0x10000 - str r8, [sp, #0xb4] - mov r4, #0x1 - str r8, [sp, #0xa8] - mov r5, #0x4 - str r8, [sp, #0xa4] - str r8, [sp, #0xa0] - str r8, [sp, #0x90] - str r8, [sp, #0x98] - str r8, [sp, #0x9c] - str r8, [sp, #0x94] - str r8, [sp, #0x8c] - str r8, [sp, #0x6c] - str r8, [sp, #0x74] - str r8, [sp, #0x7c] - str r8, [sp, #0x84] - str r8, [sp, #0x88] - str r8, [sp, #0x80] - str r8, [sp, #0x78] - str r8, [sp, #0x70] - str r8, [sp, #0x68] - str r8, [sp, #0x64] - str r8, [sp, #0x38] - str r8, [sp, #0x44] - str r8, [sp, #0x4c] - str r8, [sp, #0x54] - str r8, [sp, #0x5c] - str r8, [sp, #0x60] - str r8, [sp, #0x58] - str r8, [sp, #0x50] - str r8, [sp, #0x48] - str r8, [sp, #0x3c] - str r8, [sp, #0x34] - mov r6, r8 - str r0, [sp, #0xbc] -_0209574C: - cmp r8, #0x0 - bne _02095988 - ldr r0, _02095AC8 ; =UNK_021C8C7C - cmp r9, #0x7 - str r6, [r0, #0x0] - addls pc, pc, r9, lsl #0x2 - b _0209574C -_02095768: - b _0209574C -_0209576C: - b _02095788 -_02095770: - b _02095834 -_02095774: - b _02095854 -_02095778: - b _020958F0 -_0209577C: - b _020958F0 -_02095780: - b _02095948 -_02095784: - b _02095968 -_02095788: - ldr r1, [sp, #0x8] - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x34] - blt _0209574C - ldr r2, [sp, #0x38] - mov r0, r5 - mov r1, r7 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x3c] - blt _0209574C - ldr r1, [sp, #0x40] - ldr r2, [sp, #0x44] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x48] - blt _0209574C - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x4c] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x50] - blt _0209574C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x54] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x58] - blt _0209574C - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x5c] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x60] - movge r8, r4 - b _0209574C -_02095834: - ldr r1, _02095ACC ; =0x03002000 - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r8, r4 - ldrlt r8, [sp, #0x64] - b _0209574C -_02095854: - ldr r1, [sp, #0x18] - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x68] - blt _020958E0 - ldr r2, [sp, #0x6c] - mov r0, r5 - mov r1, r7 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x70] - blt _020958E0 - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x74] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x78] - blt _020958E0 - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x7c] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x80] - blt _020958E0 - ldr r1, [sp, #0x24] - ldr r2, [sp, #0x84] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x88] - movge r8, r4 -_020958E0: - bl OS_GetTick - str r0, [sp, #0x0] - mov r11, r1 - b _0209574C -_020958F0: - ldr r1, [sp, #0x28] - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x8c] - blt _0209574C - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x90] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x94] - blt _0209574C - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x98] - mov r0, r5 - bl PXI_SendWordByFifo - cmp r0, #0x0 - ldrlt r8, [sp, #0x9c] - movge r8, r4 - b _0209574C -_02095948: - ldr r1, _02095AD0 ; =0x03002D00 - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r8, r4 - ldrlt r8, [sp, #0xa0] - b _0209574C -_02095968: - ldr r1, _02095AD4 ; =0x03002100 - mov r0, r5 - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0x0 - movge r8, r4 - ldrlt r8, [sp, #0xa4] - b _0209574C -_02095988: - ldr r0, _02095AC8 ; =UNK_021C8C7C - ldr r0, [r0, #0x0] - cmp r0, #0x1 - bne _0209574C - ldr r0, _02095AD8 ; =UNK_021C8C78 - ldr r8, [sp, #0xa8] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bne _02095AA0 - cmp r9, #0x7 - addls pc, pc, r9, lsl #0x2 - b _0209574C - b _0209574C - b _020959D8 - b _020959E4 - b _020959EC - b _020959F4 - b _020959F4 - b _02095A88 - b _02095A94 -_020959D8: - add sp, sp, #0xc4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020959E4: - mov r9, r5 - b _0209574C -_020959EC: - ldr r9, [sp, #0xac] - b _0209574C -_020959F4: - mov r0, r10 - mov r1, r4 - bl DC_InvalidateRange - cmp r9, #0x4 - bne _02095A24 - ldrb r0, [r10, #0x0] - ands r0, r0, #0x2 - ldrne r9, [sp, #0xb0] - bne _0209574C - add sp, sp, #0xc4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_02095A24: - ldrb r1, [r10, #0x0] - ands r0, r1, #0x1 - addeq sp, sp, #0xc4 - moveq r0, #0x1 - ldmeqia sp!, {r4-r11,pc} - ands r0, r1, #0x20 - bne _02095A74 - bl OS_GetTick - ldr r2, [sp, #0x0] - ldr r3, [sp, #0xb4] - subs r2, r0, r2 - sbc r0, r1, r11 - mov r1, r0, lsl #0x6 - orr r1, r1, r2, lsr #0x1a - mov r0, r2, lsl #0x6 - ldr r2, _02095ADC ; =0x000082EA - bl _ll_udiv - cmp r1, #0x0 - cmpeq r0, #0xfa0 - bls _02095A7C -_02095A74: - ldr r9, [sp, #0xb8] - b _0209574C -_02095A7C: - ldr r0, [sp, #0xbc] - bl SVC_WaitByLoop - b _0209574C -_02095A88: - add sp, sp, #0xc4 - mov r0, r8 - ldmia sp!, {r4-r11,pc} -_02095A94: - add sp, sp, #0xc4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_02095AA0: - mov r0, r8 - add sp, sp, #0xc4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_02095AAC: .word 0x0000FFFF -_02095AB0: .word UNK_021C8CA0 -_02095AB4: .word 0x01050000 -_02095AB8: .word 0x02002200 -_02095ABC: .word 0x02002300 -_02095AC0: .word 0x02002500 -_02095AC4: .word 0x01020000 -_02095AC8: .word UNK_021C8C7C -_02095ACC: .word 0x03002000 -_02095AD0: .word 0x03002D00 -_02095AD4: .word 0x03002100 -_02095AD8: .word UNK_021C8C78 -_02095ADC: .word 0x000082EA - - arm_func_start FUN_02095AE0 -FUN_02095AE0: - ldrb r0, [r0, #0x0] - cmp r0, #0x7f - moveq r0, #0x0 - bxeq lr - cmp r0, #0x1 - movcc r0, #0x0 - bxcc lr - cmp r0, #0xdf - movls r0, #0x1 - movhi r0, #0x0 - bx lr - - arm_func_start FUN_02095B0C -FUN_02095B0C: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - bl FUN_02095AE0 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - add r1, sp, #0x0 - mov r0, r5 - mov r2, #0x4 - bl MI_CpuCopy8 - add r1, sp, #0x4 - mov r0, r4 - mov r2, #0x4 - bl MI_CpuCopy8 - ldr r3, [sp, #0x4] - ldr r2, [sp, #0x0] - mvn r0, #0x1 - orr r1, r2, r3 - cmp r1, r0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - mvn r0, r3 - ands r0, r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02095B88 -FUN_02095B88: - mov r2, #0x0 -_02095B8C: - ldrb r1, [r0, r2] - cmp r1, #0x0 - movne r0, #0x1 - bxne lr - add r2, r2, #0x1 - cmp r2, #0x20 - blt _02095B8C - mov r0, #0x0 - bx lr - - arm_func_start FUN_02095BB0 -FUN_02095BB0: ; 0x02095BB0 - mvn r2, #0x0 - mov r12, #0x0 - eor r3, r2, r2, lsr r0 - mov r2, r12 -_02095BC0: - rsb r0, r2, #0x18 - mov r0, r3, lsr r0 - strb r0, [r1, r12] - add r12, r12, #0x1 - cmp r12, #0x4 - add r2, r2, #0x8 - blt _02095BC0 - bx lr - - arm_func_start FUN_02095BE0 -FUN_02095BE0: ; 0x02095BE0 - stmdb sp!, {r4,lr} - mov lr, #0x0 - mov r4, lr - mov r2, lr -_02095BF0: - ldrb r3, [r0, lr] - mov r12, r2 -_02095BF8: - mov r1, r3, asr r12 - ands r1, r1, #0x1 - add r12, r12, #0x1 - addne r4, r4, #0x1 - cmp r12, #0x8 - blt _02095BF8 - add lr, lr, #0x1 - cmp lr, #0x4 - blt _02095BF0 - and r0, r4, #0xff - ldmia sp!, {r4,pc} - - arm_func_start FUN_02095C24 -FUN_02095C24: ; 0x02095C24 - ldr ip, _02095C34 ; =MI_CpuCopy8 - ldr r1, _02095C38 ; =UNK_021C8C84 - mov r2, #0xe - bx r12 - .balign 4 -_02095C34: .word MI_CpuCopy8 -_02095C38: .word UNK_021C8C84 - - arm_func_start FUN_02095C3C -FUN_02095C3C: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r1, _02095CD8 ; =UNK_021C8C80 - mov r10, r0 - ldr r8, [r1, #0x0] - mov r7, r10 - mov r9, #0x0 - add r4, r10, #0x400 - add r6, r10, #0x500 - mov r5, #0x100 - mov r11, #0xfe -_02095C68: - mov r0, r6 - mov r1, r7 - mov r2, r11 - bl MATH_CalcCRC16 - add r1, r10, r9, lsl #0x8 - strh r0, [r1, #0xfe] -_02095C80: - mov r0, r8 - mov r1, r5 - mov r2, r7 - bl FUN_020954E0 - mov r0, r7 - mov r1, r8 - mov r2, r5 - mov r3, r4 - bl FUN_02095494 - cmp r0, #0x0 - beq _02095C80 - add r9, r9, #0x1 - cmp r9, #0x4 - add r7, r7, #0x100 - add r8, r8, #0x100 - blt _02095C68 - bl FUN_02095428 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_02095CD8: .word UNK_021C8C80 - - arm_func_start FUN_02095CDC -FUN_02095CDC: ; 0x02095CDC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _02095D64 ; =UNK_021C8C80 - mov r4, r0 - ldr r6, [r3, #0x0] - mov r9, r1 - mov r8, r2 - mov r7, #0x0 - mov r5, #0x100 -_02095D00: - ldr r0, [r9, r7, lsl #0x2] - cmp r0, #0x0 - beq _02095D38 -_02095D0C: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020954E0 - mov r0, r4 - mov r1, r6 - mov r2, r5 - mov r3, r8 - bl FUN_02095494 - cmp r0, #0x0 - beq _02095D0C -_02095D38: - add r7, r7, #0x1 - cmp r7, #0x4 - add r4, r4, #0x100 - add r6, r6, #0x100 - blt _02095D00 - bl FUN_02095428 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_02095D64: .word UNK_021C8C80 - - arm_func_start FUN_02095D68 -FUN_02095D68: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _02095D98 ; =UNK_021C8C80 - mov r2, r0 - ldr r0, [r1, #0x0] - mov r1, #0x400 - bl FUN_0209555C - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_02095D98: .word UNK_021C8C80 - - arm_func_start FUN_02095D9C -FUN_02095D9C: - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x20 - mov r1, r0 - mov r2, r4 - bl FUN_0209555C - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldrh r2, [r4, #0x0] - ldr r1, _02095DDC ; =UNK_021C8C80 - mov r0, #0x1 - mov r2, r2, lsl #0x3 - sub r2, r2, #0x400 - str r2, [r1, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_02095DDC: .word UNK_021C8C80 - - arm_func_start FUN_02095DE0 -FUN_02095DE0: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r2, _02095EBC ; =UNK_021C8C80 - mov r10, r1 - ldr r8, [r2, #0x0] - bl FUN_02095330 - ldr r1, _02095EC0 ; =0x0000A001 - add r0, r10, #0x200 - bl MATHi_CRC16InitTableRev - mov r9, #0x0 - add r4, r10, #0x100 - add r6, r10, #0xf0 - mov r7, #0x100 - mov r5, #0xe - mov r11, #0xfe -_02095E1C: - mov r0, r8 - mov r1, r7 - mov r2, r10 - bl FUN_0209555C - cmp r0, #0x0 - bne _02095E44 - bl OS_Terminate - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_02095E44: - ldr r0, _02095EC4 ; =UNK_021C8C84 - mov r1, r6 - mov r2, r5 - bl MI_CpuCopy8 - mov r1, r10 - mov r2, r11 - add r0, r10, #0x200 - bl MATH_CalcCRC16 - strh r0, [r10, #0xfe] -_02095E68: - mov r0, r8 - mov r1, r7 - mov r2, r10 - bl FUN_020954E0 - mov r0, r10 - mov r1, r8 - mov r2, r7 - mov r3, r4 - bl FUN_02095494 - cmp r0, #0x0 - beq _02095E68 - add r9, r9, #0x1 - cmp r9, #0x2 - add r8, r8, #0x100 - blt _02095E1C - bl FUN_02095428 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_02095EBC: .word UNK_021C8C80 -_02095EC0: .word 0x0000A001 -_02095EC4: .word UNK_021C8C84 - - arm_func_start FUN_02095EC8 -FUN_02095EC8: - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _02095F90 ; =UNK_021C8C84 - mov r1, r4 - mov r2, #0x6 - bl MI_CpuCopy8 - ldr r3, [r4, #0x0] - mvn r0, #0x0 - ldr r2, [r4, #0x4] - ldr r1, _02095F94 ; =0x000007FF - and r0, r3, r0 - str r0, [r4, #0x0] - and r1, r2, r1 - ldr r0, _02095F98 ; =UNK_021C8C89 - str r1, [r4, #0x4] - add r1, r4, #0x8 - mov r2, #0x6 - bl MI_CpuCopy8 - add r12, r4, #0x8 - ldr r1, [r4, #0x8] - ldr r0, [r12, #0x4] - mov r1, r1, lsr #0x3 - orr r1, r1, r0, lsl #0x1d - str r1, [r4, #0x8] - mov r0, r0, lsr #0x3 - str r0, [r12, #0x4] - ldr r3, [r4, #0x8] - mvn r0, #0x0 - ldr r2, [r12, #0x4] - ldr r1, _02095F94 ; =0x000007FF - and r0, r3, r0 - str r0, [r4, #0x8] - and r1, r2, r1 - ldr r0, _02095F9C ; =UNK_021C8C8E - str r1, [r12, #0x4] - add r1, r4, #0x10 - mov r2, #0x2 - bl MI_CpuCopy8 - ldrh r1, [r4, #0x10] - ldr r3, _02095FA0 ; =0x000003FF - ldr r0, _02095FA4 ; =UNK_021C8C90 - mov r1, r1, asr #0x6 - strh r1, [r4, #0x10] - ldrh r12, [r4, #0x10] - add r1, r4, #0x12 - mov r2, #0x2 - and r3, r12, r3 - strh r3, [r4, #0x10] - bl MI_CpuCopy8 - ldmia sp!, {r4,pc} - .balign 4 -_02095F90: .word UNK_021C8C84 -_02095F94: .word 0x000007FF -_02095F98: .word UNK_021C8C89 -_02095F9C: .word UNK_021C8C8E -_02095FA0: .word 0x000003FF -_02095FA4: .word UNK_021C8C90 - - arm_func_start FUN_02095FA8 -FUN_02095FA8: ; 0x02095FA8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _02095FD8 ; =UNK_021C8C80 - mov r2, r0 - ldr r0, [r1, #0x0] - mov r1, #0x300 - bl FUN_0209555C - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_02095FD8: .word UNK_021C8C80 - - arm_func_start FUN_02095FDC -FUN_02095FDC: ; 0x02095FDC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - add r1, r5, r4, lsl #0x8 - mov r0, #0x0 - mov r2, #0x100 - bl MIi_CpuClear16 - add r0, r5, r4, lsl #0x8 - mov r1, #0xff - strb r1, [r0, #0xe7] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096010 -FUN_02096010: ; 0x02096010 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r7, r0 - mov r1, r7 - mov r0, #0x0 - mov r2, #0x400 - bl MIi_CpuClear16 - mov r2, #0x0 - mov r1, #0xff -_02096034: - add r0, r7, r2, lsl #0x8 - add r2, r2, #0x1 - strb r1, [r0, #0xe7] - cmp r2, #0x3 - blt _02096034 - add r0, sp, #0x0 - bl FUN_020967A4 - add r0, sp, #0x0 - bl FUN_02095330 - mov r6, r0 - mov r5, #0x0 - mov r4, #0xe -_02096064: - mov r0, r6 - mov r2, r4 - add r1, r7, #0xf0 - bl MI_CpuCopy8 - add r5, r5, #0x1 - cmp r5, #0x2 - add r7, r7, #0x100 - blt _02096064 - mov r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_02096090 -FUN_02096090: - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - mov r4, r0 - ldrb r0, [r4, #0xe7] - cmp r0, #0xff - addeq sp, sp, #0x8 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - cmp r0, #0x2 - addhi sp, sp, #0x8 - movhi r0, #0x0 - ldmhiia sp!, {r4,pc} - add r0, r4, #0x40 - bl FUN_02095B88 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, _0209618C ; =UNK_020FF574 - add r0, r4, #0xc0 - mov r2, #0x4 - bl memcmp - cmp r0, #0x0 - beq _02096140 - add r0, r4, #0xc4 - bl FUN_02095AE0 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldrb r0, [r4, #0xd0] - cmp r0, #0x20 - addhi sp, sp, #0x8 - movhi r0, #0x0 - ldmhiia sp!, {r4,pc} - add r1, sp, #0x0 - bl FUN_02095BB0 - add r1, sp, #0x0 - add r0, r4, #0xc0 - bl FUN_02095B0C - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} -_02096140: - ldr r1, _0209618C ; =UNK_020FF574 - add r0, r4, #0xc8 - mov r2, #0x4 - bl memcmp - cmp r0, #0x0 - beq _02096180 - add r0, r4, #0xc8 - bl FUN_02095AE0 - cmp r0, #0x0 - bne _02096180 - add r0, r4, #0xcc - bl FUN_02095AE0 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} -_02096180: - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_0209618C: .word UNK_020FF574 - - arm_func_start FUN_02096190 -FUN_02096190: ; 0x02096190 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - mov r1, #0x0 - mov r2, #0x700 - bl MI_CpuFill8 - mov r0, r10 - bl FUN_02095D9C - cmp r0, #0x0 - addeq sp, sp, #0x14 - ldreq r0, _020964B4 ; =0xFFFFD8EF - ldmeqia sp!, {r4-r11,pc} - ldr r1, _020964B8 ; =0x0000A001 - add r0, r10, #0x500 - bl MATHi_CRC16InitTableRev - mov r0, r10 - bl FUN_02095D68 - cmp r0, #0x0 - addeq sp, sp, #0x14 - ldreq r0, _020964B4 ; =0xFFFFD8EF - ldmeqia sp!, {r4-r11,pc} - add r0, sp, #0x0 - mov r1, #0x0 - mov r2, #0x10 - bl MI_CpuFill8 - mov r8, r10 - mov r7, r10 - mov r9, #0x0 - add r11, sp, #0x0 - add r6, r10, #0x500 - mov r4, #0x1 - mov r5, #0xfe -_02096210: - mov r0, r6 - mov r1, r8 - mov r2, r5 - bl MATH_CalcCRC16 - add r1, r10, r9, lsl #0x8 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - bne _02096240 - mov r0, r7 - bl FUN_02096090 - cmp r0, #0x0 - strne r4, [r11, r9, lsl #0x2] -_02096240: - add r9, r9, #0x1 - cmp r9, #0x3 - add r8, r8, #0x100 - add r7, r7, #0x100 - blt _02096210 - add r0, r10, #0x500 - add r1, r10, #0x300 - mov r2, #0xfe - bl MATH_CalcCRC16 - add r1, r10, #0x300 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - moveq r0, #0x1 - ldr r1, [sp, #0x0] - streq r0, [sp, #0xc] - cmp r1, #0x0 - beq _020962BC - ldr r0, [sp, #0x4] - cmp r0, #0x0 - beq _020962BC - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _020962BC - ldr r0, [sp, #0xc] - cmp r0, #0x0 - beq _020962BC - add r0, r10, #0xf0 - bl FUN_02095C24 - add sp, sp, #0x14 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020962BC: - cmp r1, #0x0 - bne _0209630C - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _0209630C - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bne _0209630C - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _0209630C - mov r0, r10 - bl FUN_02096010 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmia sp!, {r4-r11,pc} -_0209630C: - cmp r1, #0x0 - beq _02096320 - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _0209635C -_02096320: - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02096338 - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _0209635C -_02096338: - mov r0, r10 - bl FUN_02096010 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmia sp!, {r4-r11,pc} -_0209635C: - cmp r1, #0x0 - bne _02096394 - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _02096394 - mov r0, r10 - bl FUN_02096010 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - ldrne r0, _020964C0 ; =0xFFFFD8ED - add sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmia sp!, {r4-r11,pc} -_02096394: - cmp r1, #0x0 - bne _020963C4 - mov r0, r10 - mov r1, #0x0 - bl FUN_02095FDC - add r0, r10, #0x1f0 - add r1, r10, #0xf0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r10, #0x1ef] - strb r0, [r10, #0xef] - b _020963F4 -_020963C4: - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _020963F4 - mov r0, r10 - mov r1, #0x1 - bl FUN_02095FDC - add r0, r10, #0xf0 - add r1, r10, #0x1f0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r10, #0xef] - strb r0, [r10, #0x1ef] -_020963F4: - add r0, r10, #0xf0 - bl FUN_02095C24 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bne _02096414 - mov r0, r10 - mov r1, #0x2 - bl FUN_02095FDC -_02096414: - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _02096430 - add r1, r10, #0x300 - mov r0, #0x0 - mov r2, #0x100 - bl MIi_CpuClear16 -_02096430: - mov r4, #0x0 - mov r1, r4 - add r0, sp, #0x0 - add r5, r10, #0xef - mov r6, #0x1 -_02096444: - ldr r2, [r0, r1, lsl #0x2] - cmp r2, #0x0 - bne _0209647C - ldrb r2, [r10, #0xef] - mov r7, r6, lsl r1 - ands r2, r2, r7 - beq _0209647C - ldrb r3, [r5, #0x0] - mvn r2, r7 - mov r4, r6 - and r2, r3, r2 - strb r2, [r5, #0x0] - ldrb r2, [r10, #0xef] - strb r2, [r10, #0x1ef] -_0209647C: - add r1, r1, #0x1 - cmp r1, #0x3 - blt _02096444 - mov r0, r10 - bl FUN_02095C3C - cmp r0, #0x0 - addeq sp, sp, #0x14 - ldreq r0, _020964BC ; =0xFFFFD8F0 - ldmeqia sp!, {r4-r11,pc} - cmp r4, #0x0 - ldrne r0, _020964C4 ; =0xFFFFD8EE - moveq r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020964B4: .word 0xFFFFD8EF -_020964B8: .word 0x0000A001 -_020964BC: .word 0xFFFFD8F0 -_020964C0: .word 0xFFFFD8ED -_020964C4: .word 0xFFFFD8EE - - arm_func_start FUN_020964C8 -FUN_020964C8: - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0x0 - bl FUN_02095EC8 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0xc] - mov r0, #0x0 - cmp r1, r0 - cmpeq r2, r0 - bne _0209650C - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x0] - cmp r1, r0 - cmpeq r2, r0 - addeq sp, sp, #0x14 - moveq r0, #0x1 - ldmeqia sp!, {pc} -_0209650C: - mov r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {pc} - - arm_func_start FUN_02096518 -FUN_02096518: ; 0x02096518 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0x0 - bl FUN_02095EC8 - add r0, sp, #0x0 - ldmia r0, {r2-r3} - stmia r4, {r2-r3} - add r1, sp, #0x8 - add r0, r4, #0x8 - ldmia r1, {r2-r3} - stmia r0, {r2-r3} - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x4] - mov r0, #0x0 - cmp r1, r0 - cmpeq r2, r0 - streq r0, [r4, #0x10] - movne r0, #0x1 - strne r0, [r4, #0x10] - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096570 -FUN_02096570: ; 0x02096570 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x28 - add r2, sp, #0x0 - mov r1, #0x0 - strb r1, [r2, #0x0] - strb r1, [r2, #0x1] - strb r1, [r2, #0x2] - strb r1, [r2, #0x3] - strb r1, [r2, #0x4] - mov r5, r0 - strb r1, [r2, #0x5] - bl FUN_02095EC8 - bl RTC_Init - add r0, sp, #0x8 - bl RTC_GetDate - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x18 - bl RTC_GetTime - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x8 - add r1, sp, #0x18 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0x0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x28 - ldmltia sp!, {r4-r10,pc} - bl OS_IsTickAvailable - cmp r0, #0x0 - beq _0209660C - ldr r0, _02096700 ; =OS_GetTick - adds r4, r4, r0 -_0209660C: - add r0, sp, #0x0 - bl OS_GetMacAddress - ldrb r1, [sp, #0x0] - ldr r6, _02096704 ; =0x5D588B65 - ldr r7, _02096708 ; =0x00269EC3 - ldrb r0, [sp, #0x1] - mla r9, r4, r6, r7 - mov r1, r1, lsl #0x10 - orr r1, r1, r0, lsl #0x8 - ldrb r2, [sp, #0x2] - ldr r0, _0209670C ; =0x000009BF - ldrb r8, [sp, #0x3] - orr r1, r2, r1 - cmp r1, r0 - movne r1, #0x1 - mov r2, r9, lsr #0x10 - mov r0, #0x3e8 - mul r3, r2, r0 - mov r2, r3, lsr #0x10 - mov r3, r8, lsl #0x10 - ldrb r4, [sp, #0x4] - ldrb r0, [sp, #0x5] - mov r8, #0x0 - orr r10, r3, r4, lsl #0x8 - strh r2, [r5, #0x10] - str r8, [r5, #0x8] - str r8, [r5, #0xc] - moveq r1, #0x0 - ldr r2, [r5, #0xc] - ldr r3, [r5, #0x8] - cmp r2, r8 - cmpeq r3, r8 - and r4, r1, #0xff - orr r10, r0, r10 - bne _020966F4 -_02096698: - mla r9, r6, r9, r7 - b _020966A4 -_020966A0: - mla r9, r6, r9, r7 -_020966A4: - cmp r9, #0x0 - beq _020966A0 - ldrh r1, [r5, #0x12] - mov r0, r9, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r1, r0 - beq _020966A0 - strh r0, [r5, #0x12] - ldrh r0, [r5, #0x12] - mov r1, r10 - mov r2, r4 - mov r3, r8 - bl FUN_02096988 - str r0, [r5, #0x8] - str r1, [r5, #0xc] - ldr r0, [r5, #0xc] - ldr r1, [r5, #0x8] - cmp r0, r8 - cmpeq r1, r8 - beq _02096698 -_020966F4: - mov r0, #0x1 - add sp, sp, #0x28 - ldmia sp!, {r4-r10,pc} - .balign 4 -_02096700: .word OS_GetTick -_02096704: .word 0x5D588B65 -_02096708: .word 0x00269EC3 -_0209670C: .word 0x000009BF - - arm_func_start FUN_02096710 -FUN_02096710: ; 0x02096710 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0x0 - mov r4, r1 - bl FUN_02095EC8 - add r12, r5, #0x8 - ldmia r12, {r2-r3} - stmia r5, {r2-r3} - add r1, sp, #0x8 - ldmia r1, {r2-r3} - mov r0, r5 - mov r1, r4 - stmia r12, {r2-r3} - bl FUN_02095DE0 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x14 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096760 -FUN_02096760: ; 0x02096760 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0x0 - bl FUN_020967A4 - cmp r0, #0x0 - addeq sp, sp, #0x18 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - add r0, sp, #0x0 - mov r1, r4 - bl FUN_02095DE0 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020967A4 -FUN_020967A4: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x28 - mov r8, r0 - bl FUN_02095EC8 - bl RTC_Init - add r0, sp, #0x8 - bl RTC_GetDate - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x18 - bl RTC_GetTime - cmp r0, #0x0 - addne sp, sp, #0x28 - movne r0, #0x0 - ldmneia sp!, {r4-r10,pc} - add r0, sp, #0x8 - add r1, sp, #0x18 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0x0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x28 - ldmltia sp!, {r4-r10,pc} - bl OS_IsTickAvailable - cmp r0, #0x0 - beq _02096820 - ldr r0, _02096978 ; =OS_GetTick - adds r4, r4, r0 -_02096820: - add r0, sp, #0x0 - bl OS_GetMacAddress - ldrb r1, [sp, #0x0] - ldr sb, _0209697C ; =0x5D588B65 - ldr sl, _02096980 ; =0x00269EC3 - ldrb r0, [sp, #0x1] - mla r5, r4, r9, r10 - mov r1, r1, lsl #0x10 - orr r1, r1, r0, lsl #0x8 - ldrb r2, [sp, #0x2] - ldr r0, _02096984 ; =0x000009BF - ldrb r6, [sp, #0x3] - orr r1, r2, r1 - cmp r1, r0 - movne r1, #0x1 - moveq r1, #0x0 - mov r2, r5, lsr #0x10 - mov r0, #0x3e8 - mul r3, r2, r0 - mov r2, r3, lsr #0x10 - ldrb r0, [sp, #0x5] - ldrb r4, [sp, #0x4] - mov r3, r6, lsl #0x10 - and r7, r1, #0xff - orr r3, r3, r4, lsl #0x8 - strh r2, [r8, #0x10] - mov r4, #0x0 - str r4, [r8, #0x0] - str r4, [r8, #0x4] - ldrh r2, [r8, #0x12] - orr r6, r0, r3 - cmp r2, #0x0 - bne _02096910 - str r4, [r8, #0x8] - str r4, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, r4 - bne _0209696C -_020968C0: - mul r0, r5, r9 - adds r5, r0, r10 - bne _020968D8 -_020968CC: - mul r0, r5, r9 - adds r5, r0, r10 - beq _020968CC -_020968D8: - strh r5, [r8, #0x12] - ldrh r0, [r8, #0x12] - mov r1, r6 - mov r2, r7 - mov r3, r4 - bl FUN_02096988 - str r0, [r8, #0x8] - str r1, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, #0x0 - beq _020968C0 - b _0209696C -_02096910: - str r4, [r8, #0x8] - str r4, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, r4 - bne _0209696C - add r5, r8, #0x12 -_02096930: - ldrh r0, [r5, #0x0] - mov r1, r6 - mov r2, r7 - add r0, r0, #0x1 - strh r0, [r5, #0x0] - ldrh r0, [r8, #0x12] - mov r3, r4 - bl FUN_02096988 - str r0, [r8, #0x8] - str r1, [r8, #0xc] - ldr r0, [r8, #0xc] - ldr r1, [r8, #0x8] - cmp r0, r4 - cmpeq r1, r4 - beq _02096930 -_0209696C: - mov r0, #0x1 - add sp, sp, #0x28 - ldmia sp!, {r4-r10,pc} - .balign 4 -_02096978: .word OS_GetTick -_0209697C: .word 0x5D588B65 -_02096980: .word 0x00269EC3 -_02096984: .word 0x000009BF - - arm_func_start FUN_02096988 -FUN_02096988: ; 0x02096988 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov lr, #0x0 - and r12, lr, #0x0 - mvn r5, #0xff000000 - ldr r4, _02096B08 ; =0x0000FFFF - and r2, r2, #0x1 - mov r6, r12, lsl #0x2 - and r3, r3, #0x3 - and r5, r1, r5 - orr r1, r3, r2, lsl #0x2 - orr r6, r6, r2, lsr #0x1e - mov r7, r12, lsl #0x3 - and r2, r0, r4 - orr r0, r1, r5, lsl #0x3 - orr r1, r0, r2, lsl #0x1b - mov r3, r12, lsl #0x1b - orr r3, r3, r2, lsr #0x5 - orr r7, r7, r5, lsr #0x1d - orr r0, r12, r6 - orr r0, r7, r0 - orr r0, r3, r0 - add r2, sp, #0x0 - str r1, [sp, #0x0] - str r0, [sp, #0x4] -_020969EC: - ldrb r0, [r2, #0x0] - add lr, lr, #0x1 - cmp lr, #0x6 - eor r0, r0, #0xd6 - strb r0, [r2], #0x1 - blt _020969EC - ldr r2, _02096B0C ; =UNK_020FF580 - add r5, sp, #0x0 - mov r4, #0x0 -_02096A10: - ldrb r3, [r5, #0x0] - add r4, r4, #0x1 - cmp r4, #0x5 - mov r0, r3, asr #0x4 - and r1, r0, #0xf - and r0, r3, #0xf - ldrb r1, [r2, r1] - ldrb r0, [r2, r0] - orr r0, r0, r1, lsl #0x4 - strb r0, [r5], #0x1 - blt _02096A10 - add r0, sp, #0x0 - add r1, sp, #0x8 - mov r2, #0x8 - bl MI_CpuCopy8 - ldr r4, _02096B10 ; =UNK_020FF578 - add r5, sp, #0x8 - mov r3, #0x0 - add r1, sp, #0x0 -_02096A5C: - ldrb r2, [r5, #0x0] - ldrb r0, [r4, #0x0] - add r3, r3, #0x1 - cmp r3, #0x5 - strb r2, [r1, r0] - add r5, r5, #0x1 - add r4, r4, #0x1 - blt _02096A5C - ldrb r2, [sp, #0x5] - mov r0, #0x0 - ldr r3, [sp, #0x0] - and r2, r2, #0x7 - strb r0, [sp, #0x7] - strb r0, [sp, #0x6] - strb r2, [sp, #0x5] - ldr r2, [sp, #0x4] - mov r4, r3, lsl #0x1 - mov r2, r2, lsl #0x1 - orr r2, r2, r3, lsr #0x1f - str r2, [sp, #0x4] - ldrb r2, [sp, #0x5] - str r4, [sp, #0x0] - ldrb r3, [sp, #0x0] - mov r2, r2, asr #0x3 - and r2, r2, #0x1 - orr r2, r3, r2 - strb r2, [sp, #0x0] -_02096AC8: - ldrb r2, [r1, #0x0] - add r0, r0, #0x1 - cmp r0, #0x6 - eor r2, r2, #0x67 - strb r2, [r1], #0x1 - blt _02096AC8 - ldrb r0, [sp, #0x5] - mov r1, #0x0 - strb r1, [sp, #0x7] - and r0, r0, #0x7 - strb r1, [sp, #0x6] - strb r0, [sp, #0x5] - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - .balign 4 -_02096B08: .word 0x0000FFFF -_02096B0C: .word UNK_020FF580 -_02096B10: .word UNK_020FF578 - - .extern _SDK_NintendoDWC - - arm_func_start FUN_02096B14 -FUN_02096B14: ; 0x02096B14 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, _02096B74 ; =_SDK_NintendoDWC - mov r4, #0x0 - bl OSi_ReferSymbol - mov r0, r6 - bl FUN_02096190 - mov r5, r0 - bl FUN_020964C8 - cmp r0, #0x0 - beq _02096B4C - mov r0, r6 - bl FUN_02096760 - mov r4, #0x1 -_02096B4C: - cmp r5, #0x0 - bge _02096B64 - cmp r4, #0x0 - movne r0, #0x2 - moveq r0, #0x3 - ldmia sp!, {r4-r6,pc} -_02096B64: - cmp r4, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - ldmia sp!, {r4-r6,pc} - .balign 4 -_02096B74: .word _SDK_NintendoDWC - - ; Nintendo Wifi (?) - - arm_func_start FUN_02096B78 -FUN_02096B78: ; 0x02096B78 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r7, r0 - bl FUN_020974C8 - mov r5, r0 - mov r0, r4 - bl FUN_020974C8 - cmp r5, r0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - cmp r5, #0x3 - bne _02096BD8 - mov r0, r7 - bl FUN_02097544 - mov r5, r0 - mov r0, r4 - bl FUN_02097544 - cmp r5, r0 - moveq r0, #0x1 - add sp, sp, #0x4 - movne r0, #0x0 - ldmia sp!, {r4-r7,pc} -_02096BD8: - cmp r5, #0x1 - bne _02096C34 - mov r0, r7 - bl FUN_02097568 - mov r5, r0 - mov r6, r1 - mov r0, r4 - bl FUN_02097568 - cmp r6, r1 - cmpeq r5, r0 - bne _02096C28 - mov r0, r7 - bl FUN_02097560 - mov r5, r0 - mov r0, r4 - bl FUN_02097560 - cmp r5, r0 - addeq sp, sp, #0x4 - moveq r0, #0x1 - ldmeqia sp!, {r4-r7,pc} -_02096C28: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_02096C34: - cmp r5, #0x2 - bne _02096C6C - mov r0, r7 - bl FUN_0209754C - mov r5, r0 - mov r6, r1 - mov r0, r4 - bl FUN_0209754C - cmp r6, r1 - cmpeq r5, r0 - moveq r0, #0x1 - add sp, sp, #0x4 - movne r0, #0x0 - ldmia sp!, {r4-r7,pc} -_02096C6C: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_02096C78 -FUN_02096C78: ; 0x02096C78 - ldr ip, _02096C8C ; =FUN_02097218 - mov r3, r0 - mov r0, r1 - ldr r1, [r3, #0x24] - bx r12 - .balign 4 -_02096C8C: .word FUN_02097218 - - arm_func_start FUN_02096C90 -FUN_02096C90: ; 0x02096C90 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - mov r1, #0x0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r5 - mov r1, r4 - bl FUN_020974F4 - mov r0, r5 - mov r1, #0x3 - bl FUN_02097440 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096CCC -FUN_02096CCC: ; 0x02096CCC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r1, #0x0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r5 - bl FUN_0209702C - cmp r0, #0x0 - addeq r0, r5, #0x4 - ldmeqia r0, {r0-r2} - addeq sp, sp, #0x4 - stmeqia r4, {r0-r2} - ldmeqia sp!, {r4-r5,pc} - ldr r1, [r5, #0x1c] - mov r0, r4 - bl FUN_020974F4 - mov r0, r4 - mov r1, #0x3 - bl FUN_02097440 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_02096D2C -FUN_02096D2C: ; 0x02096D2C - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r4, r2 - mov r6, r0 - mov r1, #0x0 - mov r2, #0xc - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020974FC - mov r0, r6 - mov r1, #0x2 - bl FUN_02097440 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_02096D68 -FUN_02096D68: ; 0x02096D68 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldr r0, [r3, #0x1c] - mov r2, #0x0 - mov r1, r2 - cmp r0, #0x0 - beq _02096D94 - ldr r1, [r3, #0x24] - bl FUN_020973D0 - mov r2, r0 -_02096D94: - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_02096DA0 -FUN_02096DA0: ; 0x02096DA0 - stmdb sp!, {r4-r6,lr} - mov r4, r1 - mov r6, r0 - mov r0, r4 - bl FUN_020974C8 - cmp r0, #0x1 - beq _02096E14 - cmp r0, #0x2 - beq _02096DD0 - cmp r0, #0x3 - beq _02096E08 - b _02096E1C -_02096DD0: - mov r0, r4 - bl FUN_0209754C - ldr r2, [r6, #0x24] - mov r4, r0 - mov r5, r1 - bl FUN_02097344 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, [r6, #0x24] - mov r0, r4 - mov r1, r5 - bl FUN_02097324 - ldmia sp!, {r4-r6,pc} -_02096E08: - mov r0, r4 - bl FUN_02097544 - ldmia sp!, {r4-r6,pc} -_02096E14: - mvn r0, #0x0 - ldmia sp!, {r4-r6,pc} -_02096E1C: - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_02096E24 -FUN_02096E24: ; 0x02096E24 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020974C8 - cmp r0, #0x2 - movne r0, #0x0 - movne r1, r0 - ldmneia sp!, {r4,pc} - mov r0, r4 - bl FUN_0209754C - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096E4C -FUN_02096E4C: ; 0x02096E4C - stmdb sp!, {r4,lr} - sub sp, sp, #0x400 - mov r4, r0 - ldr r1, [r4, #0x20] - add r0, sp, #0x0 - bic r2, r1, #0x1 - ldr r1, _02096E8C ; =0xEDB88320 - str r2, [r4, #0x20] - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r4, #0x3c] - add sp, sp, #0x400 - ldmia sp!, {r4,pc} - .balign 4 -_02096E8C: .word 0xEDB88320 - - arm_func_start thunk_FUN_02096e4c -thunk_FUN_02096e4c: ; 0x02096E90 - ldr ip, _02096E98 ; =FUN_02096E4C - bx r12 - .balign 4 -_02096E98: .word FUN_02096E4C - - arm_func_start FUN_02096E9C -FUN_02096E9C: ; 0x02096E9C - ldr r0, [r0, #0x20] - and r0, r0, #0x1 - cmp r0, #0x1 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - - arm_func_start FUN_02096EB4 -FUN_02096EB4: ; 0x02096EB4 - ldr ip, _02096EBC ; =FUN_02096E9C - bx r12 - .balign 4 -_02096EBC: .word FUN_02096E9C - - arm_func_start FUN_02096EC0 -FUN_02096EC0: ; 0x02096EC0 - stmdb sp!, {r4,lr} - sub sp, sp, #0x400 - mov r4, r0 - add r3, r4, #0x10 - mov r12, r2 - ldmia r1, {r0-r2} - stmia r3, {r0-r2} - ldr r1, _02096F14 ; =0xEDB88320 - add r0, sp, #0x0 - str r12, [r4, #0x1c] - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r4, #0x3c] - ldr r0, [r4, #0x20] - orr r0, r0, #0x1 - str r0, [r4, #0x20] - add sp, sp, #0x400 - ldmia sp!, {r4,pc} - .balign 4 -_02096F14: .word 0xEDB88320 - - arm_func_start FUN_02096F18 -FUN_02096F18: ; 0x02096F18 - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, r4, #0x10 - bl FUN_020974C8 - cmp r0, #0x0 - addeq sp, sp, #0x18 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - add r0, sp, #0x0 - bl FUN_02096518 - ldr r0, [sp, #0x10] - cmp r0, #0x0 - addeq sp, sp, #0x18 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - add r0, r4, #0x10 - bl FUN_02097568 - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x0] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096F80 -FUN_02096F80: ; 0x02096F80 - stmdb sp!, {r4,lr} - mov r4, r0 - add r0, r4, #0x10 - bl FUN_0209703C - cmp r0, #0x0 - beq _02096FA8 - ldr r0, [r4, #0x1c] - cmp r0, #0x0 - movgt r0, #0x1 - ldmgtia sp!, {r4,pc} -_02096FA8: - mov r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02096FB0 -FUN_02096FB0: ; 0x02096FB0 - stmdb sp!, {r4,lr} - sub sp, sp, #0x400 - ldr r1, _02096FF0 ; =0xEDB88320 - mov r4, r0 - add r0, sp, #0x0 - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r4 - mov r2, #0x3c - bl MATH_CalcCRC32 - ldr r1, [r4, #0x3c] - cmp r0, r1 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x400 - ldmia sp!, {r4,pc} - .balign 4 -_02096FF0: .word 0xEDB88320 - - arm_func_start thunk_FUN_02097190 -thunk_FUN_02097190: ; 0x02096FF4 - ldr ip, _02096FFC ; =FUN_02097190 - bx r12 - .balign 4 -_02096FFC: .word FUN_02097190 - - arm_func_start FUN_02097000 -FUN_02097000: ; 0x02097000 - ldr ip, _02097008 ; =FUN_0209700C - bx r12 - .balign 4 -_02097008: .word FUN_0209700C - - arm_func_start FUN_0209700C -FUN_0209700C: ; 0x0209700C - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020974C8 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_0209702C -FUN_0209702C: - ldr ip, _02097038 ; =FUN_0209703C - add r0, r0, #0x10 - bx r12 - .balign 4 -_02097038: .word FUN_0209703C - - arm_func_start FUN_0209703C -FUN_0209703C: - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020974C8 - cmp r0, #0x1 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_0209705C -FUN_0209705C: ; 0x0209705C - stmdb sp!, {r4,lr} - sub sp, sp, #0x18 - mov r4, r0 - add r0, sp, #0x0 - bl FUN_02096518 - ldr r0, [sp, #0x10] - cmp r0, #0x0 - beq _020970A4 - mov r0, r4 - bl FUN_02097568 - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x0] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #0x1 - add sp, sp, #0x18 - movne r0, #0x0 - ldmia sp!, {r4,pc} -_020970A4: - mov r0, r4 - bl FUN_02097568 - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - cmp r2, r1 - cmpeq r3, r0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x18 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020970CC -FUN_020970CC: ; 0x020970CC - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x38 - mov r6, r0 - add r0, sp, #0x14 - bl OS_GetLowEntropyData - mov r3, #0x1 - add r2, sp, #0x14 -_020970E8: - add r0, r2, r3, lsl #0x2 - ldr r1, [r2, r3, lsl #0x2] - ldr r0, [r0, #-0x4] - eor r0, r1, r0 - str r0, [r2, r3, lsl #0x2] - add r3, r3, #0x1 - cmp r3, #0x8 - blo _020970E8 - add r0, sp, #0x0 - ldr r5, [sp, #0x30] - mov r4, #0x0 - bl FUN_02096518 - ldr r0, [sp, #0x10] - cmp r0, #0x0 - beq _02097138 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x4] - mov r0, r6 - bl FUN_02097510 - b _02097148 -_02097138: - ldr r1, [sp, #0x8] - ldr r2, [sp, #0xc] - mov r0, r6 - bl FUN_02097510 -_02097148: - ldr r0, _02097184 ; =0x6C078965 - ldr r1, _02097188 ; =0x5D588B65 - umull r3, r2, r5, r0 - mla r2, r5, r1, r2 - ldr r1, _0209718C ; =0x00269EC3 - mla r2, r4, r0, r2 - adds r0, r3, r1 - mov r0, r6 - adc r1, r2, #0x0 - bl FUN_02097508 - mov r0, r6 - mov r1, #0x1 - bl FUN_02097440 - add sp, sp, #0x38 - ldmia sp!, {r4-r6,pc} - .balign 4 -_02097184: .word 0x6C078965 -_02097188: .word 0x5D588B65 -_0209718C: .word 0x00269EC3 - - arm_func_start FUN_02097190 -FUN_02097190: ; 0x02097190 - stmdb sp!, {r4-r5,lr} - ldr ip, _02097210 ; =0x00000404 - sub sp, sp, r12 - mov r4, r1 - mov r1, #0x0 - mov r2, #0x40 - mov r5, r0 - bl MI_CpuFill8 - mov r0, #0x40 - str r0, [r5, #0x0] - mov r0, #0x0 - str r0, [r5, #0x1c] - add r0, r5, #0x4 - str r4, [r5, #0x24] - bl FUN_020970CC - add r0, r5, #0x10 - mov r1, #0x0 - bl FUN_02097440 - ldr r1, _02097214 ; =0xEDB88320 - add r0, sp, #0x0 - bl MATHi_CRC32InitTableRev - add r0, sp, #0x0 - mov r1, r5 - mov r2, #0x3c - bl MATH_CalcCRC32 - str r0, [r5, #0x3c] - ldr r0, [r5, #0x20] - orr r0, r0, #0x1 - str r0, [r5, #0x20] - ldr ip, _02097210 ; =0x00000404 - add sp, sp, r12 - ldmia sp!, {r4-r5,pc} - .balign 4 -_02097210: .word 0x00000404 -_02097214: .word 0xEDB88320 - - arm_func_start FUN_02097218 -FUN_02097218: ; 0x02097218 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r4, r1 - mov r5, r2 - bl FUN_02097568 - add r3, sp, #0x14 - mov r2, #0x2b - bl FUN_020972A8 - mov r0, r6 - bl FUN_02097560 - mov r1, #0x0 - mov r2, #0x20 - add r3, sp, #0x29 - bl FUN_020972A8 - mov r1, r4, lsr #0x18 - and r1, r1, #0xff - str r1, [sp, #0x0] - mov r1, r4, lsr #0x10 - and r1, r1, #0xff - str r1, [sp, #0x4] - mov r1, r4, lsr #0x8 - and r1, r1, #0xff - str r1, [sp, #0x8] - and r1, r4, #0xff - str r1, [sp, #0xc] - add r2, sp, #0x29 - str r2, [sp, #0x10] - ldr r2, _020972A4 ; =UNK_0210618C - mov r0, r5 - mov r1, #0x15 - add r3, sp, #0x14 - bl OS_SNPrintf - add sp, sp, #0x40 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020972A4: .word UNK_0210618C - - arm_func_start FUN_020972A8 -FUN_020972A8: ; 0x020972A8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr lr, _0209731C ; =0x66666667 - add r4, r2, #0x4 - smull r12, r2, lr, r4 - mov r2, r2, asr #0x1 - mov r12, r4, lsr #0x1f - add r2, r12, r2 - cmp r2, #0x0 - ldr r6, _02097320 ; =UNK_0210619C - mov r7, #0x0 - ble _0209730C - add r4, r3, r2 - sub r4, r4, #0x1 - mov r12, #0x1f -_020972E4: - and r5, r0, r12 - ldrsb r5, [r6, r5] - mov r0, r0, lsr #0x5 - mov lr, r1, lsr #0x5 - strb r5, [r4, -r7] - add r7, r7, #0x1 - orr r0, r0, r1, lsl #0x1b - mov r1, lr - cmp r7, r2 - blt _020972E4 -_0209730C: - mov r0, #0x0 - strb r0, [r3, r2] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_0209731C: .word 0x66666667 -_02097320: .word UNK_0210619C - - arm_func_start FUN_02097324 -FUN_02097324: ; 0x02097324 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_02097344 - cmp r0, #0x0 - mvnne r0, #0x0 - andne r0, r4, r0 - moveq r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02097344 -FUN_02097344: - stmdb sp!, {r4,lr} - sub sp, sp, #0x108 - mov r4, r1 - and r3, r4, #0x0 - mov r1, #0x0 - and r12, r0, #0x80000000 - cmp r3, r1 - cmpeq r12, r1 - addne sp, sp, #0x108 - movne r0, r1 - ldmneia sp!, {r4,pc} - str r0, [sp, #0x0] - add r0, sp, #0x8 - mov r1, #0x7 - str r2, [sp, #0x4] - bl MATHi_CRC8InitTable - add r0, sp, #0x8 - add r1, sp, #0x0 - mov r2, #0x8 - bl MATH_CalcCRC8 - and r2, r0, #0x7f - mov r1, r2, asr #0x1f - mov r0, #0x0 - cmp r1, r0 - cmpeq r2, r4 - moveq r0, #0x1 - add sp, sp, #0x108 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020973B4 -FUN_020973B4: ; 0x020973B4 - ldr ip, _020973CC ; =FUN_02097344 - mov r3, r0 - mov r0, r1 - mov r1, r2 - ldr r2, [r3, #0x24] - bx r12 - .balign 4 -_020973CC: .word FUN_02097344 - - arm_func_start FUN_020973D0 -FUN_020973D0: ; 0x020973D0 - stmdb sp!, {r4,lr} - sub sp, sp, #0x108 - mov r4, r0 - str r1, [sp, #0x4] - add r0, sp, #0x8 - mov r1, #0x7 - str r4, [sp, #0x0] - bl MATHi_CRC8InitTable - add r0, sp, #0x8 - add r1, sp, #0x0 - mov r2, #0x8 - bl MATH_CalcCRC8 - and r0, r0, #0x7f - orr r1, r0, #0x0 - orr r0, r4, #0x0 - add sp, sp, #0x108 - ldmia sp!, {r4,pc} - - arm_func_start FUN_02097414 -FUN_02097414: ; 0x02097414 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020974C8 - cmp r0, #0x3 - ldmneia sp!, {r4,pc} - mov r0, r4 - bl FUN_020974E0 - orr r1, r0, #0x4 - mov r0, r4 - bl FUN_0209746C - ldmia sp!, {r4,pc} - - arm_func_start FUN_02097440 -FUN_02097440: ; 0x02097440 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - bl FUN_020974E0 - bic r1, r0, #0x3 - mov r0, r5 - orr r1, r1, r4 - bl FUN_0209746C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_0209746C -FUN_0209746C: ; 0x0209746C - ldr ip, _0209747C ; =FUN_02097588 - ldr r3, _02097480 ; =0x001FFFFF - mov r2, #0xb - bx r12 - .balign 4 -_0209747C: .word FUN_02097588 -_02097480: .word 0x001FFFFF - - arm_func_start FUN_02097484 -FUN_02097484: ; 0x02097484 - ldr ip, _0209748C ; =FUN_020974C8 - bx r12 - .balign 4 -_0209748C: .word FUN_020974C8 - - arm_func_start FUN_02097490 -FUN_02097490: ; 0x02097490 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020974C8 - cmp r0, #0x3 - bne _020974C0 - mov r0, r4 - bl FUN_020974E0 - and r0, r0, #0x4 - cmp r0, #0x4 - moveq r0, #0x1 - movne r0, #0x0 - ldmia sp!, {r4,pc} -_020974C0: - mov r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020974C8 -FUN_020974C8: ; 0x020974C8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020974E0 - and r0, r0, #0x3 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020974E0 -FUN_020974E0: ; 0x020974E0 - ldr r1, [r0, #0x0] - ldr r0, _020974F0 ; =0x001FFFFF - and r0, r0, r1, lsr #0xb - bx lr - .balign 4 -_020974F0: .word 0x001FFFFF - - arm_func_start FUN_020974F4 -FUN_020974F4: ; 0x020974F4 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020974FC -FUN_020974FC: ; 0x020974FC - str r1, [r0, #0x4] - str r2, [r0, #0x8] - bx lr - - arm_func_start FUN_02097508 -FUN_02097508: ; 0x02097508 - str r1, [r0, #0x8] - bx lr - - arm_func_start FUN_02097510 -FUN_02097510: ; 0x02097510 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r12, #0x0 - mov r4, r1 - mov r1, r2 - ldr r3, _02097540 ; =0x000007FF - mov r2, r12 - mov r5, r0 - bl FUN_02097588 - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_02097540: .word 0x000007FF - - arm_func_start FUN_02097544 -FUN_02097544: - ldr r0, [r0, #0x4] - bx lr - - arm_func_start FUN_0209754C -FUN_0209754C: ; 0x0209754C - ldr r1, [r0, #0x8] - ldr r0, [r0, #0x4] - orr r1, r1, #0x0 - orr r0, r0, #0x0 - bx lr - - arm_func_start FUN_02097560 -FUN_02097560: - ldr r0, [r0, #0x8] - bx lr - - arm_func_start FUN_02097568 -FUN_02097568: ; 0x02097568 - ldr r2, [r0, #0x0] - ldr r1, _02097584 ; =0x000007FF - ldr r0, [r0, #0x4] - and r1, r2, r1 - orr r1, r1, #0x0 - orr r0, r0, #0x0 - bx lr - .balign 4 -_02097584: .word 0x000007FF - - arm_func_start FUN_02097588 -FUN_02097588: ; 0x02097588 - mvn r12, r3 - ands r12, r1, r12 - movne r0, #0x0 - bxne lr - mvn r3, r3, lsl r2 - ldr r12, [r0, #0x0] - and r3, r12, r3 - orr r1, r3, r1, lsl r2 - str r1, [r0, #0x0] - mov r0, #0x1 - bx lr diff --git a/arm9/global.inc b/arm9/global.inc index 12497154..07ea6384 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5474,47 +5474,47 @@ .extern FUN_020910EC
.extern FUN_0209521C
.extern FUN_020952AC
-.extern FUN_02095324
-.extern FUN_02095330
-.extern FUN_02095AE0
-.extern FUN_02095B0C
-.extern FUN_02095BB0
-.extern FUN_02095BE0
-.extern FUN_02095CDC
-.extern FUN_02095D68
-.extern FUN_02095EC8
-.extern FUN_02095FA8
-.extern FUN_02096190
+.extern DWCi_BACKUPlGetWifi
+.extern DWCi_BACKUPlConvWifiInfo
+.extern DWC_BACKUPlCheckAddress
+.extern DWC_BACKUPlCheckIp
+.extern DWCi_BACKUPlConvMaskAddr
+.extern DWCi_BACKUPlConvMaskCidr
+.extern DWCi_BACKUPlWritePage
+.extern DWCi_BACKUPlRead
+.extern DWCi_BM_GetWiFiInfo
+.extern DWCi_BM_GetApInfo
+.extern DWC_BM_Init
.extern FUN_02096570
.extern FUN_02096710
-.extern FUN_02096760
-.extern FUN_020967A4
-.extern FUN_02096B14
-.extern FUN_02096B78
-.extern FUN_02096C78
-.extern FUN_02096C90
-.extern FUN_02096CCC
-.extern FUN_02096D2C
-.extern FUN_02096D68
-.extern FUN_02096DA0
-.extern FUN_02096E24
-.extern FUN_02096EB4
-.extern FUN_02096EC0
-.extern FUN_02096F18
-.extern FUN_02096F80
-.extern FUN_02096FB0
-.extern FUN_02097000
-.extern FUN_0209700C
-.extern FUN_0209702C
-.extern FUN_0209703C
-.extern FUN_0209705C
-.extern FUN_020970CC
-.extern FUN_02097218
-.extern FUN_020973B4
-.extern FUN_02097414
-.extern FUN_02097484
-.extern FUN_02097490
-.extern FUN_02097508
+.extern DWCi_AUTH_MakeWiFiID
+.extern DWCi_AUTH_GetNewWiFiInfo
+.extern DWC_Init
+.extern DWC_IsEqualFriendData
+.extern DWC_LoginIdToUserName
+.extern DWC_SetGsProfileId
+.extern DWC_CreateExchangeToken
+.extern DWC_CreateFriendKeyToken
+.extern DWC_CreateFriendKey
+.extern DWC_GetGsProfileId
+.extern DWC_GetFriendKey
+.extern DWC_CheckDirtyFlag
+.extern DWCi_Acc_SetLoginIdToUserData
+.extern DWC_CheckValidConsole
+.extern DWC_CheckHasProfile
+.extern DWC_CheckUserData
+.extern DWCi_Acc_IsValidFriendData
+.extern DWC_IsValidFriendData
+.extern DWCi_Acc_IsAuthentic
+.extern DWCi_Acc_IsValidLoginId
+.extern DWCi_Acc_CheckConsoleUserId
+.extern DWCi_Acc_CreateTempLoginId
+.extern DWCi_Acc_LoginIdToUserName
+.extern DWC_CheckFriendKey
+.extern DWCi_SetBuddyFriendData
+.extern DWC_GetFriendDataType
+.extern DWC_IsBuddyFriendData
+.extern DWCi_Acc_SetPlayerId
.extern WCM_GetPhase
.extern WCM_TerminateAsync
.extern WCM_DisconnectAsync
@@ -7874,8 +7874,8 @@ .extern sys_writec
.extern tempName_NNS_FndAllocFromExpHeapEx
.extern tempName_NNS_FndCreateExpHeapEx
-.extern thunk_FUN_02096e4c
-.extern thunk_FUN_02097190
+.extern DWC_ClearDirtyFlag
+.extern DWC_CreateUserData
.extern thunk_FUN_020adc8c
.extern thunk_FUN_020adc8c_2
.extern thunk_FUN_020ae84c
@@ -7897,3 +7897,10 @@ .extern WCMi_EntryApList
.extern WCMi_CpsifRecvCallback
.extern WCMi_ShelterRssi
+.extern DWC_Auth_GetId
+.extern DWC_BACKUPlCheckSsid
+.extern DWCi_BACKUPlInit
+.extern DWCi_BACKUPlSetWiFi
+.extern DWCi_BACKUPlWriteAll
+.extern DWCi_BM_SetWiFiInfo
+.extern DWC_Auth_CheckWiFiIDNeedCreate
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 1f9a41fa..835a8975 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -457,7 +457,7 @@ _021D9378: _021D93AC: add r0, r5, #0x1f bic r0, r0, #0x1f - bl FUN_02096760 + bl DWCi_AUTH_MakeWiFiID ldr r0, _021D940C ; =0x0220BF98 mov r1, r5 mov r2, #0 @@ -718,7 +718,7 @@ MOD04_021D96EC: ; 0x021D96EC cmp r4, #1 bne _021D9758 ldr r0, _021D97EC ; =0x0221046C - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo _021D9758: ldr r0, _021D97E8 ; =0x02210468 ldr r2, _021D97F0 ; =0x000011CC @@ -1482,7 +1482,7 @@ MOD04_021DA238: ; 0x021DA238 sub sp, sp, #0x18 mov r4, r0 add r0, sp, #0 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo add r1, sp, #0 mov r0, r4 bl MOD04_021D9F78 @@ -3343,7 +3343,7 @@ _021DBCB4: ldr r0, [r4] bl MOD04_021DAE4C add r0, sp, #0x68 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r2, [sp, #0x68] ldr r1, [sp, #0x6c] mov r0, #0 @@ -8747,7 +8747,7 @@ MOD04_021E0628: ; 0x021E0628 ldr r1, [r2, #0xc] add r2, sp, #8 add r0, r0, #4 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName ldr r1, _021E07D0 ; =0x00000705 add r2, sp, #8 mov r0, r5 @@ -8791,7 +8791,7 @@ _021E0704: ldr r1, [r2, #0xc] add r2, sp, #0x1d add r0, r0, #4 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName add r1, sp, #0x1d add r0, r4, #0x8e bl strcmp @@ -8802,13 +8802,13 @@ _021E0704: ldr r0, [r0] ldr r1, [r0, #0xc] add r0, r0, #0x3c - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName ldr r0, _021E07CC ; =0x022106C8 ldr r2, [r4, #4] ldr r1, [r0] ldr r0, [r1, #0x1c] add r1, r1, #0x3c - bl FUN_02096EC0 + bl DWCi_Acc_SetLoginIdToUserData mov r0, r5 bl MOD04_021F0D54 ldr r0, _021E07CC ; =0x022106C8 @@ -8876,7 +8876,7 @@ MOD04_021E07E4: ; 0x021E07E4 str r2, [r1, #0x24] ldr r0, [r0] ldr r0, [r0, #0x1c] - bl FUN_0209702C + bl DWCi_Acc_IsAuthentic cmp r0, #0 beq _021E0898 ldr r0, _021E09DC ; =0x022106C8 @@ -9002,7 +9002,7 @@ MOD04_021E0A00: ; 0x021E0A00 str r5, [r2] str r4, [r1] ldr r0, [r0, #0x1c] - bl FUN_0209702C + bl DWCi_Acc_IsAuthentic cmp r0, #0 beq _021E0A68 ldr r0, _021E0BB8 ; =0x022106C8 @@ -9011,20 +9011,20 @@ MOD04_021E0A00: ; 0x021E0A00 add r2, r1, #0x248 ldr r1, [r0, #0x24] add r0, r0, #0x10 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName b _021E0B1C _021E0A68: ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] add r0, r0, #0x3c - bl FUN_0209703C + bl DWCi_Acc_IsValidLoginId cmp r0, #0 bne _021E0AD0 ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] ldr r0, [r0, #0x1c] add r0, r0, #4 - bl FUN_0209705C + bl DWCi_Acc_CheckConsoleUserId cmp r0, #0 beq _021E0ABC ldr r0, _021E0BB8 ; =0x022106C8 @@ -9039,7 +9039,7 @@ _021E0ABC: ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] add r0, r0, #0x3c - bl FUN_020970CC + bl DWCi_Acc_CreateTempLoginId b _021E0B04 _021E0AD0: bl OS_GetTick @@ -9054,14 +9054,14 @@ _021E0AD0: ldr r3, [r3] adc r1, r4, #0 add r0, r3, #0x3c - bl FUN_02097508 + bl DWCi_Acc_SetPlayerId _021E0B04: ldr r0, _021E0BB8 ; =0x022106C8 ldr r2, [r0] ldr r1, [r2, #0xc] add r0, r2, #0x3c add r2, r2, #0x248 - bl FUN_02097218 + bl DWCi_Acc_LoginIdToUserName _021E0B1C: ldr r0, _021E0BB8 ; =0x022106C8 ldr r0, [r0] @@ -9534,7 +9534,7 @@ MOD04_021E110C: ; 0x021E110C _021E115C: ldr r0, [r2, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #1 bne _021E11C8 bl MOD04_021E0F00 @@ -9542,7 +9542,7 @@ _021E115C: add r2, sp, #8 ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096C78 + bl DWC_LoginIdToUserName add r0, sp, #8 add r1, sl, #0x8e bl strcmp @@ -9552,31 +9552,31 @@ _021E115C: ldr r1, [sl, #4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02096C90 + bl DWC_SetGsProfileId ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData mov r8, r5 b _021E125C _021E11C8: ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #3 beq _021E11F8 ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #2 bne _021E125C _021E11F8: ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #1 streq fp, [sp] beq _021E125C @@ -9585,18 +9585,18 @@ _021E11F8: ldr r1, [r4] ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r6, r0 bne _021E125C ldr r0, [r4] mov r1, r6 ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02096C90 + bl DWC_SetGsProfileId ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData ldr r8, [sp, #4] _021E125C: ldr r2, [r4] @@ -9650,7 +9650,7 @@ MOD04_021E12B8: ; 0x021E12B8 _021E1304: ldr r0, [r1, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #1 bne _021E136C bl MOD04_021E0F00 @@ -9658,7 +9658,7 @@ _021E1304: add r2, sp, #4 ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096C78 + bl DWC_LoginIdToUserName ldr r1, [sp] add r0, sp, #4 bl strcmp @@ -9671,20 +9671,20 @@ _021E1304: ldr r1, [sb, #4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02096C90 + bl DWC_SetGsProfileId mov fp, r5 b _021E13CC _021E136C: ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #3 beq _021E139C ldr r0, [r4] ldr r0, [r0, #0x18] add r0, r0, r7 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #2 bne _021E13CC _021E139C: @@ -9693,7 +9693,7 @@ _021E139C: ldr r1, [r4] ldr r1, [r1, #0x18] add r1, r1, r7 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r6, r0 bne _021E13CC mov r0, sl @@ -9742,7 +9742,7 @@ MOD04_021E1414: ; 0x021E1414 ldr r0, [r1] ldr r0, [r0, #0x18] add r0, r0, r6 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #0 beq _021E15FC ldr r7, _021E1670 ; =0x022106D0 @@ -9813,12 +9813,12 @@ _021E1548: ldr r1, [r1] ldr r0, [r0, #0x18] add r0, r0, r6 - bl FUN_02096C90 + bl DWC_SetGsProfileId ldr r0, _021E1670 ; =0x022106D0 ldr r0, [r0] ldr r0, [r0, #0x18] add r0, r0, r6 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData mov r0, r8 bl MOD04_021E1DA4 ldr r0, _021E1670 ; =0x022106D0 @@ -9871,7 +9871,7 @@ _021E1618: ldr r1, [r1, #0x18] mov r0, #0xc mla r0, r8, r0, r1 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #0 addne sp, sp, #4 ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} @@ -9951,7 +9951,7 @@ _021E1720: _021E172C: bl MOD04_021E0F00 mov r1, r5 - bl FUN_02096DA0 + bl DWC_GetGsProfileId mov r5, r0 cmp r5, #0 ble _021E176C @@ -10042,23 +10042,23 @@ _021E1858: cmp sb, r0 bne _021E18CC mov r0, r6 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #2 bne _021E1894 mov r0, r4 - bl FUN_02097484 + bl DWC_GetFriendDataType cmp r0, #3 bne _021E1894 mov r0, r5 mov r1, sb - bl FUN_02096C90 + bl DWC_SetGsProfileId _021E1894: mov r0, r4 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 beq _021E18AC mov r0, r5 - bl FUN_02097414 + bl DWCi_SetBuddyFriendData _021E18AC: mov r0, fp mov r1, r7 @@ -10105,12 +10105,12 @@ _021E1920: bne _021E199C mov r0, #0xc mla r0, r6, r0, r7 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 beq _021E1974 mov r0, #0xc mla r0, r4, r0, r7 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 bne _021E1974 mov r0, r7 @@ -10232,15 +10232,15 @@ _021E1AD8: bne _021E1B24 mul sl, r4, r7 add r0, r6, sl - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 bne _021E1B30 add sl, r6, sl ldr r1, [sp, #0x38] mov r0, sl - bl FUN_02096C90 + bl DWC_SetGsProfileId mov r0, sl - bl FUN_02097414 + bl DWCi_SetBuddyFriendData ldr r0, [r8] strb sb, [r0, #0x1d] b _021E1B30 @@ -10312,7 +10312,7 @@ _021E1C08: ldr r1, [sl] ldrb r2, [r1, #0x1c] mla r1, r2, r8, r6 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, sb bne _021E1C9C bl MOD04_021E0F00 @@ -10322,7 +10322,7 @@ _021E1C08: add r2, sp, #0x20 ldrb r3, [r3, #0x1c] mla r1, r3, r1, r6 - bl FUN_02096C78 + bl DWC_LoginIdToUserName ldr r0, _021E1CC4 ; =0x022106D0 mov r1, #0 ldr r4, [r0] @@ -10585,7 +10585,7 @@ MOD04_021E1F84: ; 0x021E1F84 bl MOD04_021E0F00 mov r1, #0xc mla r1, r5, r1, r4 - bl FUN_02096DA0 + bl DWC_GetGsProfileId cmp r0, #0 beq _021E1FD4 mvn r1, #0 @@ -15142,7 +15142,7 @@ _021E5E50: ldrb r2, [r2, #0x304] mov r0, fp mla r1, r2, r1, r3 - bl FUN_02096DA0 + bl DWC_GetGsProfileId movs sl, r0 beq _021E5DB4 mvn r0, #0 @@ -15159,7 +15159,7 @@ _021E5E50: add r1, fp, r1 ldrb r1, [r1, #0x304] mla r0, r1, r0, r2 - bl FUN_02097000 + bl DWCi_Acc_IsValidFriendData cmp r0, #0 beq _021E5DB4 mov r6, r7 @@ -21924,7 +21924,7 @@ MOD04_021EBC60: ; 0x021EBC60 and r1, r1, #3 orr r1, r2, r1, lsl #4 strb r1, [r0, #0xd0c] - bl FUN_02095FA8 + bl DWCi_BM_GetApInfo ldr r0, _021EBE14 ; =0x02210E4C mov r1, #0x2300 ldr r0, [r0] @@ -53611,7 +53611,7 @@ MOD04_022071C0: ; 0x022071C0 mov r1, #0x14 bl MOD04_022083B4 add r0, sp, #0 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r1, [sp] ldr r2, [sp, #4] mov r0, #0 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s index d10d80bb..56664ef1 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/thumb_04.s @@ -159,7 +159,7 @@ _021D7608: ldr r1, [r0] ldr r0, _021D7658 ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0 bne _021D762C mov r0, #1 @@ -169,7 +169,7 @@ _021D762C: ldr r1, [r0] ldr r0, _021D7658 ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096F18 + bl DWC_CheckValidConsole cmp r0, #0 beq _021D7640 mov r0, #0 @@ -719,14 +719,14 @@ MOD04_021D7A7C: ; 0x021D7A7C ldr r1, [r0] ldr r0, _021D7AFC ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096EB4 + bl DWC_CheckDirtyFlag cmp r0, #0 beq _021D7AB0 ldr r0, _021D7AF8 ; =0x0220FBC0 ldr r1, [r0] ldr r0, _021D7AFC ; =0x00001EF0 ldr r0, [r1, r0] - bl thunk_FUN_02096e4c + bl DWC_ClearDirtyFlag ldr r0, _021D7AF8 ; =0x0220FBC0 ldr r1, [r0] mov r0, #0x1f @@ -1979,7 +1979,7 @@ _021D8400: lsl r1, r1, #8 ldr r0, [r0, r1] add r0, r0, r4 - bl FUN_02097490 + bl DWC_IsBuddyFriendData cmp r0, #0 beq _021D844A mov r0, #0x11 @@ -2192,7 +2192,7 @@ MOD04_021D85B4: ; 0x021D85B4 ldr r1, [r0] ldr r0, _021D8618 ; =0x00001EF0 ldr r0, [r1, r0] - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0 bne _021D85D8 ldr r0, _021D8614 ; =0x0220FBC0 @@ -2200,7 +2200,7 @@ MOD04_021D85B4: ; 0x021D85B4 ldr r0, _021D8618 ; =0x00001EF0 ldr r0, [r1, r0] add r1, sp, #0xc - bl FUN_02096CCC + bl DWC_CreateExchangeToken b _021D85E6 _021D85D8: ldr r0, _021D8614 ; =0x0220FBC0 @@ -2208,7 +2208,7 @@ _021D85D8: ldr r0, _021D8618 ; =0x00001EF0 ldr r0, [r1, r0] add r1, sp, #0 - bl FUN_02096CCC + bl DWC_CreateExchangeToken _021D85E6: mov r4, #0 mov r7, #0x11 @@ -2221,11 +2221,11 @@ _021D85F0: lsl r0, r0, #8 ldr r0, [r1, r0] add r0, r0, r5 - bl FUN_02097484 + bl DWC_GetFriendDataType ldr r0, [r6] ldr r0, [r0, r7] add r0, r0, r5 - bl FUN_02097490 + bl DWC_IsBuddyFriendData add r4, r4, #1 add r5, #0xc cmp r4, #0x20 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s index 6245d91c..b0291130 100644 --- a/arm9/modules/13/asm/module_13_arm2.s +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -5713,7 +5713,7 @@ _0222338C: mov r1, #0x20 bl MOD13_0223B004 str r0, [sp] - bl FUN_02096190 + bl DWC_BM_Init add r0, sp, #0 bl MOD13_0223AF90 add sp, sp, #4 @@ -7885,7 +7885,7 @@ MOD13_02224FEC: ; 0x02224FEC mov r0, fp bl MOD13_0223A4F0 add r0, sp, #0x1c - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr sb, [sp, #0x1c] ldr sl, [sp, #0x20] mov r3, #0 @@ -8250,7 +8250,7 @@ _02225578: b _022255E4 _02225584: add r0, sp, #0 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r0, _022255F4 ; =0x0224308C ldrb r0, [r0] cmp r0, #0 @@ -8485,7 +8485,7 @@ _02225844: bl MOD13_022393D8 mov r5, r0 add r0, sp, #0x30 - bl FUN_02095EC8 + bl DWCi_BM_GetWiFiInfo ldr r1, [sp, #0x30] ldr r0, [sp, #0x34] mov r6, #0 @@ -14113,7 +14113,7 @@ _0222A464: ldmia sp!, {r4, r5, r6, r7, r8, pc} _0222A48C: add r0, sp, #8 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 movne r0, #1 moveq r0, #0 @@ -15568,11 +15568,11 @@ MOD13_0222B87C: ; 0x0222B87C cmp r0, #0 bne _0222B8C8 add r0, r4, #0xc8 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 bne _0222B8C8 add r0, r4, #0xcc - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} @@ -15581,18 +15581,18 @@ _0222B8C8: cmp r0, #0 bne _0222B914 add r0, r4, #0xc0 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} add r0, r4, #0xc4 - bl FUN_02095AE0 + bl DWC_BACKUPlCheckAddress cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} add r0, r4, #0xc0 add r1, r4, #0xf0 - bl FUN_02095B0C + bl DWC_BACKUPlCheckIp cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} @@ -17255,7 +17255,7 @@ _0222D02C: bl MOD13_02234164 mov r4, r0 add r0, r4, #0xf0 - bl FUN_02095BE0 + bl DWCi_BACKUPlConvMaskCidr strb r0, [r4, #0xd0] ldrb r0, [r4, #0xf5] cmp r0, #0 @@ -21999,11 +21999,11 @@ MOD13_02231090: ; 0x02231090 bl MOD04_021EB9D8 cmp r0, #0 ldmeqia sp!, {r4, pc} - bl FUN_02095324 + bl DWCi_BACKUPlGetWifi add r1, r4, #0xf0 mov r2, #0xe bl MI_CpuCopy8 - bl FUN_02095324 + bl DWCi_BACKUPlGetWifi add r1, r4, #0x1f0 mov r2, #0xe bl MI_CpuCopy8 @@ -24971,7 +24971,7 @@ _022337BC: add r1, sp, #4 ldr r0, [r0] str r2, [sp] - bl FUN_02095CDC + bl DWCi_BACKUPlWritePage add r0, sp, #0 bl MOD13_0223AF90 add sp, sp, #0x14 @@ -25000,9 +25000,9 @@ _02233830: cmp r3, #3 blt _02233830 add r0, sp, #0 - bl FUN_020967A4 + bl DWCi_AUTH_GetNewWiFiInfo add r0, sp, #0 - bl FUN_02095330 + bl DWCi_BACKUPlConvWifiInfo mov r6, #0 ldr r4, _022338B4 ; =0x02243150 mov r8, r0 @@ -25257,7 +25257,7 @@ _02233BB4: mov r2, #4 bl MI_CpuCopy8 add r0, r5, #0xf0 - bl FUN_02095BE0 + bl DWCi_BACKUPlConvMaskCidr strb r0, [r4, #0xd0] _02233BE0: ldrb r0, [r5, #0xf6] @@ -25340,7 +25340,7 @@ _02233CE8: ldrb r0, [r4, #0xd0] ldr r1, [r1] add r1, r1, #0x4f0 - bl FUN_02095BB0 + bl DWCi_BACKUPlConvMaskAddr add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 @@ -25734,7 +25734,7 @@ MOD13_0223418C: ; 0x0223418C bl MATHi_CRC16InitTableRev ldr r0, _022341D0 ; =0x02243150 ldr r0, [r0] - bl FUN_02095D68 + bl DWCi_BACKUPlRead add sp, sp, #4 ldmia sp!, {pc} .align 2, 0 @@ -31696,7 +31696,7 @@ MOD13_0223923C: ; 0x0223923C ldr r0, _0223932C ; =0x0000064C ldr r1, [r1] add r0, r1, r0 - bl FUN_02095D68 + bl DWCi_BACKUPlRead bl OS_GetTick bl MOD13_022338FC ldr r1, _02239328 ; =0x0224318C diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 79cee761..3215db95 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -2086,7 +2086,7 @@ _021D85B2: ldr r0, [sp, #4] add r6, r1, #0 bl FUN_02028228 - bl FUN_02096D68 + bl DWC_CreateFriendKey eor r1, r6 eor r0, r7 orr r0, r1 @@ -3492,7 +3492,7 @@ MOD55_021D90D8: ; 0x021D90D8 ldrb r1, [r1, #0x18] sub r1, r1, #1 bl FUN_0202838C - bl FUN_02096E24 + bl DWC_GetFriendKey str r1, [sp, #4] add r4, r0, #0 ldr r0, [sp, #4] @@ -3557,7 +3557,7 @@ MOD55_021D9184: ; 0x021D9184 add r7, r1, #0 bl FUN_020286EC bl FUN_02028228 - bl FUN_02096D68 + bl DWC_CreateFriendKey add r6, r0, #0 add r4, r1, #0 ldr r0, [r5, #4] @@ -5538,7 +5538,7 @@ MOD55_021DA224: ; 0x021DA224 bl FUN_02028228 add r1, r4, #0 add r2, r6, #0 - bl FUN_020973B4 + bl DWC_CheckFriendKey cmp r0, #0 bne _021DA24C mov r0, #0 @@ -5562,7 +5562,7 @@ _021DA262: bl FUN_0202838C add r1, r4, #0 add r2, r6, #0 - bl FUN_02096D2C + bl DWC_CreateFriendKeyToken _021DA276: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 183fe0d3..08de4669 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -1539,7 +1539,7 @@ _02212A9A: bl MOD56_022128A4 ldr r0, [r5] bl FUN_02028228 - bl FUN_02096F80 + bl DWC_CheckHasProfile cmp r0, #0 bne _02212AFA mov r0, #0 @@ -1577,7 +1577,7 @@ _02212A9A: _02212AFA: ldr r0, [r5] bl FUN_02028228 - bl FUN_02096F18 + bl DWC_CheckValidConsole cmp r0, #0 bne _02212B1A add r0, r5, #0 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index bf202f2f..12992a4e 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -18661,7 +18661,7 @@ _022369CC: bl FUN_02023830 add r6, r0, #0 add r0, r4, #0 - bl FUN_02096D68 + bl DWC_CreateFriendKey add r3, r0, #0 add r2, r1, #0 add r0, r6, #0 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 18e1984d..d96f335e 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -2282,7 +2282,7 @@ _0222E7C2: add r4, r0, #0 ldr r0, [r5] ldr r0, [r0, #0x14] - bl FUN_02096D68 + bl DWC_CreateFriendKey add r3, r0, #0 add r2, r1, #0 add r0, r4, #0 |