Skip to content

Instantly share code, notes, and snippets.

@sajattack
Last active February 16, 2021 08:55
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 sajattack/d7d68c9e1ea5176cc9b46944e717fa67 to your computer and use it in GitHub Desktop.
Save sajattack/d7d68c9e1ea5176cc9b46944e717fa67 to your computer and use it in GitHub Desktop.
Ghidra export of my PSP leda RE project
bool is_elf(int *param_1)
{
if (*param_1 != 0x464c457f) {
return false;
}
return *(short *)(param_1 + 4) == 2;
}
int more_elf_junk(int *param_1)
{
undefined uVar1;
int iVar2;
uint uVar3;
if (*param_1 == 0x464c457f) {
if (*(ushort *)(param_1 + 0xc) != 0) {
uVar3 = 0;
iVar2 = (int)param_1 + param_1[8];
if (*(ushort *)((int)param_1 + 0x32) == 0) goto LAB_000000bc;
uVar1 = *(undefined *)((int)param_1 + 0x2f);
while( true ) {
while( true ) {
uVar3 = uVar3 + 1;
iVar2 = iVar2 + (uint)CONCAT11(uVar1,*(undefined *)((int)param_1 + 0x2e));
if (uVar3 == *(ushort *)(param_1 + 0xc)) {
return 0;
}
if (*(ushort *)((int)param_1 + 0x32) == uVar3) break;
uVar1 = *(undefined *)((int)param_1 + 0x2f);
}
LAB_000000bc:
if (*(int *)(iVar2 + 4) == 3) break;
uVar1 = *(undefined *)((int)param_1 + 0x2f);
}
return *(int *)(iVar2 + 0x10) + (int)param_1;
}
}
return 0;
}
bool find_return(int *param_1)
{
bool bVar1;
bVar1 = true;
if (*param_1 == 0x3e00008) {
bVar1 = false;
if (param_1[1] != 0) {
return param_1[1] != 0x3cc;
}
}
return bVar1;
}
undefined4 module_stop(void)
{
return 0;
}
undefined4 module_start(void)
{
int iVar1;
iVar1 = sceKernelInitApitype();
if (iVar1 != 0x141) {
return 1;
}
Kprintf("LEDA - Legacy Software Loader, version 0.1, by Dark_AleX\n");
// 0xce8 is the address of remap_multiple_nids
sctrlHENRegisterHomebrewLoader(remap_multiple_nids);
return 0;
}
void kubridge_init(void)
{
kuKernelLoadModule((char *)0x0,0,(SceKernelLMOption *)0x0);
kuKernelLoadModuleWithApitype2(0,(char *)0x0,0,(SceKernelLMOption *)0x0);
kuKernelInitApitype();
kuKernelInitFileName((char *)0x0);
kuKernelBootFrom();
kuKernelInitKeyConfig();
kuKernelGetUserLevel();
kuKernelSetDdrMemoryProtection((void *)0x0,0,0);
kuKernelGetModel();
return;
}
SceOff seek_stuff(SceUID fd,int whence,SceOff param_3,SceOff offset)
{
ulonglong uVar1;
ulonglong curpos;
curpos = sceIoLseek(fd,offset,whence);
uVar1 = curpos >> 0x20;
curpos._0_4_ = (undefined4)curpos;
if (((DAT_00003dcc != 0) && (param_3 == 0)) && ((int)((ulonglong)offset >> 0x20) == 2)) {
curpos = (ulonglong)DAT_00003dcc << 0x20;
}
DAT_00003dd0 = (int)uVar1;
DAT_00003dd4 = (undefined4)curpos;
return (SceOff)curpos;
}
undefined * read_scemoduleinfo_imports(int param_1,uint param_2,char *param_3)
{
ushort uVar1;
int iVar2;
uint uVar3;
uVar1 = *(ushort *)(param_1 + 0x30);
if (uVar1 != 0) {
uVar3 = 0;
do {
uVar3 = uVar3 + 1;
iVar2 = strcmp(param_3 + *(int *)param_2,".rodata.sceModuleInfo");
if (iVar2 == 0) {
if (*(short *)(param_1 + *(int *)(param_2 + 0x10)) == 0) {
DAT_00003dc8 = 1;
}
else {
*(short *)(param_1 + *(int *)(param_2 + 0x10)) = 0;
}
return (undefined *)(param_1 + *(int *)(param_2 + 0x10) + 4);
}
param_2 = param_2 + *(ushort *)(param_1 + 0x2e);
} while (uVar3 != uVar1);
}
return &DAT_000035d8;
}
undefined4
create_threads(undefined4 param_1,void *param_2,undefined4 param_3,undefined4 param_4,int param_5,
undefined4 param_6)
{
uint uVar1;
SceUID SVar2;
undefined4 uVar3;
uVar1 = set_k1(0);
SVar2 = sceKernelGetModuleIdByAddress(param_2);
if ((SVar2 == DAT_00003de4) && (-1 < param_5)) {
uVar3 = sceKernelCreateThread
(param_1,(uint)param_2 | 0x80000000,param_3,param_4,param_5,param_6);
set_k1(uVar1);
return uVar3;
}
set_k1(uVar1);
uVar3 = sceKernelCreateThread(param_1,param_2,param_3,param_4,param_5,param_6);
return uVar3;
}
char * get_next_modname(char *param_1)
{
SceModule *pSVar1;
int iVar2;
char **ppcVar3;
int iVar4;
void *pvVar5;
uint uVar6;
pSVar1 = sceKernelFindModuleByName("sceSystemMemoryManager");
if (pSVar1 != (SceModule *)0x0) {
uVar6 = pSVar1->ent_size;
while( true ) {
pvVar5 = pSVar1->ent_top;
if ((int)uVar6 < 1) {
pSVar1 = (SceModule *)pSVar1->next;
}
else {
iVar4 = 0;
do {
ppcVar3 = (char **)((int)pvVar5 + iVar4);
iVar2 = strcmp(*ppcVar3,param_1);
if (iVar2 == 0) {
return pSVar1->modname;
}
iVar4 = iVar4 + (uint)*(byte *)(ppcVar3 + 2) * 4;
} while (iVar4 < (int)uVar6);
pSVar1 = (SceModule *)pSVar1->next;
}
if (pSVar1 == (SceModule *)0x0) break;
uVar6 = pSVar1->ent_size;
}
}
return (char *)0x0;
}
undefined4 find_function(char *param_1,char *param_2,uint param_3)
{
u32 *puVar1;
u32 uVar2;
SceModule *pSVar3;
uint uVar4;
int iVar5;
u32 *puVar6;
int iVar7;
undefined4 *puVar8;
char **ppcVar9;
int iVar10;
uint uVar11;
void *pvVar12;
uVar2 = sctrlHENFindFunction(param_1,param_2,param_3);
if (uVar2 != 0) {
pSVar3 = sceKernelFindModuleByName(param_1);
uVar11 = pSVar3->ent_size;
pvVar12 = pSVar3->ent_top;
if (0 < (int)uVar11) {
iVar10 = 0;
do {
ppcVar9 = (char **)((int)pvVar12 + iVar10);
if (param_2 == (char *)0x0) {
LAB_00000634:
puVar8 = (undefined4 *)ppcVar9[3];
if ((*(ushort *)((int)ppcVar9 + 10) != 0) &&
(iVar5 = (uint)*(ushort *)((int)ppcVar9 + 10) + (uint)*(byte *)((int)ppcVar9 + 9),
iVar5 != 0)) {
puVar6 = puVar8 + iVar5;
if (uVar2 == *puVar6) {
return *puVar8;
}
iVar7 = 0;
while (iVar7 = iVar7 + 1, iVar5 != iVar7) {
puVar1 = puVar6 + 1;
puVar6 = puVar6 + 1;
if (uVar2 == *puVar1) {
return puVar8[iVar7];
}
}
}
uVar4 = (uint)*(byte *)(ppcVar9 + 2);
}
else {
if (*ppcVar9 == (char *)0x0) {
uVar4 = (uint)*(byte *)(ppcVar9 + 2);
}
else {
iVar5 = strcmp(*ppcVar9,param_2);
if (iVar5 == 0) goto LAB_00000634;
uVar4 = (uint)*(byte *)(ppcVar9 + 2);
}
}
iVar10 = iVar10 + uVar4 * 4;
} while (iVar10 < (int)uVar11);
}
}
return 0;
}
uint ** FUN_000006dc(char *param_1)
{
SceModule *pSVar1;
uint **ppuVar2;
uint uVar3;
SceModule *pSVar4;
SceUID blockid;
uint *puVar5;
uint *puVar6;
uint *puVar7;
uint **ppuVar8;
uVar3 = set_k1(0);
pSVar4 = sceKernelFindModuleByName(param_1);
if (pSVar4 == (SceModule *)0x0) {
set_k1(uVar3);
return (uint **)0x0;
}
if (DAT_00003dd8 == (uint **)0x0) {
blockid = sceKernelAllocPartitionMemory(2,(int)"FindModuleByNameUser",1,(void *)0xa0);
if (-1 < blockid) {
DAT_00003dd8 = (uint **)sceKernelGetBlockHeadAddr(blockid);
}
if (DAT_00003dd8 == (uint **)0x0) goto LAB_00000758;
}
pSVar1 = pSVar4 + 1;
ppuVar8 = DAT_00003dd8;
do {
ppuVar2 = &pSVar4->next;
puVar5 = *(uint **)&pSVar4->attribute;
puVar6 = *(uint **)pSVar4->modname;
puVar7 = *(uint **)(pSVar4->modname + 4);
pSVar4 = (SceModule *)(pSVar4->modname + 8);
*ppuVar8 = *ppuVar2;
ppuVar8[1] = puVar5;
ppuVar8[2] = puVar6;
ppuVar8[3] = puVar7;
ppuVar8 = ppuVar8 + 4;
} while (pSVar4 != (SceModule *)&pSVar1->attribute);
LAB_00000758:
set_k1(uVar3);
return DAT_00003dd8;
}
SceUID load_modules(char *param_1,SceKernelLMOption *param_2)
{
uint uVar1;
int iVar2;
SceUID SVar3;
uVar1 = set_k1(0);
iVar2 = strcmp(param_1,"flash0:/kd/semawm.prx");
if (iVar2 == 0) {
SVar3 = sceKernelLoadModule((int)"flash0:/kd/chkreg.prx",(SceKernelLMOption *)0x0);
if (-1 < SVar3) {
sceKernelStartModule(SVar3,0,(void *)0x0,(int *)0x0,(SceKernelSMOption *)0x0);
}
SVar3 = sceKernelLoadModule((int)"flash0:/kd/npdrm.prx",(SceKernelLMOption *)0x0);
if (-1 < SVar3) {
sceKernelStartModule(SVar3,0,(void *)0x0,(int *)0x0,(SceKernelSMOption *)0x0);
}
}
else {
iVar2 = strcmp(param_1,"flash0:/kd/audiocodec.prx");
if (iVar2 == 0) {
param_1 = "flash0:/kd/audiocodec_260.prx";
}
else {
iVar2 = strcmp(param_1,"flash0:/kd/videocodec.prx");
if (iVar2 == 0) {
param_1 = "flash0:/kd/videocodec_260.prx";
}
}
}
SVar3 = sceKernelLoadModule((int)param_1,param_2);
set_k1(uVar1);
return SVar3;
}
int read_controller(SceCtrlData *param_1,int param_2)
{
uint uVar1;
int iVar2;
uVar1 = set_k1(0);
iVar2 = sceCtrlPeekBufferPositive(param_1,param_2);
set_k1(uVar1);
return iVar2;
}
undefined4 invalidate_icache(void)
{
uint uVar1;
uVar1 = set_k1(0);
sceKernelIcacheInvalidateAll();
set_k1(uVar1);
return 0;
}
undefined4 set_brightness(int param_1,int param_2)
{
uint uVar1;
uVar1 = set_k1(0);
sceDisplaySetBrightness(param_1,param_2);
set_k1(uVar1);
return 0;
}
int set_led(int param_1,int param_2)
{
uint uVar1;
int iVar2;
uVar1 = set_k1(0);
iVar2 = sceSysconCtrlLED(param_1,param_2);
set_k1(uVar1);
return iVar2;
}
bool does_it_exist(char *szMod,char *szLib,u32 nid)
{
u32 uVar1;
int iVar2;
uVar1 = sctrlHENFindFunction(szMod,szLib,nid);
if (uVar1 == 0) {
return false;
}
iVar2 = sceKernelQuerySystemCall(uVar1);
return iVar2 != 0;
}
char * get_nid_addr(char *param_1,char *param_2,int param_3)
{
byte bVar1;
SceModule *pSVar2;
int iVar3;
int iVar4;
code *pcVar5;
char *pcVar6;
char **ppcVar7;
uint uVar8;
uint uVar9;
int iVar10;
char **ppcVar11;
pSVar2 = sceKernelFindModuleByName(param_1);
if ((pSVar2 != (SceModule *)0x0) && (iVar3 = sceKernelFindModuleByUID(pSVar2->modid), iVar3 != 0))
{
iVar10 = *(int *)(iVar3 + 0x4c);
ppcVar11 = *(char ***)(iVar3 + 0x48);
if (0 < iVar10) {
iVar3 = 0;
ppcVar7 = ppcVar11;
do {
uVar8 = (uint)*(ushort *)((int)ppcVar7 + 10);
pcVar6 = *ppcVar7;
if (uVar8 == 0) {
LAB_00000bd0:
bVar1 = *(byte *)(ppcVar7 + 2);
}
else {
if (uVar8 != 0) {
uVar9 = 0;
do {
if (pcVar6 != (char *)0x0) {
iVar4 = strcmp(pcVar6,param_2);
if ((iVar4 == 0) && (*(int *)(ppcVar7[3] + uVar9 * 4) == param_3)) {
pcVar5 = (code *)sctrlHENFindFunction
("sceSystemMemoryManager","SysMemUserForUser",
0x3fc9ae6a);
iVar3 = (*pcVar5)(0,0);
if (0x30000 < iVar3 + 0xfe000000U >> 8) {
pcVar5 = (code *)sctrlHENFindFunction
("SystemControl","SystemCtrlForKernel",0x764a319b);
(*pcVar5)(0,0xffffffff);
}
return ppcVar7[4] + uVar9 * 8;
}
}
uVar9 = uVar9 + 1;
} while (uVar8 != uVar9);
goto LAB_00000bd0;
}
bVar1 = *(byte *)(ppcVar7 + 2);
}
iVar3 = iVar3 + (uint)bVar1 * 4;
ppcVar7 = (char **)((int)ppcVar11 + iVar3);
} while (iVar3 < iVar10);
}
}
return (char *)0x0;
}
void writeback_dcache_clear_icache(void)
{
sceKernelDcacheWritebackAll();
sceKernelIcacheClearAll();
return;
}
uint remap_multiple_nids(int param_1,char *param_2,int param_3,SceKernelLMOption *param_4)
{
uint iVar1;
int thid;
undefined4 *puVar1;
undefined4 *puVar2;
undefined4 uVar3;
iVar1 = sceKernelLoadModuleForLoadExecVSHMs2(param_1,param_2,param_3,param_4);
if (iVar1 == 0x80020148) {
// sceIoRead
puVar1 = (undefined4 *)get_nid_addr("sceModuleManager","IoFileMgrForKernel",0x6a638d83);
// sceIoLseek
puVar2 = (undefined4 *)get_nid_addr("sceModuleManager","IoFileMgrForKernel",0x27eb27b8);
*puVar1 = 0x800047a;
*puVar2 = 0x800007f;
writeback_dcache_clear_icache();
iVar1 = sceKernelLoadModuleForLoadExecVSHMs2(param_1,param_2,param_3,param_4);
*puVar1 = 0x8000bba;
*puVar2 = 0x8000bbc;
writeback_dcache_clear_icache();
if ((-1 < (int)iVar1) && (DAT_00003dc8 == 0)) {
// sceKernelLinkLibraryEntriesWithModule
uVar3 = find_function("sceLoaderCore","LoadCoreForKernel",0xc0913394);
puVar1 = (undefined4 *)get_nid_addr("sceModuleManager","LoadCoreForKernel",uVar3);
*puVar1 = 0x8000ab3;
// sceKernelLinkLibraryEntries
uVar3 = find_function("sceLoaderCore","LoadCoreForKernel",0xe760dba);
puVar1 = (undefined4 *)get_nid_addr("sceModuleManager","LoadCoreForKernel",uVar3);
*puVar1 = 0x8000aa2;
// sceKernelCreateThread
puVar1 = (undefined4 *)get_nid_addr("SystemControl","ThreadManForKernel",0x446d8de6);
*puVar1 = 0x80003d0;
writeback_dcache_clear_icache();
}
}
else {
thid = sceKernelCreateThread("Destruction of Leda",0x280,0x10,0x1000,0,0);
if (-1 < thid) {
sceKernelStartThread(thid,0,(void *)0x0);
}
}
return iVar1;
}
void remap_more_nids(char *param_1,uint param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,int param_6)
{
int iVar1;
undefined4 *puVar2;
void *pvVar3;
iVar1 = strcmp(param_1,"SceModmgrStart");
if (iVar1 == 0) {
if (DAT_00003d70 == 0) {
set_k1(0);
*(undefined4 *)(param_6 + 4) = 1;
param_2 = param_2 | 0x80000000;
// sceKernelCreateThread
puVar2 = (undefined4 *)get_nid_addr("SystemControl","ThreadManForKernel",0x446d8de6);
*puVar2 = 0x8000bc8;
param_5 = 0;
pvVar3 = (void *)sctrlHENFindFunction("sceThreadManager","ThreadManForUser",0x446d8de6);
sctrlHENPatchSyscall(pvVar3,create_threads);
}
else {
// sceKernelStartModule
pvVar3 = (void *)sctrlHENFindFunction("sceModuleManager","ModuleMgrForUser",0x50f0c1ec);
sctrlHENPatchSyscall(pvVar3,&LAB_00002068);
iVar1 = strcmp(&DAT_00003df4,"WlanScanner");
if (iVar1 == 0) {
// sceCtrlReadBufferPositive
pvVar3 = (void *)sctrlHENFindFunction("sceController_Service","sceCtrl",0x1f803938);
sctrlHENPatchSyscall(pvVar3,&LAB_0000090c);
// sceCtrlPeekBufferPositive
pvVar3 = (void *)sctrlHENFindFunction("sceController_Service","sceCtrl",0x3a622550);
sctrlHENPatchSyscall(pvVar3,read_controller);
remap_more_nids2();
return;
}
puVar2 = (undefined4 *)get_nid_addr("sceIOFileManager","ThreadManForKernel",0xf6427665);
*puVar2 = 0x800003a;
puVar2 = (undefined4 *)get_nid_addr("sceLFatFs_Driver","ThreadManForKernel",0xf6427665);
*puVar2 = 0x800003a;
iVar1 = strcmp(&DAT_00003df4,"\"WEBNAB\"");
if (iVar1 == 0) {
pvVar3 = (void *)sctrlHENFindFunction
("sceSystemMemoryManager","SysMemUserForUser",0x3fc9ae6a);
sctrlHENPatchSyscall(pvVar3,(void *)0xdc);
}
}
pvVar3 = (void *)sctrlHENFindFunction("sceModuleManager","ModuleMgrForUser",0x977de386);
sctrlHENPatchSyscall(pvVar3,load_modules);
writeback_dcache_clear_icache();
}
sceKernelCreateThread(param_1,param_2,param_3,param_4,param_5,param_6);
return;
}
void remap_more_nids2(void)
{
void *pvVar1;
uint *puVar2;
int iVar3;
int unaff_s0;
uint uVar4;
// sceKernelGetUserLevel
uVar4 = (unaff_s0 + 0xe8U & 0xffffffc) >> 2 | 0x8000000;
puVar2 = (uint *)get_nid_addr("sceIOFileManager","ThreadManForKernel",0xf6427665);
*puVar2 = uVar4;
puVar2 = (uint *)get_nid_addr("sceLFatFs_Driver","ThreadManForKernel",0xf6427665);
*puVar2 = uVar4;
iVar3 = strcmp(&DAT_00003df4,"\"WEBNAB\"");
if (iVar3 == 0) {
// sceKernelDevkitVersion
pvVar1 = (void *)sctrlHENFindFunction("sceSystemMemoryManager","SysMemUserForUser",0x3fc9ae6a);
sctrlHENPatchSyscall(pvVar1,(void *)0xdc);
}
// sceKernelLoadModule
pvVar1 = (void *)sctrlHENFindFunction("sceModuleManager","ModuleMgrForUser",0x977de386);
sctrlHENPatchSyscall(pvVar1,load_modules);
writeback_dcache_clear_icache();
sceKernelCreateThread();
return;
}
// WARNING: Instruction at (ram,0x000016b0) overlaps instruction at (ram,0x000016ac)
//
void FUN_0000127c(void)
{
undefined uVar1;
int iVar2;
char *pcVar3;
undefined4 uVar4;
int iVar5;
int *piVar6;
int unaff_s1;
uint uVar7;
uint *puVar8;
int unaff_s2;
uint uVar9;
uint uVar10;
uint uVar11;
int *unaff_s3;
uint uStackX4;
if (((*(int *)((int)&DAT_00003dc0 + unaff_s1) == 0) && (*unaff_s3 == 0x464c457f)) &&
(unaff_s2 != 0x200)) {
*(undefined4 *)((int)&DAT_00003dc0 + unaff_s1) = 1;
iVar2 = is_elf();
if ((iVar2 != 0) && (pcVar3 = (char *)more_elf_junk(), pcVar3 != (char *)0x0)) {
piVar6 = (int *)((int)unaff_s3 + unaff_s3[8]);
uVar4 = read_scemoduleinfo_imports(unaff_s3,(uint)piVar6,pcVar3);
strcpy(&DAT_00003df4,uVar4);
if (DAT_00003dc8 == 0) {
sceCtrlReadBufferPositive();
if ((uStackX4 & 0x200) == 0) {
iVar2 = strstr(&DAT_00003df4,"Resurssiklunssi");
if (iVar2 != 0) {
DAT_00003d70 = 0;
}
}
else {
DAT_00003d70 = 0;
}
uVar9 = (uint)*(byte *)((int)unaff_s3 + 0x31);
uVar7 = (uint)*(byte *)(unaff_s3 + 0xc);
if (*(short *)(unaff_s3 + 0xc) != 0) {
iVar2 = 0;
do {
iVar5 = strcmp(pcVar3 + *piVar6,".text");
if (iVar5 == 0) {
iVar5 = piVar6[4];
if ((uint)piVar6[5] >> 2 != 0) {
uVar7 = 0;
do {
if (DAT_00003d70 == 0) {
puVar8 = (uint *)((int)unaff_s3 + iVar5 + uVar7 * 4);
uVar9 = *puVar8;
if (uVar9 == 0x160f809) {
*puVar8 = 0xc000afd;
}
else {
if (uVar9 < 0x160f80a) {
if (uVar9 == 0xc00008) {
*puVar8 = 0x8000b49;
}
else {
if (uVar9 < 0xc00009) {
if (uVar9 == 0x60f809) {
*puVar8 = 0xc000add;
}
else {
if (uVar9 < 0x60f80a) {
if (uVar9 == 0x400008) {
*puVar8 = 0x8000b39;
}
else {
if (uVar9 < 0x400009) {
if (uVar9 == 0x20f809) {
*puVar8 = 0xc000ad5;
}
}
else {
if (uVar9 == 0x40f809) {
*puVar8 = 0xc000ad9;
}
else {
if (uVar9 == 0x600008) {
*puVar8 = 0x8000b3d;
}
}
}
}
}
else {
if (uVar9 == 0x80f809) {
*puVar8 = 0xc000ae1;
}
else {
if (uVar9 < 0x80f80a) {
if (uVar9 == 0x800008) {
*puVar8 = 0x8000b41;
}
}
else {
if (uVar9 == 0xa00008) {
*puVar8 = 0x8000b45;
}
else {
if (uVar9 == 0xa0f809) {
*puVar8 = 0xc000ae5;
}
}
}
}
}
}
}
else {
if (uVar9 == 0x100f809) {
*puVar8 = 0xc000af1;
}
else {
if (uVar9 < 0x100f80a) {
if (uVar9 == 0xe00008) {
*puVar8 = 0x8000b4d;
}
else {
if (uVar9 < 0xe00009) {
if (uVar9 == 0xc0f809) {
*puVar8 = 0xc000ae9;
}
}
else {
if (uVar9 == 0xe0f809) {
*puVar8 = 0xc000aed;
}
else {
if (uVar9 == 0x1000008) {
*puVar8 = 0x8000b51;
}
}
}
}
}
else {
if (uVar9 == 0x1400008) {
*puVar8 = 0x8000b59;
}
else {
if (uVar9 < 0x1400009) {
if (uVar9 == 0x1200008) {
*puVar8 = 0x8000b55;
}
else {
if (uVar9 == 0x120f809) {
*puVar8 = 0xc000af5;
}
}
}
else {
if (uVar9 == 0x140f809) {
*puVar8 = 0xc000af9;
}
else {
if (uVar9 == 0x1600008) {
*puVar8 = 0x8000b5d;
}
}
}
}
}
}
}
}
}
else {
if (uVar9 == 0x220f809) {
*puVar8 = 0xc000b1d;
}
else {
if (uVar9 < 0x220f80a) {
if (uVar9 == 0x1c00008) {
*puVar8 = 0x8000b69;
}
else {
if (uVar9 < 0x1c00009) {
if (uVar9 == 0x180f809) {
*puVar8 = 0xc000b01;
}
else {
if (uVar9 < 0x180f80a) {
if (uVar9 == 0x1800008) {
*puVar8 = 0x8000b61;
}
}
else {
if (uVar9 == 0x1a00008) {
*puVar8 = 0x8000b65;
}
else {
if (uVar9 == 0x1a0f809) {
*puVar8 = 0xc000b05;
}
}
}
}
}
else {
if (uVar9 == 0x1e00008) {
*puVar8 = 0x8000b6d;
}
else {
if (uVar9 < 0x1e00009) {
if (uVar9 == 0x1c0f809) {
*puVar8 = 0xc000b09;
}
}
else {
if (uVar9 == 0x1e0f809) {
*puVar8 = 0xc000b0d;
}
else {
if (uVar9 == 0x200f809) {
*puVar8 = 0xc000b19;
}
}
}
}
}
}
}
else {
if (uVar9 == 0x2c0f809) {
*puVar8 = 0xc000b31;
}
else {
if (uVar9 < 0x2c0f80a) {
if (uVar9 == 0x260f809) {
*puVar8 = 0xc000b25;
}
else {
if (uVar9 < 0x260f80a) {
if (uVar9 == 0x240f809) {
*puVar8 = 0xc000b21;
}
}
else {
if (uVar9 == 0x280f809) {
*puVar8 = 0xc000b29;
}
else {
if (uVar9 == 0x2a0f809) {
*puVar8 = 0xc000b2d;
}
}
}
}
}
else {
if (uVar9 == 0x300f809) {
*puVar8 = 0xc000b11;
}
else {
if (uVar9 < 0x300f80a) {
if (uVar9 == 0x2e0f809) {
*puVar8 = 0xc000b35;
}
else {
if (uVar9 == 0x3000008) {
*puVar8 = 0x8000b71;
}
}
}
else {
if (uVar9 == 0x3200008) {
*puVar8 = 0x8000b75;
}
else {
if (uVar9 == 0x320f809) {
*puVar8 = 0xc000b15;
}
}
}
}
}
}
}
}
}
}
}
else {
puVar8 = (uint *)((int)unaff_s3 + iVar5 + uVar7 * 4);
uVar9 = *puVar8;
if ((uVar9 >> 0x1a == 0xf) && ((uVar9 & 0xffff) == 0x8000)) {
uVar11 = puVar8[1];
if ((uVar11 >> 0x1a == 0) &&
(((((uVar11 & 0x3f) == 0x25 &&
((uVar9 << 0xb) >> 0x1b == (uVar11 << 0xb) >> 0x1b)) &&
(uVar10 = puVar8[2], uVar10 >> 0x1a == 0)) &&
(((uVar10 & 0x3f) == 8 &&
((uVar11 << 0x10) >> 0x1b == (uVar10 << 6) >> 0x1b)))))) {
uVar11 = puVar8[-1] >> 0x1a;
if ((uVar11 == 9) || (uVar11 == 0xd)) {
uVar10 = puVar8[-1] & 0xffff;
uVar11 = uVar7 * 4 + piVar6[3] + 0x10 & 0xffff;
if ((uVar10 == uVar11) || ((uVar10 == uVar11 + 4 && (puVar8[4] == 0)))) {
*puVar8 = uVar9 & 0xffff0000;
}
}
}
}
else {
if ((uVar9 >> 0x1a == 0xf) && ((uVar9 & 0xffff) == 0x3ff)) {
uVar11 = puVar8[1];
if (((((uVar11 >> 0x1a == 0xd) &&
((((uVar11 & 0xffff) == 0xffff &&
(uVar9 = (uVar9 << 0xb) >> 0x1b, uVar9 == (uVar11 << 0xb) >> 0x1b))
&& (uVar9 == (uVar11 << 6) >> 0x1b)))) &&
(((puVar8[3] >> 0x1a == 0xf && ((puVar8[3] & 0xffff) == 0xffe0)) &&
(puVar8[4] >> 0x1a == 0xf)))) &&
((((puVar8[4] & 0xffff) == 0x8000 && (puVar8[8] >> 0x1a == 0xf)) &&
(((puVar8[8] & 0xffff) == 0x4000 &&
(((puVar8[9] >> 0x1a == 0xf &&
((char *)(puVar8[9] & 0xffff) == "pdrm.prx")) &&
(puVar8[10] >> 0x1a == 0xd)))))))) &&
((puVar8[10] & 0xffff) == 0xb000)) {
puVar8[-4] = 0x3e00008;
puVar8[-3] = 0x1021;
}
}
else {
if ((uVar9 >> 0x1a == 0xd) && ((uVar9 & 0xffff) == 0xdc02)) {
if ((((puVar8[-2] >> 0x1a == 0xf) &&
(((puVar8[-2] & 0xffff) == 0x1b && (puVar8[-3] >> 0x1a == 0xf)))) &&
((puVar8[-3] & 0xffff) == 0x8000)) &&
((puVar8[-7] >> 0x1a == 0xf && ((puVar8[-7] & 0xffff) == 0x3ff)))) {
puVar8[-0xb] = 0x3e00008;
puVar8[-10] = 0x1021;
}
}
else {
if ((uVar9 >> 0x1a == 0xf) && ((uVar9 & 0xffff) == 0xbe50)) {
if (puVar8[-5] >> 0x1a == 0xf) {
if ((puVar8[-5] & 0xffff) == 0x5b8) {
if ((puVar8[-4] >> 0x1a == 0xd) && ((puVar8[-4] & 0xffff) == 0xd800)
) {
puVar8[-5] = 0x3e00008;
puVar8[-4] = 0x1021;
}
goto LAB_00001644;
}
uVar9 = puVar8[1];
}
else {
uVar9 = puVar8[1];
}
if ((((uVar9 >> 0x1a == 0xd) && ((uVar9 & 0xffff) == 0x18)) &&
(puVar8[3] >> 0x1a == 0xc)) &&
((uVar9 = puVar8[3] & 0xffff, uVar9 == 0x20 || (uVar9 == 0x10)))) {
*puVar8 = 0x3e00008;
puVar8[1] = 0x1021;
}
}
}
}
}
}
LAB_00001644:
uVar7 = uVar7 + 1;
} while (uVar7 < (uint)piVar6[5] >> 2);
uVar7 = (uint)*(byte *)(unaff_s3 + 0xc);
uVar9 = (uint)*(byte *)((int)unaff_s3 + 0x31);
}
uVar1 = *(undefined *)((int)unaff_s3 + 0x2f);
}
else {
uVar1 = *(undefined *)((int)unaff_s3 + 0x2f);
}
iVar2 = iVar2 + 1;
if ((int)(uVar9 << 8 | uVar7) <= iVar2) break;
piVar6 = (int *)((int)piVar6 +
(uint)CONCAT11(uVar1,*(undefined *)((int)unaff_s3 + 0x2e)));
} while( true );
}
writeback_dcache_clear_icache();
}
}
}
return;
}
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
void FUN_000012d0(undefined4 param_1,int param_2)
{
undefined uVar1;
undefined4 *puVar2;
int iVar3;
char *pcVar4;
int iVar5;
undefined4 uVar6;
undefined4 uVar7;
undefined4 uVar8;
undefined4 *puVar9;
undefined4 *puVar10;
undefined4 in_t1;
SceUID unaff_s0;
int *piVar11;
int unaff_s1;
uint uVar12;
uint *puVar13;
int unaff_s2;
uint uVar14;
uint uVar15;
uint uVar16;
undefined4 *unaff_s3;
SceOff SVar17;
uint uStackX4;
if ((DAT_00003dd0 | DAT_00003dd4) == 0) {
SVar17 = sceIoLseek(unaff_s0,CONCAT44(2,in_t1),param_2);
DAT_00003d98 = (int)((ulonglong)SVar17 >> 0x20) + 0x1c0;
puVar2 = &DAT_00003d74;
DAT_00003dcc = DAT_00003d98;
do {
puVar10 = puVar2;
puVar9 = unaff_s3;
uVar6 = puVar10[1];
uVar7 = puVar10[2];
uVar8 = puVar10[3];
*puVar9 = *puVar10;
puVar9[1] = uVar6;
puVar9[2] = uVar7;
puVar9[3] = uVar8;
unaff_s3 = puVar9 + 4;
puVar2 = puVar10 + 4;
} while (puVar10 + 4 != (undefined4 *)&DAT_00003d94);
uVar6 = puVar10[5];
puVar9[4] = _DAT_00003d94;
puVar9[5] = uVar6;
FUN_0000127c();
return;
}
if ((param_2 == 0x464c457f) && (unaff_s2 != 0x200)) {
*(undefined4 *)((int)&DAT_00003dc0 + unaff_s1) = 1;
iVar3 = is_elf();
if ((iVar3 != 0) && (pcVar4 = (char *)more_elf_junk(), pcVar4 != (char *)0x0)) {
piVar11 = (int *)((int)unaff_s3 + unaff_s3[8]);
uVar6 = read_scemoduleinfo_imports(unaff_s3,(uint)piVar11,pcVar4);
strcpy(&DAT_00003df4,uVar6);
if (DAT_00003dc8 == 0) {
sceCtrlReadBufferPositive();
if ((uStackX4 & 0x200) == 0) {
iVar3 = strstr(&DAT_00003df4,"Resurssiklunssi");
if (iVar3 != 0) {
DAT_00003d70 = 0;
}
}
else {
DAT_00003d70 = 0;
}
uVar14 = (uint)*(byte *)((int)unaff_s3 + 0x31);
uVar12 = (uint)*(byte *)(unaff_s3 + 0xc);
if (*(short *)(unaff_s3 + 0xc) != 0) {
iVar3 = 0;
do {
iVar5 = strcmp(pcVar4 + *piVar11,".text");
if (iVar5 == 0) {
iVar5 = piVar11[4];
if ((uint)piVar11[5] >> 2 != 0) {
uVar12 = 0;
do {
if (DAT_00003d70 == 0) {
puVar13 = (uint *)((int)unaff_s3 + iVar5 + uVar12 * 4);
uVar14 = *puVar13;
if (uVar14 == 0x160f809) {
*puVar13 = 0xc000afd;
}
else {
if (uVar14 < 0x160f80a) {
if (uVar14 == 0xc00008) {
*puVar13 = 0x8000b49;
}
else {
if (uVar14 < 0xc00009) {
if (uVar14 == 0x60f809) {
*puVar13 = 0xc000add;
}
else {
if (uVar14 < 0x60f80a) {
if (uVar14 == 0x400008) {
*puVar13 = 0x8000b39;
}
else {
if (uVar14 < 0x400009) {
if (uVar14 == 0x20f809) {
*puVar13 = 0xc000ad5;
}
}
else {
if (uVar14 == 0x40f809) {
*puVar13 = 0xc000ad9;
}
else {
if (uVar14 == 0x600008) {
*puVar13 = 0x8000b3d;
}
}
}
}
}
else {
if (uVar14 == 0x80f809) {
*puVar13 = 0xc000ae1;
}
else {
if (uVar14 < 0x80f80a) {
if (uVar14 == 0x800008) {
*puVar13 = 0x8000b41;
}
}
else {
if (uVar14 == 0xa00008) {
*puVar13 = 0x8000b45;
}
else {
if (uVar14 == 0xa0f809) {
*puVar13 = 0xc000ae5;
}
}
}
}
}
}
}
else {
if (uVar14 == 0x100f809) {
*puVar13 = 0xc000af1;
}
else {
if (uVar14 < 0x100f80a) {
if (uVar14 == 0xe00008) {
*puVar13 = 0x8000b4d;
}
else {
if (uVar14 < 0xe00009) {
if (uVar14 == 0xc0f809) {
*puVar13 = 0xc000ae9;
}
}
else {
if (uVar14 == 0xe0f809) {
*puVar13 = 0xc000aed;
}
else {
if (uVar14 == 0x1000008) {
*puVar13 = 0x8000b51;
}
}
}
}
}
else {
if (uVar14 == 0x1400008) {
*puVar13 = 0x8000b59;
}
else {
if (uVar14 < 0x1400009) {
if (uVar14 == 0x1200008) {
*puVar13 = 0x8000b55;
}
else {
if (uVar14 == 0x120f809) {
*puVar13 = 0xc000af5;
}
}
}
else {
if (uVar14 == 0x140f809) {
*puVar13 = 0xc000af9;
}
else {
if (uVar14 == 0x1600008) {
*puVar13 = 0x8000b5d;
}
}
}
}
}
}
}
}
}
else {
if (uVar14 == 0x220f809) {
*puVar13 = 0xc000b1d;
}
else {
if (uVar14 < 0x220f80a) {
if (uVar14 == 0x1c00008) {
*puVar13 = 0x8000b69;
}
else {
if (uVar14 < 0x1c00009) {
if (uVar14 == 0x180f809) {
*puVar13 = 0xc000b01;
}
else {
if (uVar14 < 0x180f80a) {
if (uVar14 == 0x1800008) {
*puVar13 = 0x8000b61;
}
}
else {
if (uVar14 == 0x1a00008) {
*puVar13 = 0x8000b65;
}
else {
if (uVar14 == 0x1a0f809) {
*puVar13 = 0xc000b05;
}
}
}
}
}
else {
if (uVar14 == 0x1e00008) {
*puVar13 = 0x8000b6d;
}
else {
if (uVar14 < 0x1e00009) {
if (uVar14 == 0x1c0f809) {
*puVar13 = 0xc000b09;
}
}
else {
if (uVar14 == 0x1e0f809) {
*puVar13 = 0xc000b0d;
}
else {
if (uVar14 == 0x200f809) {
*puVar13 = 0xc000b19;
}
}
}
}
}
}
}
else {
if (uVar14 == 0x2c0f809) {
*puVar13 = 0xc000b31;
}
else {
if (uVar14 < 0x2c0f80a) {
if (uVar14 == 0x260f809) {
*puVar13 = 0xc000b25;
}
else {
if (uVar14 < 0x260f80a) {
if (uVar14 == 0x240f809) {
*puVar13 = 0xc000b21;
}
}
else {
if (uVar14 == 0x280f809) {
*puVar13 = 0xc000b29;
}
else {
if (uVar14 == 0x2a0f809) {
*puVar13 = 0xc000b2d;
}
}
}
}
}
else {
if (uVar14 == 0x300f809) {
*puVar13 = 0xc000b11;
}
else {
if (uVar14 < 0x300f80a) {
if (uVar14 == 0x2e0f809) {
*puVar13 = 0xc000b35;
}
else {
if (uVar14 == 0x3000008) {
*puVar13 = 0x8000b71;
}
}
}
else {
if (uVar14 == 0x3200008) {
*puVar13 = 0x8000b75;
}
else {
if (uVar14 == 0x320f809) {
*puVar13 = 0xc000b15;
}
}
}
}
}
}
}
}
}
}
}
else {
puVar13 = (uint *)((int)unaff_s3 + iVar5 + uVar12 * 4);
uVar14 = *puVar13;
if ((uVar14 >> 0x1a == 0xf) && ((uVar14 & 0xffff) == 0x8000)) {
uVar16 = puVar13[1];
if (((uVar16 >> 0x1a == 0) &&
((((uVar16 & 0x3f) == 0x25 &&
((uVar14 << 0xb) >> 0x1b == (uVar16 << 0xb) >> 0x1b)) &&
(uVar15 = puVar13[2], uVar15 >> 0x1a == 0)))) &&
(((uVar15 & 0x3f) == 8 &&
((uVar16 << 0x10) >> 0x1b == (uVar15 << 6) >> 0x1b)))) {
uVar16 = puVar13[-1] >> 0x1a;
if ((uVar16 == 9) || (uVar16 == 0xd)) {
uVar15 = puVar13[-1] & 0xffff;
uVar16 = uVar12 * 4 + piVar11[3] + 0x10 & 0xffff;
if ((uVar15 == uVar16) || ((uVar15 == uVar16 + 4 && (puVar13[4] == 0)))) {
*puVar13 = uVar14 & 0xffff0000;
}
}
}
}
else {
if ((uVar14 >> 0x1a == 0xf) && ((uVar14 & 0xffff) == 0x3ff)) {
uVar16 = puVar13[1];
if ((((uVar16 >> 0x1a == 0xd) &&
((((((uVar16 & 0xffff) == 0xffff &&
(uVar14 = (uVar14 << 0xb) >> 0x1b,
uVar14 == (uVar16 << 0xb) >> 0x1b)) &&
(uVar14 == (uVar16 << 6) >> 0x1b)) &&
((puVar13[3] >> 0x1a == 0xf && ((puVar13[3] & 0xffff) == 0xffe0))))
&& (puVar13[4] >> 0x1a == 0xf)))) &&
((((puVar13[4] & 0xffff) == 0x8000 && (puVar13[8] >> 0x1a == 0xf)) &&
((puVar13[8] & 0xffff) == 0x4000)))) &&
((((puVar13[9] >> 0x1a == 0xf &&
((char *)(puVar13[9] & 0xffff) == "pdrm.prx")) &&
(puVar13[10] >> 0x1a == 0xd)) && ((puVar13[10] & 0xffff) == 0xb000))))
{
puVar13[-4] = 0x3e00008;
puVar13[-3] = 0x1021;
}
}
else {
if ((uVar14 >> 0x1a == 0xd) && ((uVar14 & 0xffff) == 0xdc02)) {
if ((((puVar13[-2] >> 0x1a == 0xf) &&
(((puVar13[-2] & 0xffff) == 0x1b && (puVar13[-3] >> 0x1a == 0xf))))
&& ((puVar13[-3] & 0xffff) == 0x8000)) &&
((puVar13[-7] >> 0x1a == 0xf && ((puVar13[-7] & 0xffff) == 0x3ff)))) {
puVar13[-0xb] = 0x3e00008;
puVar13[-10] = 0x1021;
}
}
else {
if ((uVar14 >> 0x1a == 0xf) && ((uVar14 & 0xffff) == 0xbe50)) {
if (puVar13[-5] >> 0x1a == 0xf) {
if ((puVar13[-5] & 0xffff) == 0x5b8) {
if ((puVar13[-4] >> 0x1a == 0xd) &&
((puVar13[-4] & 0xffff) == 0xd800)) {
puVar13[-5] = 0x3e00008;
puVar13[-4] = 0x1021;
}
goto LAB_00001644;
}
uVar14 = puVar13[1];
}
else {
uVar14 = puVar13[1];
}
if ((((uVar14 >> 0x1a == 0xd) && ((uVar14 & 0xffff) == 0x18)) &&
(puVar13[3] >> 0x1a == 0xc)) &&
((uVar14 = puVar13[3] & 0xffff, uVar14 == 0x20 || (uVar14 == 0x10))))
{
*puVar13 = 0x3e00008;
puVar13[1] = 0x1021;
}
}
}
}
}
}
LAB_00001644:
uVar12 = uVar12 + 1;
} while (uVar12 < (uint)piVar11[5] >> 2);
uVar12 = (uint)*(byte *)(unaff_s3 + 0xc);
uVar14 = (uint)*(byte *)((int)unaff_s3 + 0x31);
}
uVar1 = *(undefined *)((int)unaff_s3 + 0x2f);
}
else {
uVar1 = *(undefined *)((int)unaff_s3 + 0x2f);
}
iVar3 = iVar3 + 1;
if ((int)(uVar14 << 8 | uVar12) <= iVar3) break;
piVar11 = (int *)((int)piVar11 +
(uint)CONCAT11(uVar1,*(undefined *)((int)unaff_s3 + 0x2e)));
} while( true );
}
writeback_dcache_clear_icache();
}
}
}
return;
}
// WARNING: Instruction at (ram,0x0000190c) overlaps instruction at (ram,0x00001908)
//
// WARNING: Removing unreachable block (ram,0x00001aa8)
void FUN_00001390(void)
{
undefined uVar1;
int in_v0;
int iVar2;
char *pcVar3;
undefined4 uVar4;
int iVar5;
int *piVar6;
int unaff_s1;
uint uVar7;
uint *puVar8;
int unaff_s2;
uint uVar9;
uint uVar10;
uint uVar11;
int unaff_s3;
uint uStackX4;
if (unaff_s2 != in_v0) {
*(undefined4 *)((int)&DAT_00003dc0 + unaff_s1) = 1;
iVar2 = is_elf();
if ((iVar2 != 0) && (pcVar3 = (char *)more_elf_junk(), pcVar3 != (char *)0x0)) {
piVar6 = (int *)(unaff_s3 + *(int *)(unaff_s3 + 0x20));
uVar4 = read_scemoduleinfo_imports(unaff_s3,(uint)piVar6,pcVar3);
strcpy(&DAT_00003df4,uVar4);
if (DAT_00003dc8 == 0) {
sceCtrlReadBufferPositive();
if ((uStackX4 & 0x200) == 0) {
iVar2 = strstr(&DAT_00003df4,"Resurssiklunssi");
if (iVar2 != 0) {
DAT_00003d70 = 0;
}
}
else {
DAT_00003d70 = 0;
}
uVar9 = (uint)*(byte *)(unaff_s3 + 0x31);
uVar7 = (uint)*(byte *)(short *)(unaff_s3 + 0x30);
if (*(short *)(unaff_s3 + 0x30) != 0) {
iVar2 = 0;
do {
iVar5 = strcmp(pcVar3 + *piVar6,".text");
if (iVar5 == 0) {
iVar5 = piVar6[4];
if ((uint)piVar6[5] >> 2 != 0) {
uVar7 = 0;
do {
if (DAT_00003d70 == 0) {
puVar8 = (uint *)(unaff_s3 + iVar5 + uVar7 * 4);
uVar9 = *puVar8;
if (uVar9 == 0x160f809) {
*puVar8 = 0xc000afd;
}
else {
if (uVar9 < 0x160f80a) {
if (uVar9 == 0xc00008) {
*puVar8 = 0x8000b49;
}
else {
if (uVar9 < 0xc00009) {
if (uVar9 == 0x60f809) {
*puVar8 = 0xc000add;
}
else {
if (uVar9 < 0x60f80a) {
if (uVar9 == 0x400008) {
*puVar8 = 0x8000b39;
}
else {
if (uVar9 < 0x400009) {
if (uVar9 == 0x20f809) {
*puVar8 = 0xc000ad5;
}
}
else {
if (uVar9 == 0x40f809) {
*puVar8 = 0xc000ad9;
}
else {
if (uVar9 == 0x600008) {
*puVar8 = 0x8000b3d;
}
}
}
}
}
else {
if (uVar9 == 0x80f809) {
*puVar8 = 0xc000ae1;
}
else {
if (uVar9 < 0x80f80a) {
if (uVar9 == 0x800008) {
*puVar8 = 0x8000b41;
}
}
else {
if (uVar9 == 0xa00008) {
*puVar8 = 0x8000b45;
}
else {
if (uVar9 == 0xa0f809) {
*puVar8 = 0xc000ae5;
}
}
}
}
}
}
}
else {
if (uVar9 == 0x100f809) {
*puVar8 = 0xc000af1;
}
else {
if (uVar9 < 0x100f80a) {
if (uVar9 == 0xe00008) {
*puVar8 = 0x8000b4d;
}
else {
if (uVar9 < 0xe00009) {
if (uVar9 == 0xc0f809) {
*puVar8 = 0xc000ae9;
}
}
else {
if (uVar9 == 0xe0f809) {
*puVar8 = 0xc000aed;
}
else {
if (uVar9 == 0x1000008) {
*puVar8 = 0x8000b51;
}
}
}
}
}
else {
if (uVar9 == 0x1400008) {
*puVar8 = 0x8000b59;
}
else {
if (uVar9 < 0x1400009) {
if (uVar9 == 0x1200008) {
*puVar8 = 0x8000b55;
}
else {
if (uVar9 == 0x120f809) {
*puVar8 = 0xc000af5;
}
}
}
else {
if (uVar9 == 0x140f809) {
*puVar8 = 0xc000af9;
}
else {
if (uVar9 == 0x1600008) {
*puVar8 = 0x8000b5d;
}
}
}
}
}
}
}
}
}
else {
if (uVar9 == 0x220f809) {
*puVar8 = 0xc000b1d;
}
else {
if (uVar9 < 0x220f80a) {
if (uVar9 == 0x1c00008) {
*puVar8 = 0x8000b69;
}
else {
if (uVar9 < 0x1c00009) {
if (uVar9 == 0x180f809) {
*puVar8 = 0xc000b01;
}
else {
if (uVar9 < 0x180f80a) {
if (uVar9 == 0x1800008) {
*puVar8 = 0x8000b61;
}
}
else {
if (uVar9 == 0x1a00008) {
*puVar8 = 0x8000b65;
}
else {
if (uVar9 == 0x1a0f809) {
*puVar8 = 0xc000b05;
}
}
}
}
}
else {
if (uVar9 == 0x1e00008) {
*puVar8 = 0x8000b6d;
}
else {
if (uVar9 < 0x1e00009) {
if (uVar9 == 0x1c0f809) {
*puVar8 = 0xc000b09;
}
}
else {
if (uVar9 == 0x1e0f809) {
*puVar8 = 0xc000b0d;
}
else {
if (uVar9 == 0x200f809) {
*puVar8 = 0xc000b19;
}
}
}
}
}
}
}
else {
if (uVar9 == 0x2c0f809) {
*puVar8 = 0xc000b31;
}
else {
if (uVar9 < 0x2c0f80a) {
if (uVar9 == 0x260f809) {
*puVar8 = 0xc000b25;
}
else {
if (uVar9 != 0) {
if (uVar9 == 0x280f809) {
*puVar8 = 0xc000b29;
}
else {
if (uVar9 == 0x2a0f809) {
*puVar8 = 0xc000b2d;
}
}
}
}
}
else {
if (uVar9 == 0x300f809) {
*puVar8 = 0xc000b11;
}
else {
if (uVar9 < 0x300f80a) {
if (uVar9 == 0x2e0f809) {
*puVar8 = 0xc000b35;
}
else {
if (uVar9 == 0x3000008) {
*puVar8 = 0x8000b71;
}
}
}
else {
if (uVar9 == 0x3200008) {
*puVar8 = 0x8000b75;
}
else {
if (uVar9 == 0x320f809) {
*puVar8 = 0xc000b15;
}
}
}
}
}
}
}
}
}
}
}
else {
puVar8 = (uint *)(unaff_s3 + iVar5 + uVar7 * 4);
uVar9 = *puVar8;
if ((uVar9 >> 0x1a == 0xf) && ((uVar9 & 0xffff) == 0x8000)) {
uVar11 = puVar8[1];
if (((uVar11 >> 0x1a == 0) &&
((((uVar11 & 0x3f) == 0x25 &&
((uVar9 << 0xb) >> 0x1b == (uVar11 << 0xb) >> 0x1b)) &&
(uVar10 = puVar8[2], uVar10 >> 0x1a == 0)))) &&
(((uVar10 & 0x3f) == 8 &&
((uVar11 << 0x10) >> 0x1b == (uVar10 << 6) >> 0x1b)))) {
uVar11 = puVar8[-1] >> 0x1a;
if ((uVar11 == 9) || (uVar11 == 0xd)) {
uVar10 = puVar8[-1] & 0xffff;
uVar11 = uVar7 * 4 + piVar6[3] + 0x10 & 0xffff;
if ((uVar10 == uVar11) || ((uVar10 == uVar11 + 4 && (puVar8[4] == 0)))) {
*puVar8 = uVar9 & 0xffff0000;
}
}
}
}
else {
if ((uVar9 >> 0x1a == 0xf) && ((uVar9 & 0xffff) == 0x3ff)) {
uVar11 = puVar8[1];
if ((((uVar11 >> 0x1a == 0xd) &&
((((((uVar11 & 0xffff) == 0xffff &&
(uVar9 = (uVar9 << 0xb) >> 0x1b, uVar9 == (uVar11 << 0xb) >> 0x1b))
&& (uVar9 == (uVar11 << 6) >> 0x1b)) &&
((puVar8[3] >> 0x1a == 0xf && ((puVar8[3] & 0xffff) == 0xffe0)))) &&
(puVar8[4] >> 0x1a == 0xf)))) &&
((((puVar8[4] & 0xffff) == 0x8000 && (puVar8[8] >> 0x1a == 0xf)) &&
((puVar8[8] & 0xffff) == 0x4000)))) &&
((((puVar8[9] >> 0x1a == 0xf &&
((char *)(puVar8[9] & 0xffff) == "pdrm.prx")) &&
(puVar8[10] >> 0x1a == 0xd)) && ((puVar8[10] & 0xffff) == 0xb000)))) {
puVar8[-4] = 0x3e00008;
puVar8[-3] = 0x1021;
}
}
else {
if ((uVar9 >> 0x1a == 0xd) && ((uVar9 & 0xffff) == 0xdc02)) {
if (((puVar8[-2] >> 0x1a == 0xf) &&
(((puVar8[-2] & 0xffff) == 0x1b && (puVar8[-3] >> 0x1a == 0xf)))) &&
(((puVar8[-3] & 0xffff) == 0x8000 &&
((puVar8[-7] >> 0x1a == 0xf && ((puVar8[-7] & 0xffff) == 0x3ff)))))) {
puVar8[-0xb] = 0x3e00008;
puVar8[-10] = 0x1021;
}
}
else {
if ((uVar9 >> 0x1a == 0xf) && ((uVar9 & 0xffff) == 0xbe50)) {
if (puVar8[-5] >> 0x1a == 0xf) {
if ((puVar8[-5] & 0xffff) == 0x5b8) {
if ((puVar8[-4] >> 0x1a == 0xd) && ((puVar8[-4] & 0xffff) == 0xd800)
) {
puVar8[-5] = 0x3e00008;
puVar8[-4] = 0x1021;
}
goto LAB_00001644;
}
uVar9 = puVar8[1];
}
else {
uVar9 = puVar8[1];
}
if ((((uVar9 >> 0x1a == 0xd) && ((uVar9 & 0xffff) == 0x18)) &&
(puVar8[3] >> 0x1a == 0xc)) &&
((uVar9 = puVar8[3] & 0xffff, uVar9 == 0x20 || (uVar9 == 0x10)))) {
*puVar8 = 0x3e00008;
puVar8[1] = 0x1021;
}
}
}
}
}
}
LAB_00001644:
uVar7 = uVar7 + 1;
} while (uVar7 < (uint)piVar6[5] >> 2);
uVar7 = (uint)*(byte *)(unaff_s3 + 0x30);
uVar9 = (uint)*(byte *)(unaff_s3 + 0x31);
}
uVar1 = *(undefined *)(unaff_s3 + 0x2f);
}
else {
uVar1 = *(undefined *)(unaff_s3 + 0x2f);
}
iVar2 = iVar2 + 1;
if ((int)(uVar9 << 8 | uVar7) <= iVar2) break;
piVar6 = (int *)((int)piVar6 + (uint)CONCAT11(uVar1,*(undefined *)(unaff_s3 + 0x2e)));
} while( true );
}
writeback_dcache_clear_icache();
}
}
}
return;
}
void FUN_00002114(void)
{
uint uVar1;
int iVar2;
SceUID modid;
u32 uVar3;
int unaff_s0;
int unaff_s1;
int unaff_s4;
if (*(int *)((int)&PTR_00003dec + unaff_s4) == 0) {
return;
}
uVar1 = set_k1(0);
if (DAT_00003dc4 == 0) {
DAT_00003dc4 = 1;
modid = sceKernelLoadModuleBuffer(0x52c,&DAT_00003840,0,0);
sceKernelStartModule(modid,0,(void *)0x0,(int *)0x0,(SceKernelSMOption *)0x0);
iVar2 = *(int *)((int)&DAT_00003df0 + unaff_s0);
}
else {
iVar2 = *(int *)((int)&DAT_00003df0 + unaff_s0);
}
if (iVar2 == 0) {
iVar2 = *(int *)((int)&DAT_00003e14 + unaff_s1);
}
else {
uVar3 = sctrlHENFindFunction("Circulo Rectangular","HappyWorld",0x12345678);
if (uVar3 != 0) {
*DAT_00003df0 = uVar3 >> 2 & 0x3ffffff | 0x8000000;
DAT_00003df0[1] = 0;
writeback_dcache_clear_icache();
}
DAT_00003df0 = (uint *)0x0;
iVar2 = *(int *)((int)&DAT_00003e14 + unaff_s1);
}
if (iVar2 == 0) {
iVar2 = *(int *)((int)&PTR_00003dec + unaff_s4);
}
else {
uVar3 = sctrlHENFindFunction("Circulo Rectangular","HappyWorld",0x87654321);
if (uVar3 != 0) {
*DAT_00003e14 = uVar3 >> 2 & 0x3ffffff | 0x8000000;
DAT_00003e14[1] = 0;
writeback_dcache_clear_icache();
}
DAT_00003e14 = (uint *)0x0;
iVar2 = *(int *)((int)&PTR_00003dec + unaff_s4);
}
if (iVar2 != 0) {
uVar3 = sctrlHENFindFunction("Circulo Rectangular","HappyWorld",0x1234567);
if (uVar3 == 0) {
PTR_00003dec = (undefined *)0x0;
}
else {
*(u32 *)PTR_00003dec = uVar3 >> 2 & 0x3ffffff | 0x8000000;
*(undefined4 *)(PTR_00003dec + 4) = 0;
writeback_dcache_clear_icache();
PTR_00003dec = (undefined *)0x0;
}
}
set_k1(uVar1);
return;
}
void find_and_patch_nids(void)
{
int iVar1;
uint *puVar2;
uint *puVar3;
uint *puVar4;
bool bVar5;
uint uVar6;
uint iVar6;
undefined3 extraout_var;
int iVar7;
uint uVar8;
undefined3 extraout_var_00;
uint iVar9;
undefined3 extraout_var_01;
undefined3 extraout_var_02;
undefined3 extraout_var_03;
void *pvVar9;
undefined3 extraout_var_04;
char **ppcVar10;
char *iVar12;
uint uVar11;
uint *puVar12;
uint iVar13;
uint iVar14;
u32 uVar13;
uint local_2c;
iVar1 = DAT_00003e10;
if (0 < DAT_00003de8) {
local_2c = 0;
do {
ppcVar10 = (char **)(iVar1 + local_2c);
if (*ppcVar10 == (char *)0x0) {
uVar6 = (uint)*(byte *)(ppcVar10 + 2);
}
else {
iVar6 = get_next_modname();
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
uVar11 = (uint)*(byte *)(short *)((int)ppcVar10 + 10);
if (*(short *)((int)ppcVar10 + 10) == 0) {
uVar6 = (uint)*(byte *)(ppcVar10 + 2);
}
else {
iVar14 = 0;
iVar13 = 0;
do {
while( true ) {
puVar12 = (uint *)(ppcVar10[4] + iVar14 * 8);
iVar7 = find_return(puVar12);
if (iVar6 == 0) break;
uVar8 = uVar6 << 8;
if (iVar7 != 0) goto LAB_00002430;
if ((*(byte *)((int)ppcVar10 + 7) & 0x40) == 0) {
uVar13 = sctrlHENFindFunction
((char *)iVar6,*ppcVar10,*(u32 *)(ppcVar10[3] + iVar13));
iVar12 = *ppcVar10;
// sceKernelCreateThread
iVar7 = strcmp(iVar12,"ThreadManForKernel");
if ((iVar7 == 0) && (*(int *)(ppcVar10[3] + iVar13) == 0x446d8de6)) {
uVar13 = 0x3d8;
goto LAB_000026a4;
}
// sceKernelLoadModuleBuffer
iVar7 = strcmp(iVar12,"ModuleMgrForKernel");
if ((iVar7 == 0) && (*(int *)(ppcVar10[3] + iVar13) == -0x457763f9)) {
uVar13 = 0x7cc;
goto LAB_000026a4;
}
iVar7 = strcmp(iVar12,"sceNet");
puVar3 = puVar12;
if (iVar7 != 0) {
iVar7 = strcmp(iVar12,"sceNet_lib");
if ((iVar7 != 0) ||
(puVar2 = (uint *)PTR_00003dec, puVar4 = DAT_00003e14,
*(int *)(ppcVar10[3] + iVar13) != 0x7ba3ed91)) goto LAB_0000261c;
LAB_0000269c:
DAT_00003e14 = puVar4;
DAT_00003df0 = puVar3;
PTR_00003dec = (undefined *)puVar2;
if (uVar13 == 0) goto LAB_00002470;
goto LAB_000026a4;
}
puVar2 = (uint *)PTR_00003dec;
puVar4 = DAT_00003e14;
if (*(int *)(ppcVar10[3] + iVar13) == 0x7ba3ed91) goto LAB_0000269c;
LAB_0000261c:
iVar7 = strcmp(iVar12,"sceNetApctl");
// sceNetApctlInit
if ((((iVar7 == 0) &&
(puVar2 = (uint *)PTR_00003dec, puVar3 = DAT_00003df0, puVar4 = puVar12,
*(int *)(ppcVar10[3] + iVar13) == -0x1d06e065)) ||
((iVar9 = strcmp(&DAT_00003df4,"\"LUAPLAYER\""), puVar3 = DAT_00003df0,
puVar4 = DAT_00003e14, iVar9 == 0
// sceNetApctlConnect &&
((iVar7 == 0 &&
(puVar2 = puVar12, *(int *)(ppcVar10[3] + iVar13) == -0x3046a83a)))))) ||
(puVar2 = (uint *)PTR_00003dec, DAT_00003d70 == 0)) goto LAB_0000269c;
// sceKernelFindModuleByName
iVar7 = strcmp(&DAT_00003df4,"callisto");
if (((iVar7 == 0) && (iVar7 = strcmp(iVar12,"LoadCoreForKernel"), iVar7 == 0)) &&
(*(int *)(ppcVar10[3] + iVar13) == -0x3075be4f)) {
bVar5 = does_it_exist("SystemControl","KUBridge",0x1742445f);
puVar2 = (uint *)PTR_00003dec;
puVar3 = DAT_00003df0;
puVar4 = DAT_00003e14;
if (CONCAT31(extraout_var_01,bVar5) == 0) goto LAB_0000269c;
pvVar9 = (void *)sctrlHENFindFunction("SystemControl","KUBridge",0x1742445f);
sctrlHENPatchSyscall(pvVar9,FUN_000006dc);
uVar6 = CONCAT31(extraout_var_01,bVar5) << 6;
LAB_00002410:
puVar12[1] = uVar6 | 0xc;
*puVar12 = 0x3e00008;
uVar11 = (uint)*(byte *)((int)ppcVar10 + 10);
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
}
else {
iVar7 = strcmp(iVar12,"StdioForKernel");
// sceKernelIcacheClearAll, sceKernelFindModuleByName, sceKernelFindModuleByUID
if ((((iVar7 == 0) || (iVar7 = strcmp(iVar12,"IoFileMgrForKernel"), iVar7 == 0))
|| ((iVar7 = strcmp(iVar12,"ExceptionManagerForKernel"), iVar7 == 0 ||
(iVar7 = strcmp(iVar12,"KDebugForKernel"), iVar7 == 0)))) ||
((iVar7 = strcmp(iVar12,"LoadCoreForKernel"), iVar7 == 0 &&
(((iVar7 = *(int *)(ppcVar10[3] + iVar13), iVar7 == -0x2788653a ||
(iVar7 == -0x3075be4f)) || (iVar7 == -0x331b5ea9)))))) {
LAB_00002704:
*puVar12 = 0x3e00008;
puVar12[1] = 0x1021;
uVar11 = (uint)*(byte *)((int)ppcVar10 + 10);
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
}
else {
// sceKernelIcacheInvalidateAll
iVar7 = strcmp(iVar12,"UtilsForKernel");
if ((iVar7 != 0) || (*(int *)(ppcVar10[3] + iVar13) != -0x6df0efb6)) {
// sceSysconCtrlLED
iVar7 = strcmp(iVar12,"sceSyscon_driver");
if (iVar7 == 0) {
if (*(int *)(ppcVar10[3] + iVar13) == 0x18bfbe65) {
// kuKernelLoadModule
bVar5 = does_it_exist("SystemControl","KUBridge",0x4c25ea72);
if (CONCAT31(extraout_var_03,bVar5) != 0) {
pvVar9 = (void *)sctrlHENFindFunction
("SystemControl","KUBridge",0x4c25ea72);
sctrlHENPatchSyscall(pvVar9,set_led);
uVar6 = CONCAT31(extraout_var_03,bVar5) << 6;
goto LAB_00002410;
}
LAB_00002530:
*puVar12 = 0x3e00008;
puVar12[1] = 0x1021;
uVar11 = (uint)*(byte *)((int)ppcVar10 + 10);
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
goto LAB_0000242c;
}
// sceSysconCtrlHRPower
puVar2 = (uint *)PTR_00003dec;
puVar3 = DAT_00003df0;
puVar4 = DAT_00003e14;
if (*(int *)(ppcVar10[3] + iVar13) == 0x44439604) goto LAB_00002704;
}
else {
// sceSysregUartIoEnable
iVar7 = strcmp(iVar12,"sceSysreg_driver");
if (iVar7 == 0) {
puVar2 = (uint *)PTR_00003dec;
puVar3 = DAT_00003df0;
puVar4 = DAT_00003e14;
if (*(int *)(ppcVar10[3] + iVar13) == 0x7fd7a631) goto LAB_00002944;
}
else {
iVar7 = strcmp(iVar12,"sceHprm_driver");
if (iVar7 == 0) {
bVar5 = does_it_exist((char *)iVar6,iVar12,
*(u32 *)(ppcVar10[3] + iVar13));
iVar7 = CONCAT31(extraout_var_00,bVar5);
if (iVar7 != 0) goto LAB_0000240c;
goto LAB_00002530;
}
iVar7 = strcmp(iVar12,"sceDisplay_driver");
puVar2 = (uint *)PTR_00003dec;
puVar3 = DAT_00003df0;
puVar4 = DAT_00003e14;
if (iVar7 == 0) {
if (*(int *)(ppcVar10[3] + iVar13) != -0x61c3923a) goto LAB_000023e8;
// kuKernelLoadModuleWithApitype2
bVar5 = does_it_exist("SystemControl","KUBridge",0x1e9f0498);
if (CONCAT31(extraout_var_04,bVar5) == 0) goto LAB_00002704;
pvVar9 = (void *)sctrlHENFindFunction
("SystemControl","KUBridge",0x1e9f0498);
sctrlHENPatchSyscall(pvVar9,set_brightness);
uVar6 = CONCAT31(extraout_var_04,bVar5) << 6;
goto LAB_00002410;
}
}
}
goto LAB_0000269c;
}
bVar5 = does_it_exist("SystemControl","KUBridge",0x8e5a4057);
if (CONCAT31(extraout_var_02,bVar5) != 0) {
pvVar9 = (void *)sctrlHENFindFunction("SystemControl","KUBridge",0x8e5a4057);
sctrlHENPatchSyscall(pvVar9,invalidate_icache);
uVar6 = CONCAT31(extraout_var_02,bVar5) << 6;
goto LAB_00002410;
}
LAB_00002944:
*puVar12 = 0x3e00008;
puVar12[1] = 0x1021;
uVar11 = (uint)*(byte *)((int)ppcVar10 + 10);
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
}
}
}
else {
// sceKernelExitGame
if (((DAT_00003d70 != 0) ||
(iVar7 = strcmp(*ppcVar10,"LoadExecForUser"), iVar7 != 0)) ||
(*(int *)(ppcVar10[3] + iVar13) != 0x5572a5f)) {
iVar7 = strcmp(*ppcVar10,"KUBridge");
if (iVar7 == 0) goto LAB_00002530;
LAB_000023e8:
bVar5 = does_it_exist((char *)iVar6,*ppcVar10,*(u32 *)(ppcVar10[3] + iVar13));
iVar7 = CONCAT31(extraout_var,bVar5);
if (iVar7 != 0) {
LAB_0000240c:
uVar6 = iVar7 << 6;
goto LAB_00002410;
}
goto LAB_00002470;
}
uVar13 = 0xab0;
LAB_000026a4:
*puVar12 = uVar13 >> 2 & 0x3ffffff | 0x8000000;
puVar12[1] = 0;
uVar11 = (uint)*(byte *)((int)ppcVar10 + 10);
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
}
LAB_0000242c:
uVar8 = uVar6 << 8;
LAB_00002430:
iVar14 = iVar14 + 1;
iVar13 = iVar13 + 4;
if ((int)(uVar8 | uVar11) <= (int)iVar14) goto LAB_0000249c;
}
uVar8 = uVar6 << 8;
if (iVar7 != 0) goto LAB_00002430;
LAB_00002470:
puVar12[1] = 0;
*puVar12 = 0x3e00008;
uVar6 = (uint)*(byte *)((int)ppcVar10 + 0xb);
uVar11 = (uint)*(byte *)(ushort *)((int)ppcVar10 + 10);
iVar14 = iVar14 + 1;
iVar13 = iVar13 + 4;
} while ((int)iVar14 < (int)(uint)*(ushort *)((int)ppcVar10 + 10));
LAB_0000249c:
uVar6 = (uint)*(byte *)(ppcVar10 + 2);
}
}
local_2c = local_2c + uVar6 * 4;
} while ((int)local_2c < DAT_00003de8);
}
writeback_dcache_clear_icache();
return;
}
int FUN_00002acc_unused(SceModule *param_1,SceStubLibraryEntryTable *param_2,u32 param_3)
{
int iVar1;
iVar1 = sceKernelLinkLibraryEntriesWithModule(param_1,param_2,param_3);
if ((DAT_00003e10 == (SceStubLibraryEntryTable *)0x0) && (iVar1 < 0)) {
iVar1 = 0;
DAT_00003de4 = sceKernelGetModuleIdByAddress(param_2);
DAT_00003de8 = param_3;
DAT_00003e10 = param_2;
}
find_and_patch_nids();
return iVar1;
}
uint set_k1(uint param_1)
{
uint in_k1;
return in_k1;
}
SceUID sceKernelAllocPartitionMemory(SceUID partitionid,int type,SceSize size,void *addr)
{
SceUID in_v0;
return in_v0;
}
void sceKernelGetSystemStatus(void)
{
return;
}
void * sceKernelGetBlockHeadAddr(SceUID blockid)
{
void *in_v0;
return in_v0;
}
u32 sctrlHENFindFunction(char *szMod,char *szLib,u32 nid)
{
u32 in_v0;
return in_v0;
}
void sctrlHENPatchSyscall(void *addr,void *newaddr)
{
return;
}
int sctrlHENRegisterHomebrewLoader(void *func)
{
int in_v0;
return in_v0;
}
SceUID sceKernelLoadModuleForLoadExecVSHMs2
(int apiType,char *path,int flag,SceKernelLMOption *pOption)
{
SceUID in_v0;
return in_v0;
}
int sceKernelStartModule
(SceUID modid,SceSize argsize,void *argp,int *status,SceKernelSMOption *option)
{
int in_v0;
return in_v0;
}
SceUID sceKernelLoadModule(int flags,SceKernelLMOption *option)
{
SceUID in_v0;
return in_v0;
}
void sceKernelLoadModuleBuffer(void)
{
return;
}
int sceKernelStopUnloadSelfModule(SceSize argsize,void *argp,int *status,SceKernelSMOption *option)
{
int in_v0;
return in_v0;
}
SceUID sceKernelGetModuleIdByAddress(void *addr)
{
SceUID in_v0;
return in_v0;
}
void sceKernelLinkLibraryEntries(void)
{
return;
}
int sceKernelLinkLibraryEntriesWithModule
(SceModule *mod,SceStubLibraryEntryTable *libStubTable,u32 size)
{
int in_v0;
return in_v0;
}
void sceKernelFindModuleByUID(SceUID modid)
{
return;
}
SceModule * sceKernelFindModuleByName(char *param_1)
{
SceModule *in_v0;
return in_v0;
}
// WARNING: Unknown calling convention yet parameter storage is locked
void sceKernelIcacheClearAll(void)
{
return;
}
SceUID kuKernelLoadModule(char *path,int flags,SceKernelLMOption *option)
{
SceUID in_v0;
return in_v0;
}
SceUID kuKernelLoadModuleWithApitype2(int apitype,char *path,int flags,SceKernelLMOption *option)
{
SceUID in_v0;
return in_v0;
}
int kuKernelInitApitype(void)
{
int in_v0;
return in_v0;
}
int kuKernelInitFileName(char *initfilename)
{
int in_v0;
return in_v0;
}
int kuKernelBootFrom(void)
{
int in_v0;
return in_v0;
}
int kuKernelInitKeyConfig(void)
{
int in_v0;
return in_v0;
}
int kuKernelGetUserLevel(void)
{
int in_v0;
return in_v0;
}
int kuKernelSetDdrMemoryProtection(void *addr,int size,int prot)
{
int in_v0;
return in_v0;
}
int kuKernelGetModel(void)
{
int in_v0;
return in_v0;
}
void sceDisplaySetBrightness(int level,int unk1)
{
return;
}
int sceCtrlPeekBufferPositive(SceCtrlData *pad_data,int count)
{
int in_v0;
return in_v0;
}
void sceCtrlReadBufferPositive(void)
{
return;
}
void Kprintf(void)
{
return;
}
void sceIoRead(void)
{
return;
}
SceOff sceIoLseek(SceUID fd,SceOff offset,int whence)
{
undefined4 in_v0;
undefined4 in_v1;
return CONCAT44(in_v0,in_v1);
}
// WARNING: Unknown calling convention yet parameter storage is locked
void sceKernelDcacheWritebackAll(void)
{
return;
}
void sceKernelIcacheInvalidateAll(void)
{
return;
}
int sceSysconCtrlLED(int SceLED,int state)
{
int in_v0;
return in_v0;
}
void sceKernelQuerySystemCall(void)
{
return;
}
void sceKernelDelayThread(void)
{
return;
}
void sceKernelCreateThread(void)
{
return;
}
int sceKernelStartThread(SceUID thid,SceSize arglen,void *argp)
{
int in_v0;
return in_v0;
}
int sceKernelExitDeleteThread(int status)
{
int in_v0;
return in_v0;
}
void strstr(void)
{
return;
}
int strcmp(char *param_1,char *param_2)
{
int in_v0;
return in_v0;
}
void strcpy(void)
{
return;
}
// WARNING: Unknown calling convention yet parameter storage is locked
int sceKernelExitVSHKernel(void)
{
int in_v0;
return in_v0;
}
// WARNING: Unknown calling convention yet parameter storage is locked
int sceKernelInitApitype(void)
{
int in_v0;
return in_v0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment