Created
April 26, 2019 11:17
-
-
Save leoetlino/3156c286c7232c2e73b9b74b91021353 to your computer and use it in GitHub Desktop.
BotW nnMain 1.5.0 vs 1.6.0
This file contains hidden or 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
| void nnMain() | |
| { | |
| // [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND] | |
| sead::system::Print("0000002d\n"); // version number. 0x10 in 1.0.0 | |
| Profiler::Push("起動時間"); | |
| Profiler::Push("main"); | |
| _WriteStatusReg(FPCR, _ReadStatusReg(FPCR) | 0x1000000); | |
| nn::oe::Initialize(); | |
| nn::oe::SetPerformanceConfiguration(0, 0x92220008); | |
| argc = nn::os::GetHostArgc(); | |
| argv = nn::os::GetHostArgv(); | |
| parseOptions(argc, argv); | |
| sead::ExceptionHandler::initialize(); | |
| sead::Framework::InitializeArg::InitializeArg(&_.frameworkInitArg); | |
| _.frameworkInitArg.arenaSize = 0xC1000000LL; | |
| sead::GameFrameworkNx::initialize(&_.frameworkInitArg); | |
| if ( sead::HeapMgr::sRootHeaps.size ) | |
| heap = *sead::HeapMgr::sRootHeaps.ptrs; | |
| else | |
| heap = 0LL; | |
| _.str.vptr = &sead::SafeString::vt; | |
| _.str.cstr = "GameConfig"; | |
| v3 = getDebugHeap(); | |
| if ( v3 ) | |
| heap = getDebugHeap(); | |
| gameConfigHeap = sead::ExpHeap::create(0LL, (sead::SafeStringBase *)&_, heap, 8LL, 1LL, 0); | |
| GameConfig::createInstance(gameConfigHeap); | |
| GameConfig::initStubbed(GameConfig::sInstance, gameConfigHeap); | |
| gameConfigHeap->vtable->adjust(gameConfigHeap); | |
| Struct30::createInstance(heap); | |
| _.frameworkCreateArg.field_0 = 1; | |
| sead::TaskClassID::sStringTaskCreator = (__int64 (__fastcall *)(_QWORD))sub_710092132C; | |
| _.frameworkCreateArg.field_C = 0x3F8000003F000000LL; | |
| _.frameworkCreateArg.field_14 = 0x500; | |
| _.frameworkCreateArg.field_18 = 0x1000002D0LL; | |
| _.frameworkCreateArg.field_4 = 0x3F0000003F000000LL; | |
| _.frameworkCreateArg.field_20 = 0x8000000080000LL; | |
| _.frameworkCreateArg.field_28 = 0x80000000001000LL; | |
| _.frameworkCreateArg.field_30 = 0xFFFFFFFF00000000LL; | |
| _.frameworkCreateArg.field_38 = 0xFFFFFFFFFFFFFFFFLL; | |
| _.frameworkCreateArg.field_40 = 0x212C00000000LL; | |
| _.frameworkCreateArg.field_48 = 2; | |
| _.frameworkCreateArg.field_14 = *(_DWORD *)sub_7100F2A6BC((unsigned __int8 *)2); | |
| LODWORD(_.taskCreateArg.field_18) = *((_DWORD *)sub_7100F2A6BC((unsigned __int8 *)(unsigned int)_.frameworkCreateArg.field_14) | |
| + 1); | |
| *(__int64 *)((char *)&_.taskCreateArg.field_28 + 4) = 0x1000000LL; | |
| _.frameworkCreateArg.field_0 = 1; | |
| BYTE4(_.taskCreateArg.field_18) = 0; | |
| BYTE6(_.taskCreateArg.field_18) = 0; | |
| _.frameworkCreateArg.field_20 = 0x10000000030000LL; | |
| HIDWORD(_.taskCreateArg.field_40) = 0x812C; | |
| _.frameworkCreateArg.field_38 = 0x4000000080000LL; | |
| framework = (GameFramework *)operator new(0x288uLL, heap, 8); | |
| GameFramework::ctor(framework, (const sead::GameFrameworkNx::CreateArg *)&_); | |
| name.vptr = &sead::SafeString::vt; | |
| name.cstr = "GraphicsSystem"; | |
| gfxHeap = sead::ExpHeap::create(0x3000000uLL, &name, heap, 8LL, 1LL, 0); | |
| if ( getDebugHeap() ) | |
| { | |
| v8 = getDebugHeap(); | |
| LABEL_10: | |
| heap_1 = v8; | |
| goto LABEL_11; | |
| } | |
| if ( getDebugHeap2() ) | |
| { | |
| v8 = getDebugHeap2(); | |
| goto LABEL_10; | |
| } | |
| heap_1 = 0LL; | |
| LABEL_11: | |
| v11 = (signed int *)sub_7100F2A708(v9); | |
| v12 = (float)v11[1]; | |
| *(float *)&name.vptr = (float)*v11; | |
| *((float *)&name.vptr + 1) = v12; | |
| sead::GameFrameworkNx::initializeGraphicsSystem(framework, gfxHeap, &name, v13, v14); | |
| if ( heap_1 ) | |
| { | |
| sead::PrimitiveRenderer::createInstance((sead::PrimitiveRenderer *)heap_1, v15); | |
| name.vptr = &sead::SafeString::vt; | |
| name.cstr = "System/Sead/primitive_drawer_nvn_shader.bin"; | |
| sead::PrimitiveRenderer::x(sead::PrimitiveRenderer::sInstance, heap_1); | |
| sead::DebugFontMgrNvn::createInstance(heap_1); | |
| sead::DebugFontMgrNvn::initialize( | |
| sead::DebugFontMgrNvn::sInstance, | |
| heap_1, | |
| "System/font/nvn_font/nvn_font_shader.bin", | |
| "System/font/nvn_font/nvn_font.ntx", | |
| 0x32000u); | |
| sead::DebugFontMgrJis1Nvn::createInstance(heap_1); | |
| sead::DebugFontMgrJis1Nvn::initialize( | |
| sead::DebugFontMgrJis1Nvn::sInstance, | |
| heap_1, | |
| "System/font/nvn_font/nvn_font_shader_jis1.bin", | |
| "System/font/nvn_font/nvn_font_jis1.ntx", | |
| "System/font/nvn_font/nvn_font_jis1_tbl.bin", | |
| 0x100000u); | |
| sead::DebugFontMgrJis1Nvn::setInstance(sead::DebugFontMgrJis1Nvn::sInstance); | |
| } | |
| Framework::setFlag214_1iftrue_else_2(framework, 0); | |
| gfxHeap->vtable->adjust(gfxHeap); | |
| Profiler::Pop("main"); | |
| Profiler::Push("RootTask"); | |
| LODWORD(name.vptr) = 3; | |
| name.cstr = "RootTask"; | |
| sead::TaskBase::CreateArg::CreateArg((sead::TaskBase::CreateArg *)&_, (__int64 *)&name); | |
| _.taskCreateArg.field_AC = 1; | |
| LODWORD(_.taskCreateArg.field_0) = 2; | |
| _.taskCreateArg.taskCtor = (sead::TaskBase *(__fastcall *)(const struct sead::TaskConstructArg *))sead::TTaskFactory<RootTask>; | |
| sead::Framework::RunArg::RunArg((__int64)&name); | |
| HIDWORD(name.vptr) = sead::ThreadUtil::ConvertPrioritySeadToPlatform(0x14); | |
| framework->vtable->_._.b.run(framework, heap, (sead::TaskBase::CreateArg *)&_, (int *)&name); | |
| if ( sead::AudioMgr::sInstance ) | |
| sead::AudioMgr::exit(sead::AudioMgr::sInstance); | |
| } |
This file contains hidden or 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
| void __cdecl nnMain() | |
| { | |
| // [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND] | |
| v0 = (nn::os *)sead::system::Print("0000002e\n"); | |
| if ( dword_7102CE0F20 >= dword_7102CE0F38 ) | |
| { | |
| v1 = 0LL; | |
| } | |
| else | |
| { | |
| v1 = (nn::os **)qword_7102CE0F28; | |
| if ( qword_7102CE0F28 ) | |
| qword_7102CE0F28 = *(_QWORD *)qword_7102CE0F28; | |
| *v1 = 0LL; | |
| v1[1] = 0LL; | |
| v0 = (nn::os *)nn::os::GetSystemTick(v0); | |
| *v1 = v0; | |
| v1[3] = 0LL; | |
| v1[2] = 0LL; | |
| v2 = (__int64 *)(v1 + 2); | |
| v3 = qword_7102CE0F10; | |
| qword_7102CE0F10 = (__int64)v2; | |
| *v2 = v3; | |
| v1[3] = (nn::os *)&qword_7102CE0F10; | |
| if ( v3 ) | |
| *(_QWORD *)(v3 + 8) = v2; | |
| ++dword_7102CE0F20; | |
| } | |
| v4 = (nn::os *)nn::os::GetSystemTick(v0); | |
| *v1 = v4; | |
| v1[1] = (nn::os *)"起動時間"; | |
| if ( dword_7102CE0F20 >= dword_7102CE0F38 ) | |
| { | |
| v5 = 0LL; | |
| } | |
| else | |
| { | |
| v5 = (nn::os **)qword_7102CE0F28; | |
| if ( qword_7102CE0F28 ) | |
| qword_7102CE0F28 = *(_QWORD *)qword_7102CE0F28; | |
| *v5 = 0LL; | |
| v5[1] = 0LL; | |
| v4 = (nn::os *)nn::os::GetSystemTick(v4); | |
| *v5 = v4; | |
| v5[3] = 0LL; | |
| v5[2] = 0LL; | |
| v6 = (__int64 *)(v5 + 2); | |
| v7 = qword_7102CE0F10; | |
| qword_7102CE0F10 = (__int64)v6; | |
| *v6 = v7; | |
| v5[3] = (nn::os *)&qword_7102CE0F10; | |
| if ( v7 ) | |
| *(_QWORD *)(v7 + 8) = v6; | |
| ++dword_7102CE0F20; | |
| } | |
| v8 = (nn::oe *)nn::os::GetSystemTick(v4); | |
| *v5 = v8; | |
| v5[1] = (nn::os *)"main"; | |
| _WriteStatusReg(ARM64_SYSREG(3, 3, 4, 4, 0), _ReadStatusReg(ARM64_SYSREG(3, 3, 4, 4, 0)) | 0x1000000); | |
| nn::oe::Initialize(v8); | |
| nn::oe::SetPerformanceConfiguration(0LL, 2451701768LL); | |
| LODWORD(v9) = 1; | |
| v10 = (nn::os *)nn::oe::SetCpuBoostMode(1LL); | |
| v11 = (nn::os *)nn::os::GetHostArgc(v10); | |
| v12 = (signed int)v11; | |
| v13 = (const char *)nn::os::GetHostArgv(v11); | |
| word_7102CE0DF8 = 0; | |
| qword_7102CE0E08 = 0LL; | |
| qword_7102CE0E10 = 0LL; | |
| qword_7102CE0E00 = 0LL; | |
| if ( v12 < 1 ) | |
| goto LABEL_158; | |
| v14 = v13; | |
| LODWORD(v329) = v12; | |
| LOBYTE(v333) = 1; | |
| v330 = v13; | |
| v331 = &off_7102A6E6C0; | |
| v15 = 5LL; | |
| v332 = "l:r:"; | |
| HIDWORD(v333) = 1; | |
| LOBYTE(v334) = 0; | |
| v335 = 0LL; | |
| LODWORD(v336) = 1; | |
| while ( (_DWORD)v9 != 1 ) | |
| { | |
| v16 = *(char **)&v330[8 * SHIDWORD(v333)]; | |
| LABEL_29: | |
| LOBYTE(v334) = v16[(signed int)v9]; | |
| v20 = (unsigned __int8)v334; | |
| LOWORD(v354) = (unsigned __int8)v334; | |
| if ( (unsigned __int8)v334 == 58 ) | |
| goto LABEL_83; | |
| v355 = (unsigned __int64)&off_7102A6E6C0; | |
| v356 = &v354; | |
| ((void (__fastcall *)(__int64 (__fastcall ***)()))v331[3])(&v331); | |
| v21 = 0; | |
| for ( i = v15; ; i += 6LL ) | |
| { | |
| v23 = (__int64)&v332[i]; | |
| if ( !v332[i - 5] ) | |
| break; | |
| if ( !*(_BYTE *)(v23 - 4) ) | |
| { | |
| v21 |= 1u; | |
| break; | |
| } | |
| if ( !*(_BYTE *)(v23 - 3) ) | |
| { | |
| v21 = i - 3; | |
| break; | |
| } | |
| if ( (unsigned __int64)(i - 3) >> 19 ) | |
| { | |
| v21 = 0; | |
| break; | |
| } | |
| if ( !*(_BYTE *)(v23 - 2) ) | |
| { | |
| v21 += 3; | |
| break; | |
| } | |
| if ( !*(_BYTE *)(v23 - 1) ) | |
| { | |
| v21 += 4; | |
| break; | |
| } | |
| if ( !v332[i] ) | |
| { | |
| v21 += 5; | |
| break; | |
| } | |
| v21 += 6; | |
| } | |
| (*(void (__fastcall **)(unsigned __int64 *))(v355 + 24))(&v355); | |
| v24 = 0; | |
| for ( j = v15; ; j += 6LL ) | |
| { | |
| v26 = (__int64)v356 + j; | |
| if ( !*((_BYTE *)v356 + j - 5) ) | |
| goto LABEL_55; | |
| if ( !*(_BYTE *)(v26 - 4) ) | |
| { | |
| v24 |= 1u; | |
| v28 = v21 - v24; | |
| if ( v21 - v24 < 0 ) | |
| goto LABEL_83; | |
| goto LABEL_56; | |
| } | |
| v27 = j - 3; | |
| if ( !*(_BYTE *)(v26 - 3) ) | |
| { | |
| v24 = j - 3; | |
| v28 = v21 - v27; | |
| if ( v21 - (signed int)v27 < 0 ) | |
| goto LABEL_83; | |
| goto LABEL_56; | |
| } | |
| if ( v27 >> 19 ) | |
| { | |
| v24 = 0; | |
| v28 = v21; | |
| if ( v21 < 0 ) | |
| goto LABEL_83; | |
| goto LABEL_56; | |
| } | |
| if ( !*(_BYTE *)(v26 - 2) ) | |
| { | |
| v24 += 3; | |
| v28 = v21 - v24; | |
| if ( v21 - v24 < 0 ) | |
| goto LABEL_83; | |
| goto LABEL_56; | |
| } | |
| if ( !*(_BYTE *)(v26 - 1) ) | |
| break; | |
| if ( !*((_BYTE *)v356 + j) ) | |
| { | |
| v24 += 5; | |
| LABEL_55: | |
| v28 = v21 - v24; | |
| if ( v21 - v24 < 0 ) | |
| goto LABEL_83; | |
| goto LABEL_56; | |
| } | |
| v24 += 6; | |
| } | |
| v24 += 4; | |
| v28 = v21 - v24; | |
| if ( v21 - v24 < 0 ) | |
| goto LABEL_83; | |
| LABEL_56: | |
| if ( v24 >= 0x80000 ) | |
| v29 = 0x80000; | |
| else | |
| v29 = v24; | |
| if ( v24 < 1 ) | |
| { | |
| (*(void (__fastcall **)(unsigned __int64 *))(v355 + 24))(&v355); | |
| v36 = 1; | |
| LABEL_72: | |
| ((void (__fastcall *)(__int64 (__fastcall ***)()))v331[3])(&v331); | |
| v37 = 0; | |
| for ( k = v15; ; k += 6LL ) | |
| { | |
| v39 = (__int64)&v332[k]; | |
| if ( !v332[k - 5] ) | |
| break; | |
| if ( !*(_BYTE *)(v39 - 4) ) | |
| { | |
| v37 |= 1u; | |
| break; | |
| } | |
| if ( !*(_BYTE *)(v39 - 3) ) | |
| { | |
| v37 = k - 3; | |
| break; | |
| } | |
| if ( (unsigned __int64)(k - 3) >> 19 ) | |
| { | |
| v37 = 0; | |
| break; | |
| } | |
| if ( !*(_BYTE *)(v39 - 2) ) | |
| { | |
| v37 += 3; | |
| break; | |
| } | |
| if ( !*(_BYTE *)(v39 - 1) ) | |
| { | |
| v37 += 4; | |
| break; | |
| } | |
| if ( !v332[k] ) | |
| { | |
| v37 += 5; | |
| break; | |
| } | |
| v37 += 6; | |
| } | |
| v41 = (char *)&v332[v36]; | |
| if ( v37 >= v36 ) | |
| v42 = v36 < 0; | |
| else | |
| v42 = 1; | |
| if ( v42 ) | |
| v41 = &byte_71026C7744; | |
| v43 = (unsigned __int8)*v41; | |
| v44 = SHIDWORD(v333); | |
| v9 = (signed int)v336 + 1LL; | |
| v45 = *(_QWORD *)&v330[8 * SHIDWORD(v333)]; | |
| if ( v43 == 58 ) | |
| { | |
| v46 = *(unsigned __int8 *)(v45 + v9); | |
| v47 = HIDWORD(v333)++ + 1; | |
| if ( v46 ) | |
| { | |
| v48 = *(_QWORD *)&v330[8 * v44] + v9; | |
| goto LABEL_117; | |
| } | |
| if ( v47 >= (signed int)v329 ) | |
| { | |
| if ( (_BYTE)v333 ) | |
| sead::system::Print("%s%s%c\n", *(_QWORD *)v330, ": option requires an argument -- ", v20); | |
| LABEL_17: | |
| LODWORD(v9) = 1; | |
| LODWORD(v336) = 1; | |
| } | |
| else | |
| { | |
| HIDWORD(v333) = v44 + 2; | |
| v48 = *(_QWORD *)&v330[8 * v47]; | |
| LABEL_117: | |
| LODWORD(v9) = 1; | |
| v335 = v48; | |
| LODWORD(v336) = 1; | |
| if ( v20 == 108 ) | |
| goto LABEL_118; | |
| LABEL_111: | |
| if ( v20 == 114 ) | |
| { | |
| qword_7102CE0E08 = v48; | |
| } | |
| else if ( v20 == 255 ) | |
| { | |
| goto LABEL_123; | |
| } | |
| } | |
| } | |
| else | |
| { | |
| LODWORD(v336) = v336 + 1; | |
| if ( !*(_BYTE *)(v45 + v9) ) | |
| { | |
| LODWORD(v9) = 1; | |
| LODWORD(v336) = 1; | |
| ++HIDWORD(v333); | |
| } | |
| v48 = 0LL; | |
| v335 = 0LL; | |
| if ( v20 != 108 ) | |
| goto LABEL_111; | |
| LABEL_118: | |
| qword_7102CE0E10 = v48; | |
| } | |
| } | |
| else | |
| { | |
| v30 = 0LL; | |
| v31 = v29; | |
| v327 = v28; | |
| while ( 1 ) | |
| { | |
| v32 = v15; | |
| v33 = (__int64)&v332[v30]; | |
| (*(void (__fastcall **)(unsigned __int64 *))(v355 + 24))(&v355); | |
| if ( (unsigned int *)v33 == v356 ) | |
| break; | |
| v34 = 0LL; | |
| while ( *(unsigned __int8 *)(v33 + v34) == *((unsigned __int8 *)v356 + v34) ) | |
| { | |
| if ( *(_BYTE *)(v33 + v34) ) | |
| { | |
| if ( ++v34 < v31 ) | |
| continue; | |
| } | |
| goto LABEL_69; | |
| } | |
| v35 = __OFSUB__(v30, v327); | |
| v42 = v30++ - v327 < 0; | |
| v15 = v32; | |
| if ( !(v42 ^ v35) ) | |
| goto LABEL_83; | |
| } | |
| LABEL_69: | |
| v15 = v32; | |
| if ( (_DWORD)v30 != -1 ) | |
| { | |
| v36 = v30 + 1; | |
| goto LABEL_72; | |
| } | |
| LABEL_83: | |
| if ( (_BYTE)v333 ) | |
| sead::system::Print("%s%s%c\n", *(_QWORD *)v330, ": illegal option -- ", v20); | |
| v9 = (signed int)v336 + 1LL; | |
| v40 = *(_QWORD *)&v330[8 * SHIDWORD(v333)]; | |
| LODWORD(v336) = v336 + 1; | |
| if ( !*(_BYTE *)(v40 + v9) ) | |
| { | |
| ++HIDWORD(v333); | |
| goto LABEL_17; | |
| } | |
| } | |
| } | |
| if ( SHIDWORD(v333) < (signed int)v329 ) | |
| { | |
| v16 = *(char **)&v330[8 * SHIDWORD(v333)]; | |
| if ( *v16 == 45 ) | |
| { | |
| if ( v16[1] ) | |
| { | |
| if ( v16 != "--" ) | |
| { | |
| v17 = 1LL; | |
| LOBYTE(v18) = 45; | |
| while ( (_BYTE)v18 ) | |
| { | |
| if ( v17 < 0x80001 ) | |
| { | |
| v18 = (unsigned __int8)v16[v17]; | |
| v19 = (unsigned __int8)asc_71026B1B35[v17++]; | |
| if ( v18 == v19 ) | |
| continue; | |
| } | |
| goto LABEL_29; | |
| } | |
| } | |
| ++HIDWORD(v333); | |
| } | |
| } | |
| } | |
| LOBYTE(v334) = -1; | |
| LABEL_123: | |
| v49 = 0; | |
| do | |
| { | |
| v50 = *(char **)&v14[8 * v49]; | |
| v51 = v49; | |
| if ( v50 == "-fhd" ) | |
| { | |
| LABEL_134: | |
| HIBYTE(word_7102CE0DF8) = 1; | |
| v50 = *(char **)&v14[8 * v49]; | |
| } | |
| else | |
| { | |
| v52 = 1LL; | |
| do | |
| { | |
| if ( v50[v52 - 1] != aFhd[v52 - 1] ) | |
| break; | |
| if ( !v50[v52 - 1] ) | |
| goto LABEL_134; | |
| if ( v50[v52] != aFhd[v52] ) | |
| break; | |
| if ( !v50[v52] ) | |
| goto LABEL_134; | |
| if ( v50[v52 + 1] != aFhd[v52 + 1] ) | |
| break; | |
| if ( !v50[v52 + 1] ) | |
| goto LABEL_134; | |
| v53 = v52 + 2; | |
| v52 += 3LL; | |
| } | |
| while ( v53 < 0x80001 ); | |
| } | |
| if ( v50 == "-no_sead_log" ) | |
| { | |
| LABEL_145: | |
| LOBYTE(word_7102CE0DF8) = 1; | |
| v50 = *(char **)&v14[8 * v49]; | |
| } | |
| else | |
| { | |
| v54 = 1LL; | |
| do | |
| { | |
| if ( v50[v54 - 1] != aNoSeadLog[v54 - 1] ) | |
| break; | |
| if ( !v50[v54 - 1] ) | |
| goto LABEL_145; | |
| if ( v50[v54] != aNoSeadLog[v54] ) | |
| break; | |
| if ( !v50[v54] ) | |
| goto LABEL_145; | |
| if ( v50[v54 + 1] != aNoSeadLog[v54 + 1] ) | |
| break; | |
| if ( !v50[v54 + 1] ) | |
| goto LABEL_145; | |
| v55 = v54 + 2; | |
| v54 += 3LL; | |
| } | |
| while ( v55 < 0x80001 ); | |
| } | |
| if ( v50 == "-out" ) | |
| { | |
| LABEL_156: | |
| ++v49; | |
| qword_7102CE0E00 = *(_QWORD *)&v14[8 * (v51 + 1)]; | |
| } | |
| else | |
| { | |
| v56 = 0LL; | |
| do | |
| { | |
| if ( v50[v56] != aOut[v56] ) | |
| break; | |
| if ( !v50[v56] ) | |
| goto LABEL_156; | |
| if ( v50[v56 + 1] != aOut[v56 + 1] ) | |
| break; | |
| if ( !v50[v56 + 1] ) | |
| goto LABEL_156; | |
| if ( v50[v56 + 2] != aOut[v56 + 2] ) | |
| break; | |
| if ( !v50[v56 + 2] ) | |
| goto LABEL_156; | |
| v56 += 3LL; | |
| } | |
| while ( v56 < 0x80001 ); | |
| } | |
| ++v49; | |
| } | |
| while ( v49 < v12 ); | |
| LABEL_158: | |
| nn::os::SetUserExceptionHandler(sub_7101A450F0, 0LL, 0LL, 0LL); | |
| nn::diag::InitializeAbortObserverHolder(&unk_7102CE0E58, sub_7101A45C80); | |
| nn::diag::RegisterAbortObserver(&unk_7102CE0E58); | |
| nn::oe::SetResumeNotificationEnabled((nn::oe *)1, v57); | |
| nn::oe::SetOperationModeChangedNotificationEnabled((nn::oe *)1, v58); | |
| nn::oe::SetPerformanceModeChangedNotificationEnabled((nn::oe *)1, v59); | |
| nn::oe::SetFocusHandlingMode(2LL); | |
| nn::os::LockMutex(&unk_7102CBEFE8); | |
| qword_7102CBF010 = (__int64)&unk_7102CBEF50; | |
| nn::os::AllocateMemoryBlock((nn::os *)&unk_7102CBEF50, (unsigned __int64 *)0xC1000000LL, v60); | |
| qword_7102CBEF48 = 0LL; | |
| qword_7102D22078 = ((signed __int64)((unsigned __int128)(qword_7102CBFBA8 * (signed __int128)3022314549036572937LL) >> 64) >> 14) | |
| + ((unsigned __int64)((unsigned __int128)(qword_7102CBFBA8 * (signed __int128)3022314549036572937LL) >> 64) >> 63); | |
| qword_7102CBEF58 = 3238002688LL; | |
| v61 = *(_QWORD *)qword_7102CBF010; | |
| v62 = *(_QWORD *)(qword_7102CBF010 + 8); | |
| v329 = &off_7102A6E6C0; | |
| v330 = "RootHeap"; | |
| v63 = sub_710125D030(v61, v62, &v329); | |
| if ( dword_7102CBEF68 < *(_DWORD *)algn_7102CBEF6C ) | |
| *(_QWORD *)(qword_7102CBEF70 + 8LL * dword_7102CBEF68++) = v63; | |
| qword_7102CBF018 = (__int64)&qword_7102CBEF38; | |
| nn::os::UnlockMutex(&unk_7102CBEFE8); | |
| if ( dword_7102CBEF68 ) | |
| v64 = *(_QWORD *)qword_7102CBEF70; | |
| else | |
| v64 = 0LL; | |
| v329 = &off_7102A6E6C0; | |
| v330 = "sead::ThreadMgr"; | |
| v65 = (nn::os *)sub_710125CD50(0LL, &v329, v64, 8LL, 1LL, 0LL); | |
| v66 = qword_7102CBF648; | |
| v67 = v65; | |
| if ( !qword_7102CBF648 ) | |
| { | |
| v68 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| if ( v65 ) | |
| goto LABEL_493; | |
| v69 = nn::os::GetTlsValue(MEMORY[0x88]); | |
| v70 = (nn::os **)(v69 + 176); | |
| if ( !v69 ) | |
| v70 = (nn::os **)(v68 + 8); | |
| v65 = *v70; | |
| if ( *v70 ) | |
| { | |
| LABEL_493: | |
| v71 = (*(__int64 (**)(void))(*(_QWORD *)v65 + 48LL))(); | |
| goto LABEL_171; | |
| } | |
| v66 = 0LL; | |
| } | |
| else | |
| { | |
| v71 = malloc(0x90uLL); | |
| LABEL_171: | |
| v66 = v71; | |
| } | |
| sub_710125A550(v66 + 8, v67, 3LL); | |
| *(_QWORD *)(v66 + 8) = &off_7102BB4720; | |
| qword_7102CBF650 = v66 + 8; | |
| *(_QWORD *)v66 = off_7102BB48E0; | |
| *(_DWORD *)(v66 + 56) = 0; | |
| *(_QWORD *)(v66 + 40) = v66 + 40; | |
| *(_QWORD *)(v66 + 48) = v66 + 40; | |
| sub_710126C630(v66 + 64); | |
| *(_QWORD *)(v66 + 128) = 0LL; | |
| v65 = (nn::os *)nn::os::AllocateTlsSlot(v66 + 136, 0LL); | |
| qword_7102CBF648 = v66; | |
| } | |
| v72 = (nn::os *)nn::os::GetCurrentThread(v65); | |
| v73 = v72; | |
| v74 = nn::os::GetCurrentThread(v72); | |
| nn::os::ChangeThreadPriority(v74, 16LL); | |
| v75 = nn::os::GetThreadId(v73); | |
| v76 = qword_7102CBF018; | |
| v77 = v75; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v78 = v67; | |
| if ( v67 ) | |
| goto LABEL_494; | |
| v79 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v80 = (nn::os **)(v79 + 176); | |
| if ( !v79 ) | |
| v80 = (nn::os **)(v76 + 8); | |
| v78 = *v80; | |
| if ( *v80 ) | |
| LABEL_494: | |
| v81 = (*(__int64 (**)(void))(*(_QWORD *)v78 + 48LL))(); | |
| else | |
| v81 = 0LL; | |
| v82 = qword_7102CBF018; | |
| *(_QWORD *)(v81 + 16) = 0LL; | |
| *(_QWORD *)(v81 + 24) = 0LL; | |
| *(_QWORD *)v81 = &off_7102BB3CD8; | |
| *(_QWORD *)(v81 + 8) = 0LL; | |
| if ( v82 ) | |
| { | |
| v83 = sub_710125F180(v81); | |
| *(_QWORD *)(v81 + 8) = v83; | |
| if ( v83 ) | |
| { | |
| v84 = v83; | |
| if ( *(_BYTE *)(v83 + 216) & 1 ) | |
| { | |
| v85 = v83 + 152; | |
| nn::os::LockMutex(v83 + 184); | |
| } | |
| else | |
| { | |
| v85 = 0LL; | |
| } | |
| v86 = *(_QWORD *)(v84 + 120); | |
| v87 = (_QWORD *)(*(signed int *)(v84 + 140) + v81); | |
| *(_QWORD *)(v84 + 120) = v87; | |
| *v87 = v86; | |
| v87[1] = v84 + 120; | |
| if ( v86 ) | |
| *(_QWORD *)(v86 + 8) = v87; | |
| ++*(_DWORD *)(v84 + 136); | |
| if ( v85 ) | |
| nn::os::UnlockMutex(v85 + 32); | |
| } | |
| } | |
| } | |
| else | |
| { | |
| v81 = malloc(0x100uLL); | |
| *(_QWORD *)(v81 + 16) = 0LL; | |
| *(_QWORD *)(v81 + 24) = 0LL; | |
| *(_QWORD *)v81 = &off_7102BB3CD8; | |
| *(_QWORD *)(v81 + 8) = 0LL; | |
| } | |
| *(_QWORD *)v81 = &off_7102BB4660; | |
| *(_QWORD *)(v81 + 128) = 0LL; | |
| *(_QWORD *)(v81 + 32) = &off_7102A6E6C0; | |
| *(_QWORD *)(v81 + 40) = "sead::MainThread"; | |
| *(_QWORD *)(v81 + 48) = &off_7102BB4708; | |
| v88 = *((_QWORD *)v73 + 11); | |
| *(_QWORD *)(v81 + 168) = 0LL; | |
| *(_QWORD *)(v81 + 176) = 0LL; | |
| *(_DWORD *)(v81 + 136) = v88; | |
| *(_QWORD *)(v81 + 152) = 0LL; | |
| *(_QWORD *)(v81 + 160) = 0LL; | |
| *(_QWORD *)(v81 + 144) = 0LL; | |
| *(_QWORD *)(v81 + 184) = 0LL; | |
| *(_DWORD *)(v81 + 192) = 1; | |
| *(_QWORD *)(v81 + 200) = 0x7FFFFFFFLL; | |
| *(_DWORD *)(v81 + 208) = v77; | |
| *(_DWORD *)(v81 + 212) = 1; | |
| LODWORD(v329) = 0; | |
| *(_DWORD *)(v81 + 216) = 1; | |
| *(_QWORD *)(v81 + 224) = v73; | |
| *(_QWORD *)(v81 + 232) = 0LL; | |
| *(_QWORD *)(v81 + 240) = 0LL; | |
| *(_DWORD *)(v81 + 248) = nn::os::GetThreadPriority(v73); | |
| *(_QWORD *)(v81 + 160) = v81; | |
| v89 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v90 = v67; | |
| if ( v67 ) | |
| goto LABEL_495; | |
| v91 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v92 = (nn::os **)(v91 + 176); | |
| if ( !v91 ) | |
| v92 = (nn::os **)(v89 + 8); | |
| v90 = *v92; | |
| if ( *v92 ) | |
| { | |
| LABEL_495: | |
| v93 = (*(__int64 (**)(void))(*(_QWORD *)v90 + 48LL))(); | |
| goto LABEL_196; | |
| } | |
| v94 = 0LL; | |
| } | |
| else | |
| { | |
| v93 = malloc(0x100uLL); | |
| LABEL_196: | |
| v94 = v93; | |
| } | |
| *(_QWORD *)(v81 + 128) = v94; | |
| nn::os::InitializeMessageQueue(v81 + 56); | |
| v96 = (nn::os *)nn::os::GetCurrentStackInfo((nn::os *)&v329, &v355, v95); | |
| *(_QWORD *)(v81 + 240) = v329; | |
| *(_DWORD *)(v81 + 136) = v355; | |
| v97 = *(unsigned int *)(v81 + 216); | |
| nn::os::GetThreadAvailableCoreMask(v96); | |
| nn::os::SetThreadCoreMask(*(_QWORD *)(v81 + 224), 0xFFFFFFFFLL, v97); | |
| *(_QWORD *)v81 = off_7102BB4740; | |
| *(_QWORD *)(v81 + 48) = &off_7102BB47E8; | |
| v98 = *(unsigned int *)(v66 + 136); | |
| *(_QWORD *)(v66 + 128) = v81; | |
| v99 = (nn::os *)nn::os::SetTlsValue(v98, v81); | |
| v100 = (unsigned int)dword_7102CBFC34; | |
| v101 = nn::os::GetCurrentCoreNumber(v99); | |
| nn::os::SetTlsValue(v100, v101 + 1); | |
| (*(void (__fastcall **)(nn::os *))(*(_QWORD *)v67 + 40LL))(v67); | |
| if ( !qword_7102CBF798 ) | |
| { | |
| v102 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v103 = v64; | |
| if ( v64 ) | |
| goto LABEL_496; | |
| v104 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v105 = (__int64 *)(v104 + 176); | |
| if ( !v104 ) | |
| v105 = (__int64 *)(v102 + 8); | |
| v103 = *v105; | |
| if ( *v105 ) | |
| { | |
| LABEL_496: | |
| v106 = (*(__int64 (**)(void))(*(_QWORD *)v103 + 48LL))(); | |
| goto LABEL_205; | |
| } | |
| v107 = 0LL; | |
| } | |
| else | |
| { | |
| v106 = malloc(0x30uLL); | |
| LABEL_205: | |
| v107 = v106; | |
| } | |
| v108 = (nn::os *)sub_710125A550(v107 + 16, v64, 3LL); | |
| *(_QWORD *)(v107 + 16) = &off_7102BB4F88; | |
| qword_7102CBF790 = v107 + 16; | |
| v109 = nn::os::GetSystemTick(v108); | |
| v110 = 1812433253 * (v109 ^ (v109 >> 30)) + 1; | |
| v111 = 1812433253 * (v110 ^ (v110 >> 30)) + 2; | |
| v112 = 1812433253 * (v111 ^ (v111 >> 30)) + 3; | |
| *(_DWORD *)v107 = v110; | |
| *(_DWORD *)(v107 + 4) = v111; | |
| *(_DWORD *)(v107 + 8) = v112; | |
| *(_DWORD *)(v107 + 12) = 1812433253 * (v112 ^ (v112 >> 30)) + 4; | |
| qword_7102CBF798 = v107; | |
| } | |
| v113 = (_QWORD **)&unk_7102CBE000; | |
| v114 = *(_QWORD *)qword_7102CBEF70; | |
| v115 = (*(__int64 (__fastcall **)(_QWORD, signed __int64))(**(_QWORD **)qword_7102CBEF70 + 128LL))( | |
| *(_QWORD *)qword_7102CBEF70, | |
| 8LL); | |
| v329 = &off_7102A6E6C0; | |
| v330 = "sead::SystemManagers"; | |
| v116 = 1LL; | |
| v117 = sub_710125CD50(v115, &v329, v114, 8LL, 1LL, 0LL); | |
| v118 = v117; | |
| v119 = (*(__int64 (**)(void))(*(_QWORD *)v117 + 128LL))(); | |
| v329 = &off_7102A6E6C0; | |
| v330 = "sead::ResourceMgr"; | |
| v120 = sub_710125CD50(v119, &v329, v118, 8LL, 1LL, 0LL); | |
| if ( v120 ) | |
| { | |
| v121 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v116 = *(_QWORD *)(v121 + 176); | |
| *(_QWORD *)(v121 + 176) = v120; | |
| } | |
| if ( !qword_7102CBF138 ) | |
| { | |
| v122 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v123 = v120; | |
| if ( v120 ) | |
| goto LABEL_497; | |
| v124 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v125 = (__int64 *)(v124 + 176); | |
| if ( !v124 ) | |
| v125 = (__int64 *)(v122 + 8); | |
| v123 = *v125; | |
| if ( *v125 ) | |
| { | |
| LABEL_497: | |
| v126 = (*(__int64 (**)(void))(*(_QWORD *)v123 + 48LL))(); | |
| goto LABEL_217; | |
| } | |
| v127 = 0LL; | |
| } | |
| else | |
| { | |
| v126 = malloc(0x60uLL); | |
| LABEL_217: | |
| v127 = v126; | |
| } | |
| sub_710125A550(v127, v120, 3LL); | |
| *(_QWORD *)v127 = &off_7102BB4208; | |
| qword_7102CBF130 = v127; | |
| v128 = (__int64 *)(v127 + 32); | |
| *(_DWORD *)(v127 + 48) = 0; | |
| *(_DWORD *)(v127 + 72) = 0; | |
| *(_QWORD *)(v127 + 32) = v127 + 32; | |
| *(_QWORD *)(v127 + 40) = v127 + 32; | |
| *(_QWORD *)(v127 + 56) = v127 + 56; | |
| *(_QWORD *)(v127 + 64) = v127 + 56; | |
| *(_QWORD *)(v127 + 80) = 0LL; | |
| *(_QWORD *)(v127 + 88) = 0LL; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v129 = sub_710125F180(v127); | |
| v130 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| if ( v129 ) | |
| goto LABEL_498; | |
| v131 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v132 = (__int64 *)(v131 + 176); | |
| if ( !v131 ) | |
| v132 = (__int64 *)(v130 + 8); | |
| v129 = *v132; | |
| if ( *v132 ) | |
| { | |
| LABEL_498: | |
| v133 = (*(__int64 (**)(void))(*(_QWORD *)v129 + 48LL))(); | |
| goto LABEL_228; | |
| } | |
| v134 = 0LL; | |
| } | |
| else | |
| { | |
| v133 = malloc(0x78uLL); | |
| LABEL_228: | |
| v134 = v133; | |
| } | |
| *(_QWORD *)(v134 + 32) = 0LL; | |
| v135 = (__int64 *)(v134 + 32); | |
| *(_QWORD *)(v134 + 40) = 0LL; | |
| *(_QWORD *)(v134 + 48) = v134; | |
| *(_QWORD *)(v134 + 56) = 0LL; | |
| *(_QWORD *)(v134 + 16) = 0LL; | |
| *(_QWORD *)(v134 + 24) = 0LL; | |
| *(_QWORD *)v134 = &off_7102BB3CD8; | |
| *(_QWORD *)(v134 + 8) = 0LL; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v136 = sub_710125F180(v134); | |
| *(_QWORD *)(v134 + 8) = v136; | |
| if ( v136 ) | |
| { | |
| v137 = v136; | |
| if ( *(_BYTE *)(v136 + 216) & 1 ) | |
| { | |
| v138 = v136 + 152; | |
| nn::os::LockMutex(v136 + 184); | |
| } | |
| else | |
| { | |
| v138 = 0LL; | |
| } | |
| v139 = *(_QWORD *)(v137 + 120); | |
| v140 = (_QWORD *)(*(signed int *)(v137 + 140) + v134); | |
| *(_QWORD *)(v137 + 120) = v140; | |
| *v140 = v139; | |
| v140[1] = v137 + 120; | |
| if ( v139 ) | |
| *(_QWORD *)(v139 + 8) = v140; | |
| ++*(_DWORD *)(v137 + 136); | |
| if ( v138 ) | |
| nn::os::UnlockMutex(v138 + 32); | |
| } | |
| } | |
| *(_BYTE *)(v134 + 84) = 0; | |
| *(_QWORD *)(v134 + 64) = &off_7102A701C8; | |
| *(_QWORD *)(v134 + 72) = v134 + 84; | |
| *(_DWORD *)(v134 + 80) = 32; | |
| *(_BYTE *)(v134 + 115) = 0; | |
| *(_QWORD *)v134 = off_7102BB4228; | |
| *(_QWORD *)(v127 + 80) = v134; | |
| *(_QWORD *)(v127 + 88) = v134; | |
| v141 = *(__int16 **)(v134 + 72); | |
| if ( v141 != &word_7102711714 ) | |
| { | |
| v142 = *(_DWORD *)(v134 + 80); | |
| if ( v142 <= 0 ) | |
| v143 = v142 - 1; | |
| else | |
| v143 = 0; | |
| v144 = v143; | |
| memset_0(*(_QWORD *)(v134 + 72), 0LL, v143); | |
| *((_BYTE *)v141 + v144) = 0; | |
| } | |
| v145 = *(_QWORD *)(v134 + 56); | |
| if ( v145 ) | |
| { | |
| v146 = *(_QWORD *)(v134 + 32); | |
| v147 = (__int64 **)(v134 + 40); | |
| *(_QWORD *)(v134 + 56) = 0LL; | |
| if ( v146 ) | |
| *(_QWORD *)(v146 + 8) = *v147; | |
| if ( *v147 ) | |
| **v147 = *v135; | |
| *v135 = 0LL; | |
| *(_QWORD *)(v134 + 40) = 0LL; | |
| --*(_DWORD *)(v145 + 16); | |
| } | |
| else | |
| { | |
| v147 = (__int64 **)(v134 + 40); | |
| } | |
| *(_QWORD *)(v134 + 56) = v128; | |
| v148 = *v128; | |
| *v128 = (__int64)v135; | |
| *(_QWORD *)(v134 + 32) = v148; | |
| *v147 = v128; | |
| if ( v148 ) | |
| *(_QWORD *)(v148 + 8) = v135; | |
| v113 = (_QWORD **)&unk_7102CBE000; | |
| ++*(_DWORD *)(v127 + 48); | |
| } | |
| qword_7102CBF138 = v127; | |
| } | |
| (*(void (__fastcall **)(__int64))(*(_QWORD *)v120 + 40LL))(v120); | |
| if ( v116 != 1 ) | |
| *(_QWORD *)(nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)) + 176) = v116; | |
| v149 = (*(__int64 (__fastcall **)(__int64, signed __int64))(*(_QWORD *)v118 + 128LL))(v118, 8LL); | |
| v329 = &off_7102A6E6C0; | |
| v330 = "sead::FileDeviceMgr"; | |
| v150 = 1LL; | |
| v151 = sub_710125CD50(v149, &v329, v118, 8LL, 1LL, 0LL); | |
| if ( v151 ) | |
| { | |
| v152 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v150 = *(_QWORD *)(v152 + 176); | |
| *(_QWORD *)(v152 + 176) = v151; | |
| } | |
| if ( !qword_7102CBEE58 ) | |
| { | |
| v153 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v154 = v151; | |
| if ( v151 ) | |
| goto LABEL_499; | |
| v155 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v156 = (__int64 *)(v155 + 176); | |
| if ( !v155 ) | |
| v156 = (__int64 *)(v153 + 8); | |
| v154 = *v156; | |
| if ( *v156 ) | |
| { | |
| LABEL_499: | |
| v157 = (*(__int64 (**)(void))(*(_QWORD *)v154 + 48LL))(); | |
| goto LABEL_266; | |
| } | |
| v158 = 0LL; | |
| } | |
| else | |
| { | |
| v157 = malloc(0x58uLL); | |
| LABEL_266: | |
| v158 = v157; | |
| } | |
| sub_710125A550(v158, v151, 3LL); | |
| *(_QWORD *)v158 = &off_7102BB2E28; | |
| qword_7102CBEE50 = v158; | |
| *(_DWORD *)(v158 + 48) = 0; | |
| *(_QWORD *)(v158 + 32) = v158 + 32; | |
| *(_QWORD *)(v158 + 40) = v158 + 32; | |
| *(_WORD *)(v158 + 80) = 0; | |
| *(_QWORD *)(v158 + 56) = 0LL; | |
| *(_QWORD *)(v158 + 64) = 0LL; | |
| *(_QWORD *)(v158 + 72) = 0LL; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v159 = sub_710125F180(v158); | |
| v329 = 0LL; | |
| nn::fs::QueryMountRomCacheSize((nn::fs *)&v329, v160); | |
| v161 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v162 = v159; | |
| if ( v159 ) | |
| goto LABEL_500; | |
| v163 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v165 = (__int64 *)(v163 + 176); | |
| if ( !v163 ) | |
| v165 = (__int64 *)(v161 + 8); | |
| v162 = *v165; | |
| if ( *v165 ) | |
| { | |
| LABEL_500: | |
| v166 = (*(__int64 (**)(void))(*(_QWORD *)v162 + 48LL))(); | |
| goto LABEL_275; | |
| } | |
| v167 = 0LL; | |
| } | |
| else | |
| { | |
| v166 = malloc((unsigned __int64)v329); | |
| LABEL_275: | |
| v167 = (const char *)v166; | |
| } | |
| *(_QWORD *)(v158 + 72) = v167; | |
| nn::fs::MountRom((nn::fs *)"content", v167, v329, v164); | |
| v168 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v169 = v159; | |
| if ( v159 ) | |
| goto LABEL_501; | |
| v170 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v171 = (__int64 *)(v170 + 176); | |
| if ( !v170 ) | |
| v171 = (__int64 *)(v168 + 8); | |
| v169 = *v171; | |
| if ( *v171 ) | |
| { | |
| LABEL_501: | |
| v172 = (*(__int64 (**)(void))(*(_QWORD *)v169 + 48LL))(); | |
| goto LABEL_283; | |
| } | |
| v173 = 0LL; | |
| } | |
| else | |
| { | |
| v172 = malloc(0x88uLL); | |
| LABEL_283: | |
| v173 = v172; | |
| } | |
| sub_710124C770(v173, v159); | |
| *(_QWORD *)(v158 + 64) = v173; | |
| sub_710124C290(v158, v173, &off_7102BB4150); | |
| *(_QWORD *)(v158 + 56) = *(_QWORD *)(v158 + 64); | |
| } | |
| v113 = (_QWORD **)&unk_7102CBE000; | |
| qword_7102CBEE58 = v158; | |
| } | |
| (*(void (__fastcall **)(__int64))(*(_QWORD *)v151 + 40LL))(v151); | |
| if ( v150 != 1 ) | |
| *(_QWORD *)(nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)) + 176) = v150; | |
| v174 = (nn::oe *)(*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v118 + 40LL))(v118); | |
| nn::oe::Initialize(v174); | |
| nn::oe::SetPerformanceConfiguration(0LL, 2451701768LL); | |
| if ( dword_7102CBEF68 ) | |
| v175 = (nn::os *)*v113[494]; | |
| else | |
| v175 = 0LL; | |
| v329 = &off_7102A6E6C0; | |
| v330 = "GameConfig"; | |
| v176 = sub_710125CD50(0LL, &v329, v175, 8LL, 1LL, 0LL); | |
| v177 = v176; | |
| if ( !qword_7102CA47A8 ) | |
| { | |
| v178 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| if ( v176 ) | |
| goto LABEL_502; | |
| v179 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v180 = (__int64 *)(v179 + 176); | |
| if ( !v179 ) | |
| v180 = (__int64 *)(v178 + 8); | |
| v176 = *v180; | |
| if ( *v180 ) | |
| { | |
| LABEL_502: | |
| v181 = (*(__int64 (**)(void))(*(_QWORD *)v176 + 48LL))(); | |
| goto LABEL_299; | |
| } | |
| v182 = 0LL; | |
| } | |
| else | |
| { | |
| v181 = malloc(0x840uLL); | |
| LABEL_299: | |
| v182 = v181; | |
| } | |
| sub_710125A550(v182 + 1696, v177, 3LL); | |
| *(_QWORD *)(v182 + 1696) = &off_7102B7DDC0; | |
| qword_7102CA47A0 = v182 + 1696; | |
| memset_0(v182 + 40, 0LL, 312LL); | |
| *(_QWORD *)v182 = off_7102BFFC28; | |
| *(_QWORD *)(v182 + 408) = &off_7102A7A300; | |
| *(_QWORD *)(v182 + 416) = v182 + 428; | |
| *(_QWORD *)(v182 + 688) = 0x1000000000000LL; | |
| *(_QWORD *)(v182 + 704) = v182 + 716; | |
| *(_DWORD *)(v182 + 980) = -1; | |
| *(_QWORD *)(v182 + 1000) = v182 + 1012; | |
| *(_DWORD *)(v182 + 1008) = 32; | |
| *(_QWORD *)(v182 + 992) = &off_7102A701C8; | |
| *(_QWORD *)(v182 + 1064) = v182 + 1076; | |
| *(_QWORD *)(v182 + 1344) = v182 + 1356; | |
| *(_QWORD *)(v182 + 1624) = v182 + 1636; | |
| *(_DWORD *)(v182 + 1632) = 16; | |
| *(_QWORD *)(v182 + 384) = &off_7102BFFC70; | |
| *(_QWORD *)(v182 + 392) = 0LL; | |
| *(_BYTE *)(v182 + 400) = 0; | |
| *(_DWORD *)(v182 + 424) = 256; | |
| *(_BYTE *)(v182 + 683) = 0; | |
| *(_QWORD *)(v182 + 1616) = &off_7102A70140; | |
| *(_BYTE *)(v182 + 428) = 0; | |
| *(_DWORD *)(v182 + 712) = 256; | |
| *(_BYTE *)(v182 + 971) = 0; | |
| *(_BYTE *)(v182 + 716) = 0; | |
| *(_QWORD *)(v182 + 696) = &off_7102A7A300; | |
| *(_BYTE *)(v182 + 976) = 0; | |
| *(_WORD *)(v182 + 988) = 0; | |
| *(_DWORD *)(v182 + 984) = 0; | |
| *(_BYTE *)(v182 + 1043) = 0; | |
| *(_BYTE *)(v182 + 1012) = 0; | |
| *(_WORD *)(v182 + 1048) = 0; | |
| *(_DWORD *)(v182 + 1072) = 256; | |
| *(_BYTE *)(v182 + 1331) = 0; | |
| *(_BYTE *)(v182 + 1076) = 0; | |
| *(_QWORD *)(v182 + 1056) = &off_7102A7A300; | |
| *(_DWORD *)(v182 + 1352) = 256; | |
| *(_BYTE *)(v182 + 1611) = 0; | |
| *(_BYTE *)(v182 + 1356) = 0; | |
| *(_QWORD *)(v182 + 1336) = &off_7102A7A300; | |
| *(_BYTE *)(v182 + 1651) = 0; | |
| *(_BYTE *)(v182 + 1636) = 0; | |
| *(_WORD *)(v182 + 1656) = 0; | |
| qword_7102CE0E78 = v182; | |
| *(_BYTE *)(v182 + 985) = 1; | |
| *(_BYTE *)(v182 + 977) = 0; | |
| *(_QWORD *)(v182 + 1664) = &off_7102BB3CD8; | |
| *(_QWORD *)(v182 + 1688) = 0LL; | |
| *(_QWORD *)(v182 + 1680) = 0LL; | |
| *(_QWORD *)(v182 + 1672) = 0LL; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v183 = sub_710125F180(v182 + 1664); | |
| *(_QWORD *)(v182 + 1672) = v183; | |
| if ( v183 ) | |
| { | |
| v184 = v183; | |
| if ( *(_BYTE *)(v183 + 216) & 1 ) | |
| { | |
| v185 = v183 + 152; | |
| nn::os::LockMutex(v183 + 184); | |
| } | |
| else | |
| { | |
| v185 = 0LL; | |
| } | |
| v186 = *(_QWORD *)(v184 + 120); | |
| v187 = (_QWORD *)(*(signed int *)(v184 + 140) + v182 + 1664); | |
| *(_QWORD *)(v184 + 120) = v187; | |
| *v187 = v186; | |
| v187[1] = v184 + 120; | |
| if ( v186 ) | |
| *(_QWORD *)(v186 + 8) = v187; | |
| ++*(_DWORD *)(v184 + 136); | |
| if ( v185 ) | |
| nn::os::UnlockMutex(v185 + 32); | |
| } | |
| } | |
| *(_QWORD *)v182 = off_7102B7DDE0; | |
| *(_QWORD *)(v182 + 1664) = off_7102B7DE28; | |
| *(_DWORD *)(v182 + 1728) = 0; | |
| *(_BYTE *)(v182 + 1732) = 0; | |
| *(_QWORD *)(v182 + 1744) = v182 + 1756; | |
| *(_DWORD *)(v182 + 1752) = 256; | |
| *(_BYTE *)(v182 + 2011) = 0; | |
| *(_BYTE *)(v182 + 1756) = 0; | |
| *(_QWORD *)(v182 + 1736) = &off_7102A7A300; | |
| *(_BYTE *)(v182 + 2016) = 0; | |
| *(_QWORD *)(v182 + 2025) = 0LL; | |
| *(_QWORD *)(v182 + 2020) = 0LL; | |
| *(_QWORD *)(v182 + 2043) = 0LL; | |
| *(_QWORD *)(v182 + 2036) = 0LL; | |
| *(_QWORD *)(v182 + 2052) = 0xFFFFFFFFLL; | |
| *(_WORD *)(v182 + 2060) = 257; | |
| *(_QWORD *)(v182 + 2104) = 0LL; | |
| *(_QWORD *)(v182 + 2069) = 0LL; | |
| *(_QWORD *)(v182 + 2062) = 0LL; | |
| *(_QWORD *)(v182 + 2095) = 0LL; | |
| *(_QWORD *)(v182 + 2088) = 0LL; | |
| *(_QWORD *)(v182 + 2080) = 0LL; | |
| qword_7102CA47A8 = v182; | |
| } | |
| (*(void (__fastcall **)(__int64))(*(_QWORD *)v177 + 40LL))(v177); | |
| if ( !qword_7102CA49B8 ) | |
| { | |
| v188 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v189 = v175; | |
| if ( v175 ) | |
| goto LABEL_503; | |
| v190 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v191 = (nn::os **)(v190 + 176); | |
| if ( !v190 ) | |
| v191 = (nn::os **)(v188 + 8); | |
| v189 = *v191; | |
| if ( *v191 ) | |
| { | |
| LABEL_503: | |
| v192 = (*(__int64 (**)(void))(*(_QWORD *)v189 + 48LL))(); | |
| goto LABEL_318; | |
| } | |
| v193 = 0LL; | |
| } | |
| else | |
| { | |
| v192 = malloc(0x30uLL); | |
| LABEL_318: | |
| v193 = v192; | |
| } | |
| sub_710125A550(v193 + 8, v175, 3LL); | |
| *(_QWORD *)(v193 + 8) = &off_7102B7E2D8; | |
| qword_7102CA49B0 = v193 + 8; | |
| *(_QWORD *)v193 = &off_7102B7E2F8; | |
| *(_DWORD *)(v193 + 40) = 0x10000; | |
| *(_BYTE *)(v193 + 44) = 0; | |
| qword_7102CA49B8 = v193; | |
| } | |
| qword_7102CBEED0 = (__int64)sub_71010719C0; | |
| v194 = __ldar((unsigned __int8 *)&unk_7102CBE000); | |
| if ( !((unsigned __int64)&unk_7102CBE000 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_7102CCEB08) ) | |
| { | |
| qword_7102CCEB10 = 4638564681600LL; | |
| _cxa_guard_release_0(&unk_7102CCEB08); | |
| } | |
| v195 = qword_7102CCEB10; | |
| v196 = __ldar((unsigned __int8 *)&qword_7102CCDFFC + 4); | |
| if ( !(((unsigned __int64)&qword_7102CCDFFC + 4) & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_7102CCEB08) ) | |
| { | |
| qword_7102CCEB10 = 4638564681600LL; | |
| _cxa_guard_release_0(&unk_7102CCEB08); | |
| } | |
| v197 = HIDWORD(qword_7102CCEB10); | |
| v198 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v199 = v175; | |
| if ( v175 ) | |
| goto LABEL_504; | |
| v200 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v201 = (nn::os **)(v200 + 176); | |
| if ( !v200 ) | |
| v201 = (nn::os **)(v198 + 8); | |
| v199 = *v201; | |
| if ( *v201 ) | |
| { | |
| LABEL_504: | |
| v199 = (nn::os *)(*(__int64 (**)(void))(*(_QWORD *)v199 + 48LL))(); | |
| goto LABEL_329; | |
| } | |
| v202 = 0LL; | |
| } | |
| else | |
| { | |
| v199 = (nn::os *)malloc(0x288uLL); | |
| LABEL_329: | |
| v202 = v199; | |
| } | |
| *((_QWORD *)v202 + 2) = 0LL; | |
| *((_QWORD *)v202 + 3) = &off_7102BB33C0; | |
| *((_QWORD *)v202 + 19) = sub_7101250EA0; | |
| *((_BYTE *)v202 + 8) = 0; | |
| *((_DWORD *)v202 + 12) = 0; | |
| *((_QWORD *)v202 + 4) = (char *)v202 + 32; | |
| *((_QWORD *)v202 + 5) = (char *)v202 + 32; | |
| *((_QWORD *)v202 + 7) = 0LL; | |
| *((_DWORD *)v202 + 20) = 0; | |
| *(_QWORD *)v202 = off_7102BB3060; | |
| *((_DWORD *)v202 + 40) = 1; | |
| *((_QWORD *)v202 + 8) = 0LL; | |
| *((_QWORD *)v202 + 9) = 0LL; | |
| *((_QWORD *)v202 + 11) = &off_7102A6E6C0; | |
| *((_QWORD *)v202 + 12) = &word_7102711714; | |
| *((_QWORD *)v202 + 13) = &off_7102A6E6C0; | |
| *((_QWORD *)v202 + 14) = &word_7102711714; | |
| *((_QWORD *)v202 + 15) = &off_7102A6E6C0; | |
| *((_QWORD *)v202 + 16) = &word_7102711714; | |
| *((_QWORD *)v202 + 17) = 0LL; | |
| *((_QWORD *)v202 + 18) = 0LL; | |
| *(_QWORD *)((char *)v202 + 172) = 4575657222465388544LL; | |
| *(_QWORD *)((char *)v202 + 188) = 844424930131968LL; | |
| *(_QWORD *)((char *)v202 + 196) = 17592187092992LL; | |
| *(_QWORD *)((char *)v202 + 204) = 0x1000000LL; | |
| *(_QWORD *)((char *)v202 + 212) = 2251804108652543LL; | |
| *(_QWORD *)((char *)v202 + 220) = 0x40000LL; | |
| *(_QWORD *)((char *)v202 + 164) = 4539628425446424576LL; | |
| *((_DWORD *)v202 + 45) = v195; | |
| *((_DWORD *)v202 + 46) = v197; | |
| *(_QWORD *)((char *)v202 + 228) = 8589967660LL; | |
| *((_QWORD *)v202 + 30) = 0LL; | |
| v203 = (nn::os *)nn::os::GetSystemTick(v199); | |
| *((_QWORD *)v202 + 33) = off_7102BB3198; | |
| *((_QWORD *)v202 + 34) = 4575657222473777152LL; | |
| *((_DWORD *)v202 + 132) = 16777217; | |
| *(_QWORD *)v202 = off_7102BD0108; | |
| *((_QWORD *)v202 + 67) = off_7102BD0270; | |
| *((_DWORD *)v202 + 138) = 2; | |
| *((_QWORD *)v202 + 35) = 0LL; | |
| *((_QWORD *)v202 + 36) = 4575657222473777152LL; | |
| *((_DWORD *)v202 + 94) = 0; | |
| *((_BYTE *)v202 + 532) = 0; | |
| *((_QWORD *)v202 + 19) = 0LL; | |
| *((_QWORD *)v202 + 68) = &off_7102BD02C8; | |
| *((_DWORD *)v202 + 139) = 3; | |
| *((_QWORD *)v202 + 31) = v203; | |
| *((_QWORD *)v202 + 32) = 0LL; | |
| *((_QWORD *)v202 + 45) = 0LL; | |
| *((_QWORD *)v202 + 46) = 0LL; | |
| *((_QWORD *)v202 + 43) = 0LL; | |
| *((_QWORD *)v202 + 44) = 0LL; | |
| *((_QWORD *)v202 + 41) = 0LL; | |
| *((_QWORD *)v202 + 42) = 0LL; | |
| *((_QWORD *)v202 + 39) = 0LL; | |
| *((_QWORD *)v202 + 40) = 0LL; | |
| *((_QWORD *)v202 + 37) = 0LL; | |
| *((_QWORD *)v202 + 38) = 0LL; | |
| *((_QWORD *)v202 + 54) = 0LL; | |
| *((_QWORD *)v202 + 55) = 0LL; | |
| *((_QWORD *)v202 + 52) = 0LL; | |
| *((_QWORD *)v202 + 53) = 0LL; | |
| *((_QWORD *)v202 + 50) = 0LL; | |
| *((_QWORD *)v202 + 51) = 0LL; | |
| *((_QWORD *)v202 + 48) = 0LL; | |
| *((_QWORD *)v202 + 49) = 0LL; | |
| *((_QWORD *)v202 + 56) = 0LL; | |
| *((_QWORD *)v202 + 57) = &off_7102A6E6C0; | |
| *((_QWORD *)v202 + 58) = &word_7102711714; | |
| *((_QWORD *)v202 + 59) = 0LL; | |
| v204 = (nn::oe *)nn::os::GetSystemTick(v203); | |
| *((_QWORD *)v202 + 74) = 0LL; | |
| *((_QWORD *)v202 + 73) = 0LL; | |
| *((_BYTE *)v202 + 604) = 1; | |
| *((_QWORD *)v202 + 72) = v204; | |
| *((_DWORD *)v202 + 150) = 0x40000000; | |
| *(_DWORD *)((char *)v202 + 605) = 0; | |
| v205 = *((_DWORD *)v202 + 138); | |
| *((_DWORD *)v202 + 140) = v205; | |
| *((_DWORD *)v202 + 141) = v205; | |
| *((_DWORD *)v202 + 142) = v205; | |
| *((_QWORD *)v202 + 77) = 8589934594LL; | |
| *((_QWORD *)v202 + 78) = 0LL; | |
| v206 = (nn::oe *)nn::oe::GetOperationMode(v204); | |
| *((_DWORD *)v202 + 158) = (_DWORD)v206; | |
| *((_DWORD *)v202 + 159) = nn::oe::GetPerformanceMode(v206); | |
| *((_BYTE *)v202 + 640) = 0; | |
| v329 = &off_7102A6E6C0; | |
| v330 = "GraphicsSystem"; | |
| v207 = sub_710125CD50(50331648LL, &v329, v175, 8LL, 1LL, 0LL); | |
| v209 = __ldar((unsigned __int8 *)&unk_7102CCEB18); | |
| v210 = v207; | |
| if ( !((unsigned __int64)&unk_7102CCEB18 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_7102CCEB18) ) | |
| { | |
| qword_7102CCEB20 = 3092376454400LL; | |
| _cxa_guard_release_0(&unk_7102CCEB18); | |
| } | |
| v211 = (float)SHIDWORD(qword_7102CCEB20); | |
| v212 = (float)(signed int)qword_7102CCEB20; | |
| nv::SetGraphicsAllocator( | |
| (nv *)&sub_710124F3F0, | |
| (void *(__cdecl *)(unsigned __int64, unsigned __int64, void *))j_free, | |
| (void (__cdecl *)(void *, void *))j_realloc, | |
| 0LL, | |
| v208); | |
| v213 = (nv *)(*(__int64 (__fastcall **)(__int64, _QWORD, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| *((unsigned int *)v202 + 51), | |
| 4096LL); | |
| v215 = (nn::vi *)nv::InitializeGraphics(v213, (void *)*((unsigned int *)v202 + 51), v214); | |
| if ( *((_DWORD *)v202 + 52) ) | |
| { | |
| v216 = (void *)(*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v210 + 48LL))(v210); | |
| if ( qword_7102CBF018 ) | |
| v217 = (nn::mem::StandardAllocator *)(*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 72LL, | |
| 8LL); | |
| else | |
| v217 = (nn::mem::StandardAllocator *)malloc(0x48uLL); | |
| v218 = (void *(__cdecl *)(void *, unsigned __int64, void *))v217; | |
| nn::mem::StandardAllocator::StandardAllocator(v217, v216, *((unsigned int *)v202 + 52)); | |
| *((_QWORD *)v202 + 48) = v218; | |
| v215 = (nn::vi *)nv::SetGraphicsDevtoolsAllocator( | |
| (nv *)sub_710124F420, | |
| (void *(__cdecl *)(unsigned __int64, unsigned __int64, void *))sub_710124F440, | |
| (void (__cdecl *)(void *, void *))sub_710124F450, | |
| v218, | |
| v219); | |
| } | |
| nn::vi::Initialize(v215); | |
| nn::vi::OpenDefaultDisplay((nn::os *)((char *)v202 + 424), v220); | |
| nn::vi::CreateLayer((char *)v202 + 432, *((_QWORD *)v202 + 53)); | |
| nn::vi::SetLayerScalingMode(*((_QWORD *)v202 + 54), 2LL); | |
| nn::vi::GetDisplayVsyncEvent((char *)v202 + 480, *((_QWORD *)v202 + 53)); | |
| v221 = (float)*((unsigned int *)v202 + 46); | |
| v222 = (float)*((unsigned int *)v202 + 45); | |
| *((float *)v202 + 68) = v212; | |
| *((float *)v202 + 69) = v211; | |
| *((_QWORD *)v202 + 35) = 0LL; | |
| *((float *)v202 + 73) = v221; | |
| *((float *)v202 + 72) = v222; | |
| v223 = (unsigned __int8 (*)(void))nvnBootstrapLoader_0("nvnDeviceInitialize"); | |
| v224 = nvnBootstrapLoader_0("nvnDeviceGetProcAddress"); | |
| if ( !v223 ) | |
| goto LABEL_460; | |
| v225 = v224; | |
| if ( !v224 ) | |
| goto LABEL_460; | |
| sub_7101D3ABA0(0LL, v224); | |
| qword_7102D2EE50(&v329); | |
| if ( *((_BYTE *)v202 + 190) ) | |
| { | |
| v226 = *((_DWORD *)v202 + 56) - 1; | |
| v227 = v226 > 3 ? 32LL : (unsigned __int64)dword_710260EEB0[v226]; | |
| } | |
| else | |
| { | |
| v227 = 0LL; | |
| } | |
| qword_7102D2EE58(&v329, v227); | |
| v228 = qword_7102CBF018 ? (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 12288LL, | |
| 8LL) : malloc(0x3000uLL); | |
| v229 = v228; | |
| if ( !v223() ) | |
| goto LABEL_460; | |
| sub_7101D3ABA0(v229, v225); | |
| qword_7102D2EE88(v229, 0LL, &v329); | |
| qword_7102D2EE88(v229, 1LL, &v355); | |
| if ( (_DWORD)v329 != 53 || (signed int)v355 < 311 ) | |
| goto LABEL_460; | |
| if ( *((_BYTE *)v202 + 190) || *((_BYTE *)v202 + 191) ) | |
| { | |
| qword_7102D2EEB8(v229, sub_710125A0A0, 0LL, 1LL); | |
| v230 = *((_BYTE *)v202 + 191); | |
| if ( *((_BYTE *)v202 + 190) ) | |
| v231 = 1; | |
| else | |
| v231 = *((_BYTE *)v202 + 191); | |
| } | |
| else | |
| { | |
| v231 = 0; | |
| v230 = 0; | |
| } | |
| v232 = *((_DWORD *)v202 + 57); | |
| if ( qword_7102CBF018 ) | |
| { | |
| v233 = (_QWORD *)(*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 520LL, | |
| 8LL); | |
| v234 = qword_7102CBF018; | |
| v235 = (__int64)v233; | |
| v233[2] = 0LL; | |
| v233[3] = 0LL; | |
| *v233 = &off_7102BB3CD8; | |
| v233[1] = 0LL; | |
| if ( v234 ) | |
| { | |
| v236 = sub_710125F180(v233); | |
| *(_QWORD *)(v235 + 8) = v236; | |
| if ( v236 ) | |
| { | |
| v237 = v236; | |
| if ( *(_BYTE *)(v236 + 216) & 1 ) | |
| { | |
| v238 = v236 + 152; | |
| nn::os::LockMutex(v236 + 184); | |
| } | |
| else | |
| { | |
| v238 = 0LL; | |
| } | |
| v239 = *(_QWORD *)(v237 + 120); | |
| v240 = (_QWORD *)(*(signed int *)(v237 + 140) + v235); | |
| *(_QWORD *)(v237 + 120) = v240; | |
| *v240 = v239; | |
| v240[1] = v237 + 120; | |
| if ( v239 ) | |
| *(_QWORD *)(v239 + 8) = v240; | |
| ++*(_DWORD *)(v237 + 136); | |
| if ( v238 ) | |
| nn::os::UnlockMutex(v238 + 32); | |
| } | |
| } | |
| } | |
| else | |
| { | |
| v235 = malloc(0x208uLL); | |
| *(_QWORD *)(v235 + 16) = 0LL; | |
| *(_QWORD *)(v235 + 24) = 0LL; | |
| *(_QWORD *)v235 = &off_7102BB3CD8; | |
| *(_QWORD *)(v235 + 8) = 0LL; | |
| } | |
| *(_QWORD *)v235 = off_7102BB3B48; | |
| *(_QWORD *)(v235 + 248) = 0LL; | |
| *(_QWORD *)(v235 + 32) = 0LL; | |
| *(_QWORD *)(v235 + 40) = 0LL; | |
| *(_QWORD *)(v235 + 48) = v229; | |
| *(_QWORD *)(v235 + 72) = 0LL; | |
| *(_QWORD *)(v235 + 80) = 0LL; | |
| *(_QWORD *)(v235 + 56) = 0LL; | |
| *(_QWORD *)(v235 + 64) = 0LL; | |
| *(_DWORD *)(v235 + 264) = 0; | |
| *(_DWORD *)(v235 + 268) = 0; | |
| *(_DWORD *)(v235 + 272) = v232; | |
| *(_DWORD *)(v235 + 276) = 4096; | |
| sub_710126C630(v235 + 280); | |
| sub_710126C630(v235 + 344); | |
| sub_710126C630(v235 + 408); | |
| *(_QWORD *)(v235 + 472) = off_7102BB3C38; | |
| *(_QWORD *)(v235 + 480) = v235; | |
| *(_QWORD *)(v235 + 488) = nullsub_5714; | |
| *(_QWORD *)(v235 + 496) = 0LL; | |
| *(_QWORD *)(v235 + 504) = v235 + 472; | |
| v241 = *(_QWORD *)(v235 + 48); | |
| *(_BYTE *)(v235 + 512) = 0; | |
| *(_BYTE *)(v235 + 513) = v230; | |
| *(_BYTE *)(v235 + 514) = v231; | |
| qword_7102D2EEC8(v241, 1LL); | |
| qword_7102CBF6E0 = v235; | |
| if ( qword_7102CBF018 ) | |
| v242 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 96LL, | |
| 8LL); | |
| else | |
| v242 = malloc(0x60uLL); | |
| v243 = v242; | |
| *(_QWORD *)v242 = &off_7102BB4D30; | |
| *(_DWORD *)(v242 + 8) = 0; | |
| v244 = (_QWORD *)&unk_7102CBF000; | |
| sub_710126C630(v242 + 16); | |
| v245 = *(_QWORD *)v235; | |
| *(_QWORD *)(v235 + 40) = v243; | |
| (*(void (__fastcall **)(__int64, __int64))(v245 + 16))(v235, v210); | |
| nn::os::LockMutex(*(_QWORD *)(v235 + 40) + 48LL); | |
| (*(void (__fastcall **)(__int64, __int64))(*(_QWORD *)v235 + 24LL))(v235, v210); | |
| nn::os::UnlockMutex(*(_QWORD *)(v235 + 40) + 48LL); | |
| qword_7102D2EF70(&v329); | |
| qword_7102D2EF78(&v329, 1LL); | |
| qword_7102D2EF68(&v329, *(_QWORD *)(qword_7102CBF6E0 + 48)); | |
| LODWORD(v355) = *((_DWORD *)v202 + 53); | |
| v246 = v355; | |
| if ( (_DWORD)v355 == -1 ) | |
| { | |
| qword_7102D2EE88(v229, 85LL, &v355); | |
| v246 = v355; | |
| } | |
| qword_7102D2EF88(&v329, v246); | |
| LODWORD(v355) = *((_DWORD *)v202 + 54); | |
| v247 = v355; | |
| if ( (_DWORD)v355 == -1 ) | |
| { | |
| qword_7102D2EE88(v229, 82LL, &v355); | |
| v247 = v355; | |
| } | |
| qword_7102D2EF80(&v329, v247); | |
| LODWORD(v355) = *((_DWORD *)v202 + 55); | |
| v248 = v355; | |
| if ( (_DWORD)v355 == -1 ) | |
| { | |
| qword_7102D2EE88(v229, 92LL, &v355); | |
| v248 = v355; | |
| } | |
| qword_7102D2EF90(&v329, v248); | |
| v249 = qword_7102D2EF98(&v329); | |
| v250 = v249; | |
| v251 = (*(__int64 (__fastcall **)(__int64, __int64, signed __int64))(*(_QWORD *)v210 + 48LL))(v210, v249, 4096LL); | |
| qword_7102D2EFA0(&v329, v251, v250); | |
| if ( qword_7102CBF018 ) | |
| v252 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 0x2000LL, | |
| 8LL); | |
| else | |
| v252 = malloc(0x2000uLL); | |
| *((_QWORD *)v202 + 51) = v252; | |
| qword_7102D2F000(); | |
| *(_QWORD *)(qword_7102CBF6E0 + 56) = *((_QWORD *)v202 + 51); | |
| if ( qword_7102CBF018 ) | |
| v253 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 96LL, | |
| 8LL); | |
| else | |
| v253 = malloc(0x60uLL); | |
| *(_DWORD *)(v253 + 32) = 0; | |
| *(_QWORD *)v253 = off_7102BB3B08; | |
| *(_QWORD *)(v253 + 8) = 0LL; | |
| *(_QWORD *)(v253 + 56) = 0LL; | |
| *(_QWORD *)(v253 + 64) = 0LL; | |
| *(_WORD *)(v253 + 72) = 513; | |
| *(_BYTE *)(v253 + 74) = 0; | |
| *(_QWORD *)(v253 + 84) = 0LL; | |
| *(_QWORD *)(v253 + 76) = 0LL; | |
| *(_QWORD *)(v253 + 16) = 0LL; | |
| *(_QWORD *)(v253 + 24) = 0LL; | |
| *(_QWORD *)(v253 + 40) = 0LL; | |
| *(_QWORD *)(v253 + 48) = 0LL; | |
| v254 = *((_QWORD *)v202 + 54); | |
| *((_QWORD *)v202 + 38) = v253; | |
| nn::vi::GetNativeWindow(&v329, v254); | |
| *(_QWORD *)(*((_QWORD *)v202 + 38) + 64LL) = v329; | |
| v255 = *((_QWORD *)v202 + 38); | |
| v256 = *(_QWORD *)(v255 + 16); | |
| *(_BYTE *)(v255 + 72) = *((_DWORD *)v202 + 40); | |
| if ( v256 ) | |
| qword_7102D2F0D0(); | |
| if ( *((_BYTE *)v202 + 189) ) | |
| v257 = 3; | |
| else | |
| v257 = 2; | |
| *(_BYTE *)(*((_QWORD *)v202 + 38) + 73LL) = v257; | |
| v258 = (float)*((unsigned int *)v202 + 46); | |
| v259 = (float *)*((_QWORD *)v202 + 38); | |
| v260 = *(_QWORD *)v259; | |
| v259[2] = (float)*((unsigned int *)v202 + 45); | |
| v259[3] = v258; | |
| (*(void (**)(void))(v260 + 16))(); | |
| v261 = *((_DWORD *)v202 + 40); | |
| if ( v261 ) | |
| *((_QWORD *)v202 + 37) = (signed __int64)(float)((float)((float)((float)v261 + 0.02) / 60.0) | |
| * (float)qword_7102CBFBA8); | |
| *(_QWORD *)(qword_7102CBF6E0 + 80) = *((_QWORD *)v202 + 38); | |
| v262 = __ldar((unsigned __int8 *)&unk_7102CBEEA0); | |
| if ( !((unsigned __int64)&unk_7102CBEEA0 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_7102CBEEA0) ) | |
| { | |
| qword_7102CBEEA8 = (unsigned int)(*((_DWORD *)v202 + 48) + 32) + 4095LL - ((*((_DWORD *)v202 + 48) + 31) & 0xFFF); | |
| _cxa_guard_release_0(&unk_7102CBEEA0); | |
| } | |
| v263 = *(_QWORD *)(qword_7102CBF6E0 + 48); | |
| if ( qword_7102CBF018 ) | |
| v264 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 160LL, | |
| 8LL); | |
| else | |
| v264 = malloc(0xA0uLL); | |
| *((_QWORD *)v202 + 43) = v264; | |
| qword_7102D2F950(); | |
| if ( qword_7102CBF018 ) | |
| v265 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 256LL, | |
| 8LL); | |
| else | |
| v265 = malloc(0x100uLL); | |
| *((_QWORD *)v202 + 41) = v265; | |
| qword_7102D2F138(&v329); | |
| qword_7102D2F130(&v329, v263); | |
| qword_7102D2F148(&v329, 18LL); | |
| v266 = qword_7102CBEEA8; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v267 = (*(__int64 (__fastcall **)(__int64, __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| qword_7102CBEEA8, | |
| 4096LL); | |
| v266 = qword_7102CBEEA8; | |
| } | |
| else | |
| { | |
| v267 = malloc(qword_7102CBEEA8); | |
| } | |
| qword_7102D2F140(&v329, v267, v266); | |
| qword_7102D2F170(*((_QWORD *)v202 + 41), &v329); | |
| LODWORD(v355) = 0; | |
| qword_7102D2EE88(v263, 20LL, &v355); | |
| *((_QWORD *)v202 + 42) = (*(__int64 (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| *((unsigned int *)v202 + 49), | |
| (unsigned int)v355); | |
| qword_7102D2F968(*((_QWORD *)v202 + 43), nullsub_5715); | |
| v268 = *((_QWORD *)v202 + 43); | |
| qword_7102D2F970(); | |
| *(_QWORD *)(qword_7102CBF6E0 + 64) = *((_QWORD *)v202 + 43); | |
| qword_7102D2EE88(v229, 25LL, &v355); | |
| qword_7102D2EE88(v229, 26LL, &v354); | |
| qword_7102D2EE88(v229, 24LL, &v353); | |
| v269 = v355 + v353 * *((_DWORD *)v202 + 50) - 1; | |
| *((_DWORD *)v202 + 94) = ((v269 + ~(v269 - v269 / (unsigned int)v355 * (_DWORD)v355) + v354) / v354 * v354 + 4095) & 0xFFFFF000; | |
| if ( qword_7102CBF018 ) | |
| v270 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 256LL, | |
| 8LL); | |
| else | |
| v270 = malloc(0x100uLL); | |
| *((_QWORD *)v202 + 46) = v270; | |
| qword_7102D2F138(&v329); | |
| qword_7102D2F130(&v329, *(_QWORD *)(qword_7102CBF6E0 + 48)); | |
| qword_7102D2F148(&v329, 33LL); | |
| if ( qword_7102CBF018 ) | |
| v271 = (*(__int64 (__fastcall **)(__int64, _QWORD, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| *((unsigned int *)v202 + 94), | |
| 4096LL); | |
| else | |
| v271 = malloc(*((unsigned int *)v202 + 94)); | |
| qword_7102D2F140(&v329, v271, *((unsigned int *)v202 + 94)); | |
| qword_7102D2F170(*((_QWORD *)v202 + 46), &v329); | |
| qword_7102D2F240(&v329, *(_QWORD *)(qword_7102CBF6E0 + 48)); | |
| qword_7102D2F248(&v329); | |
| qword_7102D2F250(&v329, *((_QWORD *)v202 + 41), *((unsigned int *)v202 + 48), 32LL); | |
| if ( qword_7102CBF018 ) | |
| v272 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 48LL, | |
| 8LL); | |
| else | |
| v272 = malloc(0x30uLL); | |
| *((_QWORD *)v202 + 44) = v272; | |
| qword_7102D2F278(); | |
| *((_QWORD *)v202 + 45) = qword_7102D2F290(*((_QWORD *)v202 + 44)); | |
| if ( qword_7102CBF018 ) | |
| v273 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 64LL, | |
| 8LL); | |
| else | |
| v273 = malloc(0x40uLL); | |
| *((_QWORD *)v202 + 56) = v273; | |
| qword_7102D2FDC0(); | |
| if ( !*((_BYTE *)v202 + 188) ) | |
| goto LABEL_443; | |
| v275 = *((_DWORD *)v202 + 45); | |
| v274 = *((_DWORD *)v202 + 46); | |
| v276 = *(_QWORD *)(qword_7102CBF6E0 + 48); | |
| qword_7102D2F2D0(&v329, *(_QWORD *)(qword_7102CBF6E0 + 48)); | |
| qword_7102D2F2D8(&v329); | |
| v326 = v275; | |
| v328 = v274; | |
| qword_7102D2F310(&v329, v275, v274); | |
| qword_7102D2F2E8(&v329, 1LL); | |
| qword_7102D2F328(&v329, 37LL); | |
| qword_7102D2F2E0(&v329, 8LL); | |
| v358 = v332; | |
| v357 = v331; | |
| v356 = (unsigned int *)v330; | |
| v355 = (unsigned __int64)v329; | |
| v362 = v336; | |
| v361 = v335; | |
| v360 = v334; | |
| v359 = v333; | |
| v366 = v340; | |
| v365 = v339; | |
| v364 = v338; | |
| v363 = v337; | |
| v370 = v344; | |
| v369 = v343; | |
| v368 = v342; | |
| v367 = v341; | |
| qword_7102D2F328(&v355, 53LL); | |
| if ( !qword_7102CBF018 ) | |
| { | |
| v277 = malloc(0x100uLL); | |
| goto LABEL_426; | |
| } | |
| v277 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))(v210, 256LL, 8LL); | |
| if ( !qword_7102CBF018 ) | |
| { | |
| LABEL_426: | |
| v278 = malloc(0xC0uLL); | |
| goto LABEL_427; | |
| } | |
| v278 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))(v210, 192LL, 8LL); | |
| if ( qword_7102CBF018 ) | |
| { | |
| v279 = (*(__int64 (__fastcall **)(__int64, signed __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| 192LL, | |
| 8LL); | |
| goto LABEL_428; | |
| } | |
| LABEL_427: | |
| v279 = malloc(0xC0uLL); | |
| LABEL_428: | |
| v325 = v279; | |
| v280 = qword_7102D2F348(&v329); | |
| v281 = (signed int)qword_7102D2F350(&v355); | |
| v282 = (qword_7102D2F348(&v355) + (v280 + v281 - 1) / v281 * v281 + 4095) & 0xFFFFFFFFFFFFF000LL; | |
| qword_7102D2F138(&v354); | |
| qword_7102D2F130(&v354, v276); | |
| qword_7102D2F148(&v354, 161LL); | |
| if ( qword_7102CBF018 ) | |
| v283 = (*(__int64 (__fastcall **)(__int64, unsigned __int64, signed __int64))(*(_QWORD *)v210 + 48LL))( | |
| v210, | |
| v282, | |
| 4096LL); | |
| else | |
| v283 = malloc(v282); | |
| qword_7102D2F140(&v354, v283, v282); | |
| qword_7102D2F170(v277, &v354); | |
| qword_7102D2F358(&v329, v277, 0LL); | |
| v284 = qword_7102D2F348(&v329); | |
| v285 = qword_7102D2F350(&v355); | |
| v286 = v284 + v285 - 1; | |
| v287 = v286 - v286 / v285 * v285; | |
| qword_7102D2F498(v278, &v329); | |
| v288 = qword_7102CBF6E0 + 376; | |
| nn::os::LockMutex(qword_7102CBF6E0 + 376); | |
| v290 = qword_7102CBF6E0; | |
| do | |
| v291 = __ldxr(v289); | |
| while ( __stxr((_DWORD)v289 + 1, (unsigned int *)(v290 + 268)) ); | |
| qword_7102D2F1D8(v290 + 88); | |
| nn::os::UnlockMutex(v288); | |
| qword_7102D2F358(&v355, v277, v286 - v287); | |
| qword_7102D2F498(v325, &v355); | |
| v292 = qword_7102CBF6E0 + 376; | |
| nn::os::LockMutex(qword_7102CBF6E0 + 376); | |
| v294 = qword_7102CBF6E0; | |
| do | |
| v295 = __ldxr(v293); | |
| while ( __stxr((_DWORD)v293 + 1, (unsigned int *)(v294 + 268)) ); | |
| qword_7102D2F1D8(v294 + 88); | |
| nn::os::UnlockMutex(v292); | |
| v296 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v297 = v210; | |
| if ( v210 ) | |
| goto LABEL_505; | |
| v298 = nn::os::GetTlsValue(*(unsigned int *)(qword_7102CBF648 + 136)); | |
| v299 = (__int64 *)(v298 + 176); | |
| if ( !v298 ) | |
| v299 = (__int64 *)(v296 + 8); | |
| v297 = *v299; | |
| if ( *v299 ) | |
| LABEL_505: | |
| v297 = (*(__int64 (**)(void))(*(_QWORD *)v297 + 48LL))(); | |
| } | |
| else | |
| { | |
| v297 = malloc(0x30uLL); | |
| } | |
| *(float *)(v297 + 8) = v212; | |
| *(float *)(v297 + 12) = v211; | |
| *(_QWORD *)(v297 + 16) = 0LL; | |
| *(_QWORD *)(v297 + 32) = v278; | |
| *(_QWORD *)(v297 + 40) = v325; | |
| v244 = &unk_7102CBF000; | |
| *(_QWORD *)v297 = off_7102BB3A88; | |
| *(float *)(v297 + 24) = (float)v326; | |
| *(float *)(v297 + 28) = (float)v328; | |
| *((_QWORD *)v202 + 32) = v297; | |
| LABEL_443: | |
| v300 = qword_7102CBF018; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v301 = v210; | |
| if ( v210 ) | |
| goto LABEL_506; | |
| v302 = nn::os::GetTlsValue(*(unsigned int *)(v244[201] + 136LL)); | |
| v303 = (__int64 *)(v302 + 176); | |
| if ( !v302 ) | |
| v303 = (__int64 *)(v300 + 8); | |
| v301 = *v303; | |
| if ( *v303 ) | |
| { | |
| LABEL_506: | |
| v304 = (*(__int64 (**)(void))(*(_QWORD *)v301 + 48LL))(); | |
| goto LABEL_450; | |
| } | |
| v305 = 0LL; | |
| } | |
| else | |
| { | |
| v304 = malloc(0x108uLL); | |
| LABEL_450: | |
| v305 = v304; | |
| } | |
| v306 = qword_7102CBF018; | |
| v329 = &off_7102A6E6C0; | |
| v330 = "Presentation Thread"; | |
| if ( qword_7102CBF018 ) | |
| { | |
| v307 = v210; | |
| if ( v210 ) | |
| goto LABEL_507; | |
| v308 = nn::os::GetTlsValue(*(unsigned int *)(v244[201] + 136LL)); | |
| v309 = (__int64 *)(v308 + 176); | |
| if ( !v308 ) | |
| v309 = (__int64 *)(v306 + 8); | |
| v307 = *v309; | |
| if ( *v309 ) | |
| { | |
| LABEL_507: | |
| v310 = (*(__int64 (**)(void))(*(_QWORD *)v307 + 48LL))(); | |
| goto LABEL_458; | |
| } | |
| v311 = 0LL; | |
| } | |
| else | |
| { | |
| v310 = malloc(0x20uLL); | |
| LABEL_458: | |
| v311 = (_QWORD *)v310; | |
| } | |
| *v311 = off_7102BB31C8; | |
| v311[1] = v202; | |
| v311[2] = sub_710124F480; | |
| v311[3] = 0LL; | |
| v312 = (nn::os *)sub_710126CB30(v305, &v329, v210, *((unsigned int *)v202 + 58), 0LL, 0x7FFFFFFFLL, 0x4000LL, 32LL); | |
| *(_QWORD *)v305 = off_7102BB4800; | |
| *(_QWORD *)(v305 + 48) = &off_7102BB48A8; | |
| *(_QWORD *)(v305 + 256) = v311; | |
| *((_QWORD *)v202 + 55) = v305; | |
| LODWORD(v329) = 1; | |
| *(_DWORD *)(v305 + 216) = 2; | |
| v313 = *(unsigned int *)(v305 + 216); | |
| nn::os::GetThreadAvailableCoreMask(v312); | |
| nn::os::SetThreadCoreMask(*(_QWORD *)(v305 + 224), 0xFFFFFFFFLL, v313); | |
| (*(void (**)(void))(**((_QWORD **)v202 + 55) + 48LL))(); | |
| LABEL_460: | |
| *((_BYTE *)v202 + 532) = 2; | |
| (*(void (__fastcall **)(__int64))(*(_QWORD *)v210 + 40LL))(v210); | |
| v314 = sub_7101A4ED50((nn::os *)"main"); | |
| if ( dword_7102CE0F20 >= dword_7102CE0F38 ) | |
| { | |
| v315 = 0LL; | |
| } | |
| else | |
| { | |
| v315 = (nn::os **)qword_7102CE0F28; | |
| if ( qword_7102CE0F28 ) | |
| qword_7102CE0F28 = *(_QWORD *)qword_7102CE0F28; | |
| *v315 = 0LL; | |
| v315[1] = 0LL; | |
| v314 = (nn::os *)nn::os::GetSystemTick(v314); | |
| *v315 = v314; | |
| v315[3] = 0LL; | |
| v315[2] = 0LL; | |
| v316 = (__int64 *)(v315 + 2); | |
| v317 = qword_7102CE0F10; | |
| qword_7102CE0F10 = (__int64)v316; | |
| *v316 = v317; | |
| v315[3] = (nn::os *)&qword_7102CE0F10; | |
| if ( v317 ) | |
| *(_QWORD *)(v317 + 8) = v316; | |
| ++dword_7102CE0F20; | |
| } | |
| *v315 = (nn::os *)nn::os::GetSystemTick(v314); | |
| v315[1] = (nn::os *)"RootTask"; | |
| v350 = -1; | |
| v351 = 1; | |
| *(const char **)((char *)&v332 + 7) = 0LL; | |
| v331 = 0LL; | |
| v332 = 0LL; | |
| *(__int64 *)((char *)&v335 + 7) = 0LL; | |
| *(__int64 *)((char *)&v338 + 7) = 0LL; | |
| *(__int64 *)((char *)&v341 + 7) = 0LL; | |
| LODWORD(v343) = 0; | |
| v352 = 0LL; | |
| LODWORD(v329) = 2; | |
| v330 = (const char *)sub_7100E46850; | |
| v355 = 85899345920LL; | |
| v334 = 0LL; | |
| v335 = 0LL; | |
| v337 = 0LL; | |
| v338 = 0LL; | |
| v340 = 0LL; | |
| v341 = 0LL; | |
| v348 = 0LL; | |
| v349 = 0LL; | |
| v346 = 0LL; | |
| v347 = 0LL; | |
| v344 = 0LL; | |
| v345 = 0LL; | |
| (*(void (__fastcall **)(nn::os *, nn::os *, void **, unsigned __int64 *))(*(_QWORD *)v202 + 40LL))( | |
| v202, | |
| v175, | |
| &v329, | |
| &v355); | |
| v318 = qword_7102CC1F90; | |
| if ( qword_7102CC1F90 && *(_BYTE *)(qword_7102CC1F90 + 104) ) | |
| { | |
| v319 = *(_QWORD *)(qword_7102CC1F90 + 56); | |
| if ( v319 ) | |
| (*(void (**)(void))(*(_QWORD *)v319 + 40LL))(); | |
| v320 = *(_QWORD *)(v318 + 64); | |
| if ( v320 ) | |
| (*(void (**)(void))(*(_QWORD *)v320 + 48LL))(); | |
| if ( *(_DWORD *)(v318 + 88) ) | |
| { | |
| v321 = *(_QWORD *)(v318 + 80); | |
| if ( v321 != v318 + 72 ) | |
| { | |
| v322 = *(signed int *)(v318 + 92); | |
| v323 = v321 - v322; | |
| do | |
| { | |
| (*(void (__fastcall **)(__int64))(*(_QWORD *)v323 + 48LL))(v323); | |
| v323 = *(_QWORD *)(v323 + v322 + 8) - v322; | |
| } | |
| while ( v323 != v318 + 72 - *(signed int *)(v318 + 92) ); | |
| } | |
| } | |
| v324 = *(_QWORD *)(v318 + 40); | |
| if ( v324 ) | |
| (*(void (**)(void))(*(_QWORD *)v324 + 40LL))(); | |
| *(_BYTE *)(v318 + 104) = 0; | |
| } | |
| } |
wtf
ohh...
what in the name of John Carmack
Holy hell in a handbasket
gorsh, scoob
WTF
omg
1.6.0 was so long i had to click the mousewheel so i could use autoscroll
rawest c++ code ever written
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
jesus