s32 main(s32 argc, const char* argv[]) { if(peekq(0x80000000007EF220ULL)==0x45737477616C6420ULL && is_payload_loaded()) { sys8_path_table(0LL); // break libfs.sprx re-direction if(restore_syscall8[0]) sys8_pokeinstr(restore_syscall8[0], restore_syscall8[1]); } if(argc>0 && argv) { if(!strncmp(argv[0], "/dev_hdd0/game/", 15)) { int n; strcpy(self_path, argv[0]); n= 15; while(self_path[n] != '/' && self_path[n] != 0) n++; if(self_path[n] == '/') { self_path[n] = 0; } } } strcat(self_path, "/USRDIR/iris_manager.self"); sysProcessExitSpawn2(self_path, NULL, NULL, NULL, 0, 1001, SYS_PROCESS_SPAWN_STACK_SIZE_1M); }
static void pokeq(u64 addr, u64 val) { if(!poke_syscall) { sys8_pokeinstr(addr, val); } else { lv2syscall2(poke_syscall, addr, val); } }