PoInitSystem
UINT8 __stdcall PoInitSystem(UINT64 Phase, _LOADER_PARAMETER_BLOCK *LoaderBlock){
int v3;
int TimebrokerServiceSid;
UINT64 v6;
UINT64 v7;
INT64 v8;
INT64 v9;
INT64 v10;
INT64 v11;
unsigned int v12;
INT64 v13;
VOID *v14;
UINT64 *v15;
__int64 v16;
INT64 v17;
WCHAR v18;
int v19;
UINT8 v20;
UINT64 v21;
INT64 v22;
UINT64 v23;
INT64 v24;
__int64 v25;
INT64 v26;
WCHAR v27;
INT64 v28;
INT64 v29;
INT64 v30;
INT64 v31;
CHAR v32;
bool v33;
UINT64 Tag;
union _LARGE_INTEGER PerformanceFrequency;
__int64 v36;
__int128 v37;
__int64 v38;
int v39;
int v40;
int v41;
PopOsInitPhase = Phase;
PerformanceFrequency.QuadPart = 0i64;
v38 = 0i64;
v3 = Phase;
v37 = 0i64;
if( !(_DWORD)Phase )
{
KeQueryPerformanceCounter(&PerformanceFrequency);
PopQpcFrequency = PerformanceFrequency.QuadPart;
PopComputeCounterShifts(
PerformanceFrequency.QuadPart,
&PpmPerformanceDistributionShift,
&PpmPerformanceCounterShift,
v6);
PopComputeCounterShifts(10000000i64, &PpmHvPerformanceDistributionShift, &PpmHvPerformanceCounterShift, v7);
PopCsResiliencyStatsLock = 0i64;
PopPowerAggregatorInitialize(0i64);
qword_140C239E8 = (__int64)&PopIrpList;
PopIrpList = (__int64)&PopIrpList;
qword_140C239D8 = (__int64)&PopInrushIrpList;
PopInrushIrpList = (__int64)&PopInrushIrpList;
PopPowerEventLock.Thread = 0i64;
PopPowerEventLock.Lock.Value = 0i64;
PopSystemIdleLock.Thread = 0i64;
PopSystemIdleLock.Lock.Value = 0i64;
qword_140C24328 = 0i64;
PopCoalRegistrationListLock = 0i64;
PopDeepSleepDisengageReasonLock = 0i64;
PopIrpLock = 0i64;
ExInitializeNPagedLookasideList(
(PNPAGED_LOOKASIDE_LIST)PopIrpDataLookaside,
0i64,
0i64,
0x200u,
0x100ui64,
0x72496F50u,
0);
BootStatFileHandle = 0i64;
BootStatFileHandleAcquired = 0;
BootStatKeepHandleOpen = 0;
BootStatDataCache = 0i64;
BootStatDisableFlush = 0;
PopBsdSkipLogging = 0;
PopBsdUpdateLock.Thread = 0i64;
PopBsdUpdateLock.Lock.Value = 0i64;
PopInitializeWorkItem((INT64)&PopSetUserShutdownMarkerWorkItem, (INT64)PopSetUserShutdownMarkerWorker, 0i64);
PopInitializeWorkItem((INT64)&PopClearUserShutdownMarkerWorkItem, (INT64)PopClearUserShutdownMarkerWorker, v8);
PopInitializeWorkItem((INT64)&PopBsdUpdateWorkItem, (INT64)PopBsdUpdateWorker, v9);
PopWdiCurrentScenarioInstanceId = 0i64;
PopWdiCurrentScenario = (__int64)&NullGuid;
PopInitializeWorkItem((INT64)&PopExternalMonitorUpdatedWorkItem, (INT64)PopExternalMonitorUpdatedWorker, v10);
PopInitializeWorkItem((INT64)&PopRecordLidStateWorkItem, (INT64)PopRecordLidStateWorker, v11);
PopInputSuppressionLock.Thread = 0i64;
qword_140C24E68 = (__int64)&PopTransitionCheckpoints;
PopTransitionCheckpoints = &PopTransitionCheckpoints;
PopInputSuppressionLock.Lock.Value = 0i64;
PopTransitionCheckpointLock.Thread = 0i64;
PopTransitionCheckpointLock.Lock.Value = 0i64;
PopMonitorOffDueToSleep = 0;
PpmHeteroInitializeHgsSupport();
PpmCheckCurrentPipelineId = 6;
qword_140C20E78 = (__int64)PpmCheckRun;
LODWORD(PpmCheckDpc) = 787;
qword_140C20E80 = 0i64;
qword_140C20E98 = 0i64;
qword_140C20E70 = 0i64;
LODWORD(PpmCheckStartDpc) = 787;
qword_140C20E38 = (__int64)PpmCheckPeriodicStart;
qword_140C20E40 = 0i64;
qword_140C20E58 = 0i64;
qword_140C20E30 = 0i64;
TimebrokerServiceSid = PopInitializeIrpWorkers();
if( TimebrokerServiceSid < 0 )
return TimebrokerServiceSid >= 0;
PopIrpSerialLock = 0i64;
qword_140C23A58 = (__int64)&qword_140C23A50;
qword_140C23A50 = (__int64)&qword_140C23A50;
qword_140C23A28 = (__int64)&PopIrpSerialList;
PopIrpSerialList = (__int64)&PopIrpSerialList;
qword_140C23A78 = (__int64)&PopRequestedIrps;
PopRequestedIrps = (__int64)&PopRequestedIrps;
PopTransitionLock.Header.WaitListHead.Blink = &PopTransitionLock.Header.WaitListHead;
PopTransitionLock.Header.WaitListHead.Flink = &PopTransitionLock.Header.WaitListHead;
qword_140C23A88 = (__int64)&PowerStateDisableReasonListHead;
PowerStateDisableReasonListHead = (__int64)&PowerStateDisableReasonListHead;
PopDisableSleepMutex.Event.Header.WaitListHead.Blink = &PopDisableSleepMutex.Event.Header.WaitListHead;
PopDisableSleepMutex.Event.Header.WaitListHead.Flink = &PopDisableSleepMutex.Event.Header.WaitListHead;
qword_140C24998 = (__int64)&PopDisableSleepList;
PopDisableSleepList = (__int64)&PopDisableSleepList;
qword_140C23A08 = 0i64;
PpmIdlePolicyLock = 0i64;
PpmIdleVetoLock = 0i64;
PpmParkStateLock = 0i64;
qword_140C4FDC8 = 0i64;
word_140C23A48 = 1;
byte_140C23A4A = 6;
dword_140C23A4C = 1;
PopWorkerLock = 0i64;
LOWORD(PopTransitionLock.Header.Lock) = 1;
PopTransitionLock.Header.Size = 6;
PopTransitionLock.Header.SignalState = 1;
PopDisableSleepMutex.Count = 1;
PopDisableSleepMutex.Owner = 0i64;
PopDisableSleepMutex.Contention = 0;
LOWORD(PopDisableSleepMutex.Event.Header.Lock) = 1;
PopDisableSleepMutex.Event.Header.Size = 6;
PopDisableSleepMutex.Event.Header.SignalState = 0;
PopInitShutdownList();
v12 = PopIdleScanInterval;
qword_140C23AB8 = (__int64)&PopIdleDetectList;
PopIdleDetectList = (__int64)&PopIdleDetectList;
PopDopeGlobalLock = 0i64;
if( PopIdleScanInterval )
{
if( PopIdleScanInterval == -1 )
{
v12 = 30;
PopIdleScanInterval = 30;
}
else if( (unsigned int)PopIdleScanInterval > 0x12C )
{
v12 = 300;
PopIdleScanInterval = 300;
}
PopIdleBackgroundIgnoreCount = (v12 + 59) / v12;
PopBackgroundTaskIgnoreCount = (v12 + 179) / v12;
}
PopWorkerSpinLock = 0i64;
PopPolicyWorker.WorkerRoutine = (void(__fastcall *)(void *))PopPolicyWorkerThread;
PopPolicyWorker.List.Flink = 0i64;
PopPolicyWorker.Parameter = (void *)0x80000000i64;
PopWorkerStatus = -1;
ExInitializeResourceLite(&PopPolicyLock);
PopAwaymodeLock = 0i64;
PopVolumeLock.Event.Header.WaitListHead.Blink = &PopVolumeLock.Event.Header.WaitListHead;
PopVolumeLock.Event.Header.WaitListHead.Flink = &PopVolumeLock.Event.Header.WaitListHead;
PopVolumeLock.Count = 1;
PopPowerSettingCallbackReturned.Header.WaitListHead.Blink = &PopPowerSettingCallbackReturned.Header.WaitListHead;
PopPowerSettingCallbackReturned.Header.WaitListHead.Flink = &PopPowerSettingCallbackReturned.Header.WaitListHead;
qword_140C23B68 = (__int64)&PopVolumeDevices;
PopVolumeDevices = (__int64)&PopVolumeDevices;
qword_140C23BF8 = (__int64)&PopSwitches;
PopSwitches = (__int64)&PopSwitches;
qword_140C23BE8 = (__int64)&PopFans;
PopFans = (__int64)&PopFans;
PopVolumeLock.Owner = 0i64;
PopVolumeLock.Contention = 0;
LOWORD(PopVolumeLock.Event.Header.Lock) = 1;
PopVolumeLock.Event.Header.Size = 6;
PopVolumeLock.Event.Header.SignalState = 0;
LOWORD(PopPowerSettingCallbackReturned.Header.Lock) = 0;
PopPowerSettingCallbackReturned.Header.Size = 6;
PopPowerSettingCallbackReturned.Header.SignalState = 0;
qword_140C23BD8 = (__int64)&PopThermal;
PopThermal = &PopThermal;
IoAddTriageDumpDataBlock(&PopThermal, 0x10ui64);
qword_140C23BC8 = (__int64)&PopActionWaiters;
PopActionWaiters = (__int64)&PopActionWaiters;
PopResetActionDefaults();
PopPolicy = &NotificationId;
PopDefaultPolicy((UINT64)&NotificationId, v13, v14);
LODWORD(PopAdminPolicy) = 2;
*(_QWORD *)((char *)&PopAdminPolicy + 4) = 5i64;
HIDWORD(PopAdminPolicy) = -1;
qword_140C23C10 = 0xFFFFFFFF00000000ui64;
PopFullWake = 1;
PopCoolingMode = 0;
qword_140C4FDC0 = 0x2FFFFFFFFi64;
PpmInitPolicyConfiguration();
PpmInitIdlePolicy();
PpmPerfInitialize();
PpmInitCoreParkingPolicy(v15);
PpmInitHeteroPolicy();
PpmIdleRegisterDefaultStates();
PopDeepSleepInitialize(0i64);
PopInitializePowerSettings();
PopInitilizeAcDcSettings();
qword_140C22D68 = 0i64;
PopPolicyDeviceLock = 0i64;
PopBatteryInit();
PopFanLock.Thread = 0i64;
PopFanLock.Lock.Value = 0i64;
PopThermalInit();
PopCoolingExtensionLock.Thread = 0i64;
qword_140C23098 = (__int64)&PopCoolingExtensionList;
PopCoolingExtensionList = (_POP_COOLING_EXTENSION *)&PopCoolingExtensionList;
qword_140C23DE8 = (__int64)PopShutdownHandler;
PopCoolingExtensionLock.Lock.Value = 0i64;
dword_140C23DE0 = 4;
byte_140C23DE4 = 0;
PopWakeSourceInit();
PpmWmiIdleAccountingTimer = 8i64;
qword_140C20930 = (__int64)&qword_140C20928;
qword_140C20928 = (__int64)&qword_140C20928;
PpmWmiIdleAccountingDpc.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))PpmWmiIdleAccountingProcedure;
qword_140CF4250 = (__int64)&qword_140CF4248;
qword_140CF4248 = (__int64)&qword_140CF4248;
PopUserPresentCompletedEvent.Header.WaitListHead.Blink = &PopUserPresentCompletedEvent.Header.WaitListHead;
PopUserPresentCompletedEvent.Header.WaitListHead.Flink = &PopUserPresentCompletedEvent.Header.WaitListHead;
PopAwayModeUserPresenceTimer = 8i64;
qword_140C248B8 = (__int64)&qword_140C248B0;
qword_140C248B0 = (__int64)&qword_140C248B0;
qword_140C20938 = 0i64;
dword_140C2095C = 0;
word_140C20958 = 0;
PpmWmiIdleAccountingDpc.TargetInfoAsUlong = 275;
PpmWmiIdleAccountingDpc.DeferredContext = 0i64;
PpmWmiIdleAccountingDpc.DpcData = 0i64;
PpmWmiIdleAccountingDpc.ProcessorHistory = 0i64;
PopUserPresentSetStatus = 0;
qword_140CF4258 = 0i64;
dword_140CF427C = 0;
word_140CF4278 = 0;
LOWORD(PopUserPresentCompletedEvent.Header.Lock) = 1;
PopUserPresentCompletedEvent.Header.Size = 6;
PopUserPresentCompletedEvent.Header.SignalState = 0;
word_140C248A8 = 1;
byte_140C248AA = 6;
dword_140C248AC = 1;
PoFxInitPowerManagement();
dword_140C23D2C = 0;
qword_140C23D30 = 100i64;
qword_140C23D38 = 100i64;
dword_140C23D40 = 100;
PopNetInitialize(0i64);
PopInitializePowerButtonHold(0i64);
PopRecorderInit();
v16 = *((_QWORD *)LoaderBlock + 30);
LOBYTE(PopFirmwareResetReason) = *(_BYTE *)(v16 + 3408);
if( *(_BYTE *)(v16 + 3408) )
{
*((_QWORD *)&PopFirmwareResetReason + 1) = *(_QWORD *)(v16 + 3416);
xmmword_140C540C0 = *(_OWORD *)(v16 + 3424);
xmmword_140C540D0 = *(_OWORD *)(v16 + 3440);
}
TimebrokerServiceSid = PopCreateTimebrokerServiceSid();
if( TimebrokerServiceSid < 0 )
return TimebrokerServiceSid >= 0;
PopInitializeDirectedDrips(0i64, v17, v18);
SshInitialize(0i64);
}
if( v3 != 1 )
goto LABEL_3;
PopPowerAggregatorInitialize(1i64);
if( (unsigned __int8)HviIsAnyHypervisorPresent() )
{
PpmExitLatencyCheckEnabled = 0;
PpmExitLatencySamplingPercentage = 0;
}
if( (unsigned int)PopAggressiveStandbyActionsRegValue < 4 )
PopAggressiveStandbyEnabledActions = PopAggressiveStandbyActionsRegValue;
PopUmpoInitializeChannel();
PopUmpoInitializeMonitorChannel();
*(_QWORD *)PopPdcDeviceListLock = 0i64;
PopEsInit(1ui64);
PopInitializePowerSettingCallbacks();
TimebrokerServiceSid = PopEtInit();
if( TimebrokerServiceSid >= 0 )
{
TimebrokerServiceSid = PopPowerRequestInit();
if( TimebrokerServiceSid >= 0 )
{
TimebrokerServiceSid = PopInitializeHighPerfPowerRequest();
if( TimebrokerServiceSid >= 0 )
{
PopCheckPowerSourceAfterRtcWakeInitialize();
PopWatchdogInit();
PopInitializePowerButtonHold(1i64);
TimebrokerServiceSid = PpmInitHeteroEngine();
if( TimebrokerServiceSid >= 0 )
{
PopInitDripsWakeAccounting();
TimebrokerServiceSid = EmpProviderRegister(
0i64,
(__int64)&PopEmEntry,
1u,
(__int64)&PopEmCallback,
2,
(__int64)&v36);
if( TimebrokerServiceSid >= 0 )
{
v39 = 1;
PopErrataDisablePrimaryDeviceFastResume = 0;
EmClientQueryRuleState(&GUID_EM_RULE_DISABLE_DEVICE_FAST_RESUME, &v39);
if( v39 != 2 )
{
LABEL_5:
TimebrokerServiceSid = 0;
return TimebrokerServiceSid >= 0;
}
PopErrataDisablePrimaryDeviceFastResume = 1;
LABEL_3:
if( v3 == 2 )
{
PoFxRegisterDebugger();
HalReportResourceUsage(1ui64);
PopBatteryInitPhaseTwo();
TimebrokerServiceSid = EtwRegister(
&PPM_ETW_PROVIDER,
(PETWENABLECALLBACK)PpmEventTraceControlCallback,
0i64,
&PpmEtwHandle);
if( TimebrokerServiceSid < 0 )
return TimebrokerServiceSid >= 0;
PpmEtwRegistered = 1;
KeRegisterProcessorChangeCallback((PPROCESSOR_CALLBACK_FUNCTION)PopNewProcessorCallback, 0i64, 0);
PpmAcquireLock(&PpmPerfPolicyLock);
PopInitializeHeteroProcessors();
PpmReleaseLock(&PpmPerfPolicyLock);
if( PpmPerfArtificialDomainSetting != -1 )
PpmPerfArtificialDomainEnabled = PpmPerfArtificialDomainSetting != 0;
PpmIdleRegisterDefaultStates();
PpmCheckInitProcessors(0i64);
PpmAcquireLock(&PopFxSystemLatencyLock);
PoFxSendSystemLatencyUpdate();
PpmReleaseLock(&PopFxSystemLatencyLock);
PopPdcCsCheckSystemVolumeDevice();
PopUpdateBackgroundCoolingStatus(0);
PopInitVideoWnfState();
}
if( v3 != 3 )
goto LABEL_5;
TimebrokerServiceSid = PopDiagInitialize();
if( TimebrokerServiceSid < 0 )
return TimebrokerServiceSid >= 0;
SshInitialize(3i64);
PopTriggerDiagTraceAoAcCapability();
PopFanReportBootStartDevices();
v19 = 2;
v20 = 1;
if( PopSkipTickPolicy )
{
if( PopSkipTickPolicy == 1 )
{
v20 = 0;
if( (int)HalGetInterruptTargetInformation(2, 0, (__int64)&v37) >= 0 )
{
PopApicMode = HIDWORD(v38);
if( (unsigned __int8)PopCheckSkipTick() )
{
PoSkipTickMode = 0;
LABEL_37:
PpmInitIllegalThrottleLogging();
PopProcessBootstat(LoaderBlock);
if( (unsigned __int8)off_140C008D0[0]()
|| (unsigned int)(PoOffCrashConfigTable - 1) <= 1 && DWORD1(PoOffCrashConfigTable) )
{
PopDiagTraceAbnormalReset(DWORD1(PoOffCrashConfigTable));
}
PopIdleWakeInitialize();
PopAcquirePolicyLock();
PopUpdateUpgradeInProgress(0i64);
if( InitIsWinPEMode )
PopLogSleepDisabled(0x10ui64, 0xFui64, 0i64, 0i64);
if( byte_140C23E54 )
PopLogSleepDisabled(0x11ui64, 7ui64, 0i64, 0i64);
v21 = 0i64;
if( (*(_BYTE *)(*((_QWORD *)LoaderBlock + 30) + 2616i64) & 8) != 0 )
{
PopSecureLaunched = 1;
v21 = 4i64;
}
if( (HvlpFlags & 2) == 0 && VslVsmEnabled )
v21 = 31i64;
if( (_DWORD)v21 )
PopLogSleepDisabled(0x15ui64, v21, 0i64, 0i64);
PopDeepSleepInitialize(3ui64);
PopInitializePowerPolicySimulate();
if( (*(_BYTE *)PopSimulate & 1) != 0 )
{
byte_140C23E5E = 1;
*(_QWORD *)&xmmword_140C23E60 = 0x19000000064i64;
*((_QWORD *)&xmmword_140C23E60 + 1) = 0xFFFF0000000Ai64;
LODWORD(qword_140C23E80) = 4;
dword_140C23E88 = 2;
}
if( (*(_BYTE *)PopSimulate & 2) != 0 )
{
*(_DWORD *)&PopCapabilities = 16843009;
*((_WORD *)&PopCapabilities + 2) = 257;
*(&PopCapabilities + 6) = 1;
*(_WORD *)&byte_140C23E51 = 257;
}
PopResetCurrentPolicies();
PopInitializeAdpm(v22);
PopEsInit(3ui64);
PopInitilizeAcDcSettings();
PopUpdateConsoleDisplayState(PowerMonitorOn);
LODWORD(Tag) = 0;
ZwUpdateWnfStateData();
PopNetInitialize(3ui64);
PopReleasePolicyLock();
PopIdleInitAoAcDozeS4Timer();
PopCreateIdlePhaseWatchdog();
PopInitializeSystemIdleDetection();
PopInitializePreSleepNotifications(v24, v23);
v25 = *((_QWORD *)LoaderBlock + 30);
PopHiberLoaderScratchPages = *(_DWORD *)(v25 + 272);
PopHiberResumeXhciHandoffSkip = (*(_DWORD *)(v25 + 132) & 0x10000000) != 0;
PopSetupHighPerfPowerRequest();
PpmEnableWmiInterface();
PopAcquirePolicyLock();
PopCoalescingInitialize();
PopReleasePolicyLock();
PopInitializeDirectedDrips(3i64, v26, v27);
ExInitializeResourceLite(&PopDripsWatchdogContext);
if( PopPlatformAoAc )
{
if( (int)PopDripsWatchdogInitializeActions() < 0
|| (int)PopDripsWatchdogInitializeCallbackTimer() < 0
|| (int)PopDripsWatchdogInitializeDiagnosticTimer() < 0 )
{
goto LABEL_56;
}
dword_140C21228 |= 2u;
}
dword_140C21228 |= 1u;
LABEL_56:
PopSetupAudioEventNotification();
PopSetupMixedRealitytNotification();
PopSetupFullScrenVideoNotification(v29, v28, v30, v31, 0i64, Tag);
PopSetupUserPresencePredictionNotification(v32);
PopSetupSprActiveSessionChangeNotification();
PopSetupAirplaneModeNotification();
PopSetupBluetoothChargingNotification();
PopSetupMobileHotspotNotification();
PopThermalHandlePreviousShutdown();
PopCheckpointEfiRuntimeRedirected = (*((_DWORD *)LoaderBlock + 66) & 2) != 0;
TtmInit();
if( PopPlatformAoAc )
{
v40 = 1;
EmClientQueryRuleState(EM_RULE_IGNORE_INCORRECT_LID_NOTIFICATIONS, &v40);
if( v40 == 2 )
PopErrataReportingIncorrectLidState = 1;
if( PopPlatformAoAc )
{
if( PopLidStateForInputSuppressionOverride != -1 )
PopIgnoreLidStateForInputSuppression = PopLidStateForInputSuppressionOverride != 0;
v41 = 1;
EmClientQueryRuleState(&GUID_EM_RULE_ALLOW_INPUT_SUPPRESSION_NOTIFICATION, &v41);
PopEnableInputSuppression = v41 == 2;
if( v41 != 2 && PopEnableInputSuppressionOverride != -1 )
PopEnableInputSuppression = PopEnableInputSuppressionOverride != 0;
}
}
PopBatteryQueueWork(1i64);
PopSetupKsrCallbacks();
PopHiberEvaluateSkippingMemoryMapValidation();
PopReadErrataSkipMemoryOverwriteRequestControlLockAction();
goto LABEL_5;
}
v19 = 1;
}
}
else
{
v19 = 0;
}
}
PoSkipTickMode = v19;
v33 = v19 == 2;
if( v19 != 2 )
{
if( !v20 )
goto LABEL_37;
v33 = v19 == 2;
}
PopDiagTraceSkipTick(v33, v20);
goto LABEL_37;
}
}
}
}
}
return TimebrokerServiceSid >= 0;
}Referenced by:
IoInitSystemPreDrivers
Phase1InitializationDiscard
Phase1InitializationIoReady