-
-
Save TuxSH/deb0d42d8cd2d11655b8e85953845b77 to your computer and use it in GitHub Desktop.
System format RE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int __fastcall FSPXI_InitializeCTRFileSystem_internal(int a1, int a2) | |
{ | |
int v2; // r4@1 | |
int v3; // r2@1 | |
int v4; // r1@1 | |
int *v5; // r5@1 | |
char *v6; // r0@1 | |
_DWORD *v7; // r6@1 | |
int (__fastcall *v8)(_DWORD); // r4@3 | |
int v9; // r4@4 | |
int result; // r0@7 | |
_DWORD *v11; // r1@11 | |
int v12; // r0@11 | |
int v13; // r3@11 | |
int v14; // [sp+0h] [bp-48h]@3 | |
int val; // [sp+4h] [bp-44h]@10 | |
int v16; // [sp+10h] [bp-38h]@1 | |
int v17; // [sp+14h] [bp-34h]@1 | |
int v18; // [sp+18h] [bp-30h]@1 | |
int v19; // [sp+1Ch] [bp-2Ch]@3 | |
int v20; // [sp+28h] [bp-20h]@4 | |
int v21; // [sp+2Ch] [bp-1Ch]@1 | |
int v22; // [sp+30h] [bp-18h]@1 | |
v21 = a1; | |
v22 = a2; | |
v2 = *(_DWORD *)a1; | |
v3 = *(_DWORD *)(a1 + 8); | |
v4 = *(_DWORD *)(a1 + 4); | |
v5 = (int *)a1; | |
v6 = (char *)off_802CF2C; | |
v16 = v2; | |
v18 = v3; | |
v17 = v4; | |
v7 = (_DWORD *)(((signed int)off_802CF2C[1] >> 1) + v2); | |
if ( (_DWORD)off_802CF2C[1] << 31 ) | |
v6 = (char *)*off_802CF2C + *v7; | |
v8 = *(int (__fastcall **)(_DWORD))v6; | |
v14 = 0; | |
v19 = v8(v7); | |
if ( v19 ) | |
{ | |
OpenFile(&v20, aPrivate_0); | |
StoreFilePath((int)&v14, *(_WORD **)(v20 + 4)); | |
v9 = sub_805C270(v19); | |
if ( v9 >= 0 ) | |
v9 = 0; | |
CloseFile((_DWORD **)&v20); | |
} | |
else | |
{ | |
v9 = dword_802CF44; | |
} | |
sub_8060D98((int)&v16); | |
result = v9; | |
if ( v9 >= 0 ) | |
{ | |
result = LocalFriendSeedStuff((int)v5, (int)off_802CF3C); | |
if ( result >= 0 ) | |
{ | |
if ( v22 ) | |
{ | |
result = generateRandomBytes(&val, 4u); | |
if ( result < 0 ) | |
return result; | |
v11 = off_802CF40; | |
v12 = val + 1; | |
*((_DWORD *)off_802CF40 + 8) = val + 1; | |
v13 = v11[6]; | |
v11[7] += __CFADD__(v13, v12); | |
v11[6] = v13 + v12; | |
} | |
updateMovableSedCMAC(off_802CF3C); | |
if ( VerifyMovableSed(off_802CF3C) ) | |
{ | |
result = sub_805DE34(v5, (int)off_802CF3C, 1); | |
if ( result >= 0 ) | |
result = 0; | |
} | |
else | |
{ | |
result = dword_802CF48; | |
} | |
} | |
} | |
return result; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RAM:0802CE5C ; =============== S U B R O U T I N E ======================================= | |
RAM:0802CE5C | |
RAM:0802CE5C | |
RAM:0802CE5C FSPXI_InitializeCTRFileSystem_internal ; CODE XREF: sub_802B2BC+74p | |
RAM:0802CE5C ; FSPXI_InitializeCTRFileSystem+12p | |
RAM:0802CE5C | |
RAM:0802CE5C var_48 = -0x48 | |
RAM:0802CE5C val = -0x44 | |
RAM:0802CE5C var_38 = -0x38 | |
RAM:0802CE5C var_34 = -0x34 | |
RAM:0802CE5C var_30 = -0x30 | |
RAM:0802CE5C var_2C = -0x2C | |
RAM:0802CE5C var_20 = -0x20 | |
RAM:0802CE5C var_18 = -0x18 | |
RAM:0802CE5C | |
RAM:0802CE5C PUSH {R0,R1,R4-R7,LR} | |
RAM:0802CE5E LDR R4, [R0] | |
RAM:0802CE60 LDR R2, [R0,#8] | |
RAM:0802CE62 LDR R1, [R0,#4] | |
RAM:0802CE64 SUB SP, SP, #0x2C | |
RAM:0802CE66 MOVS R5, R0 | |
RAM:0802CE68 LDR R0, =off_808EB10 | |
RAM:0802CE6A STR R4, [SP,#0x48+var_38] | |
RAM:0802CE6C STR R2, [SP,#0x48+var_30] | |
RAM:0802CE6E STR R1, [SP,#0x48+var_34] | |
RAM:0802CE70 LDR R6, [R0,#(dword_808EB14 - 0x808EB10)] | |
RAM:0802CE72 MOVS R7, #0 | |
RAM:0802CE74 ASRS R6, R6, #1 | |
RAM:0802CE76 ADDS R6, R6, R4 | |
RAM:0802CE78 LDR R4, [R0,#(dword_808EB14 - 0x808EB10)] | |
RAM:0802CE7A MOVS R3, R7 | |
RAM:0802CE7C LSLS R4, R4, #0x1F | |
RAM:0802CE7E BEQ loc_802CE86 | |
RAM:0802CE80 LDR R0, [R0] | |
RAM:0802CE82 LDR R4, [R6] | |
RAM:0802CE84 ADDS R0, R4, R0 | |
RAM:0802CE86 | |
RAM:0802CE86 loc_802CE86 ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+22j | |
RAM:0802CE86 LDR R4, [R0] | |
RAM:0802CE88 MOVS R0, R6 | |
RAM:0802CE8A STR R7, [SP,#0x48+var_48] | |
RAM:0802CE8C BLX R4 | |
RAM:0802CE8E CMP R0, #0 | |
RAM:0802CE90 STR R0, [SP,#0x48+var_2C] | |
RAM:0802CE92 BEQ loc_802CF22 | |
RAM:0802CE94 ADR R1, aPrivate_0 ; "/private" | |
RAM:0802CE96 ADD R0, SP, #0x48+var_20 | |
RAM:0802CE98 BL OpenFile | |
RAM:0802CE9C LDR R0, [SP,#0x48+var_20] | |
RAM:0802CE9E MOVS R4, #0 | |
RAM:0802CEA0 LDR R1, [R0,#4] | |
RAM:0802CEA2 MOV R0, SP | |
RAM:0802CEA4 BL StoreFilePath | |
RAM:0802CEA8 MOVS R2, R0 | |
RAM:0802CEAA MOVS R3, R4 | |
RAM:0802CEAC LDR R0, [SP,#0x48+var_2C] | |
RAM:0802CEAE MOVS R1, R3 | |
RAM:0802CEB0 BL sub_805C270 | |
RAM:0802CEB4 SUBS R4, R0, #0 | |
RAM:0802CEB6 BLT loc_802CEBA | |
RAM:0802CEB8 MOVS R4, #0 | |
RAM:0802CEBA | |
RAM:0802CEBA loc_802CEBA ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+5Aj | |
RAM:0802CEBA ADD R0, SP, #0x48+var_20 | |
RAM:0802CEBC BL CloseFile | |
RAM:0802CEC0 | |
RAM:0802CEC0 loc_802CEC0 ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+C8j | |
RAM:0802CEC0 ADD R0, SP, #0x48+var_38 | |
RAM:0802CEC2 BL sub_8060D98 | |
RAM:0802CEC6 SUBS R0, R4, #0 | |
RAM:0802CEC8 BLT loc_802CF1E | |
RAM:0802CECA LDR R1, =movableSedData ; data | |
RAM:0802CECC MOVS R0, R5 ; a1 | |
RAM:0802CECE BL InitMovableSedAndCopyLocalFriendSeed ; movable.sed is cleared to 0? | |
RAM:0802CED2 CMP R0, #0 | |
RAM:0802CED4 BLT loc_802CF1E | |
RAM:0802CED6 LDR R0, [SP,#0x48+var_18] | |
RAM:0802CED8 CMP R0, #0 | |
RAM:0802CEDA BEQ loc_802CEFE | |
RAM:0802CEDC MOVS R1, #4 ; size | |
RAM:0802CEDE ADD R0, SP, #0x48+val ; randomBytes | |
RAM:0802CEE0 BL generateRandomBytes | |
RAM:0802CEE4 CMP R0, #0 | |
RAM:0802CEE6 BLT loc_802CF1E | |
RAM:0802CEE8 LDR R0, [SP,#0x48+val] | |
RAM:0802CEEA LDR R1, =(movableSedData.signature+0xF8) | |
RAM:0802CEEC ADDS R0, R0, #1 | |
RAM:0802CEEE STR R0, [R1,#(movableSedData.randomword - 0x80DD920)] | |
RAM:0802CEF0 LDR R3, [R1,#(movableSedData.keyYHigh - 0x80DD920)] | |
RAM:0802CEF2 LDR R2, [R1,#(movableSedData.keyYHigh+4 - 0x80DD920)] | |
RAM:0802CEF4 MOVS R4, #0 | |
RAM:0802CEF6 ADDS R0, R3, R0 ; (u64) highKeyY += <random u32> + 1 | |
RAM:0802CEF8 ADCS R2, R4 | |
RAM:0802CEFA STR R2, [R1,#(movableSedData.keyYHigh+4 - 0x80DD920)] | |
RAM:0802CEFC STR R0, [R1,#(movableSedData.keyYHigh - 0x80DD920)] | |
RAM:0802CEFE | |
RAM:0802CEFE loc_802CEFE ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+7Ej | |
RAM:0802CEFE LDR R0, =movableSedData ; data | |
RAM:0802CF00 BL updateMovableSedCMAC | |
RAM:0802CF04 LDR R0, =movableSedData ; data | |
RAM:0802CF06 BL VerifyMovableSed | |
RAM:0802CF0A CMP R0, #0 | |
RAM:0802CF0C BEQ loc_802CF26 | |
RAM:0802CF0E LDR R1, =movableSedData | |
RAM:0802CF10 MOVS R2, #1 | |
RAM:0802CF12 MOVS R0, R5 | |
RAM:0802CF14 BL sub_805DE34 | |
RAM:0802CF18 CMP R0, #0 | |
RAM:0802CF1A BLT loc_802CF1E | |
RAM:0802CF1C MOVS R0, #0 | |
RAM:0802CF1E | |
RAM:0802CF1E loc_802CF1E ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+6Cj | |
RAM:0802CF1E ; FSPXI_InitializeCTRFileSystem_internal+78j ... | |
RAM:0802CF1E ADD SP, SP, #0x34 | |
RAM:0802CF20 POP {R4-R7,PC} | |
RAM:0802CF22 ; --------------------------------------------------------------------------- | |
RAM:0802CF22 | |
RAM:0802CF22 loc_802CF22 ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+36j | |
RAM:0802CF22 LDR R4, =0xC8A044DC | |
RAM:0802CF24 B loc_802CEC0 | |
RAM:0802CF26 ; --------------------------------------------------------------------------- | |
RAM:0802CF26 | |
RAM:0802CF26 loc_802CF26 ; CODE XREF: FSPXI_InitializeCTRFileSystem_internal+B0j | |
RAM:0802CF26 LDR R0, =0xD9004586 | |
RAM:0802CF28 B loc_802CF1E | |
RAM:0802CF28 ; End of function FSPXI_InitializeCTRFileSystem_internal | |
RAM:0802CF28 | |
RAM:0802CF28 ; --------------------------------------------------------------------------- | |
RAM:0802CF2A DCB 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment