Skip to content

Instantly share code, notes, and snippets.

@Normmatt
Created February 5, 2017 21:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Normmatt/ec78934f6319faa149002fa9d9697ff0 to your computer and use it in GitHub Desktop.
Save Normmatt/ec78934f6319faa149002fa9d9697ff0 to your computer and use it in GitHub Desktop.
0.11 firm launch code
int FirmLaunch()
{
char v0; // zf@2
signed int v1; // r5@8
unsigned int v2; // r12@12
unsigned int v3; // r0@13
__mcr(15, 0, __mrc(15, 0, 2, 0, 0) & 0xFFFFFFEF, 2, 0, 0);
__mcr(15, 0, __mrc(15, 0, 2, 0, 1) & 0xFFFFFFEF, 2, 0, 1);
__mcr(15, 0, __mrc(15, 0, 3, 0, 0) | 0x10, 3, 0, 0);
__mcr(15, 0, __mrc(15, 0, 5, 0, 2) & 0xFFF0FFFF | 0x30000, 5, 0, 2);
__mcr(15, 0, __mrc(15, 0, 5, 0, 3) & 0xFFF0FFFF | 0x30000, 5, 0, 3);
__mcr(15, 0, 0x18000035u, 6, 4, 0);
do
{
v0 = (v10008004 & 0x100) == 0;
if ( !(v10008004 & 0x100) )
v0 = v1000800C == 0x44846;
}
while ( !v0 );
if ( v21000000 != 'MRIF' )
sub_8092A54();
v1 = 0;
do
{
if ( *(_DWORD *)(48 * v1 + 0x21000048) )
sub_8092A4C(*(_DWORD *)(48 * v1 + 0x21000044), *(_DWORD *)(48 * v1 + 0x21000040) + 0x21000000);
++v1;
}
while ( v1 < 4 );
v2 = 0;
do
{
v3 = 0;
do
{
__mcr(15, 0, 0, 7, 10, 4);
__mcr(15, 0, (v2 << 30) | 32 * v3++, 7, 14, 2);
}
while ( v3 < 0x20 );
++v2;
}
while ( v2 < 4 );
__mcr(15, 0, 0, 7, 10, 4);
__mcr(15, 0, 0x42078u, 1, 0, 0);
__mcr(15, 0, 0, 7, 5, 0);
__mcr(15, 0, 0, 7, 6, 0);
__mcr(15, 0, 0, 7, 10, 4);
v1FFFFFFC = v21000008;
return v2100000C();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment