PopCaptureSleepStudyStatistics
__int64 __fastcall PopCaptureSleepStudyStatistics(_QWORD *a1, __int64 a2, __int64 a3){
unsigned int v3;
BOOL IsHibernateSupported;
INT8 IsLockConsoleTimeoutActive;
UINT64 *v9;
__int64 v10;
_KIRQL v11;
_SYSTEM_POWER_CONDITION v12;
_SYSTEM_POWER_CONDITION v13;
_SYSTEM_POWER_CONDITION v14;
_SYSTEM_POWER_CONDITION v15;
_SYSTEM_POWER_CONDITION v16;
int v17;
_SYSTEM_POWER_CONDITION v18;
NTSTATUS ModernStandbyTransitionReason;
UINT8 v20;
INT64 v21;
INT64 v22;
INT64 v23;
INT64 v24;
INT64 v25;
UINT8 v26;
INT64 v27;
UINT64 v28;
INT64 v29;
UINT64 v30;
UINT8 v31;
UINT64 v32;
char v33;
_KIRQL v34;
UINT64 v36;
UINT64 v37;
UINT64 v38;
UINT64 v39;
UINT64 v40;
UINT64 v41;
PO_S0_DISCONNECTED_REASON Reason;
int ReturnedLength;
int v44;
int v45;
int v46;
int v47;
int v48;
int v49;
INT64 v50;
UINT64 PreVetoCount;
UINT64 VetoCount;
__int128 v53;
__int128 v54;
SYSTEM_BATTERY_STATE PowerState;
_SYSTEM_POWER_CAPABILITIES FilteredCapabilities[20];
UINT64 ReturnedLengtha;
v3 = 0;
PreVetoCount = 0i64;
Reason = PoS0DisconnectedReasonNone;
LODWORD(ReturnedLengtha) = 0;
VetoCount = 0i64;
memset(&PowerState, 0, sizeof(PowerState));
v53 = 0i64;
v54 = 0i64;
memset(FilteredCapabilities, 0i64, 0x4Cu);
ReturnedLength = 0;
v48 = 0;
v47 = 0;
IsHibernateSupported = 0;
IsLockConsoleTimeoutActive = 0;
v45 = 0;
v46 = 0;
v44 = 0;
PopCurrentPowerStatePrecise(&PowerState);
if( *(_OWORD *)a1 == *(_OWORD *)&CmFcpWnfTypeId.TypeId[4] )
IsLockConsoleTimeoutActive = PopIsLockConsoleTimeoutActive();
PopAcquirePolicyLock();
v10 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
if( *a1 == *(_QWORD *)&CmFcpWnfTypeId.TypeId[4].Data1 && a1[1] == *(_QWORD *)CmFcpWnfTypeId.TypeId[4].Data4 )
{
PopWnfCsEnterScenarioId = a2;
PopCalculateIdleInformation((__int64)&v53, v9);
PpmGetPlatformSelectionVetoCounts((unsigned int)PlatformIdleStateIndex, &PreVetoCount, &VetoCount);
LODWORD(Pfn1) = PowerState.RemainingCapacity;
qword_140C4FC50 = *((_QWORD *)&v53 + 1);
dword_140C4FC60 = DWORD2(v54);
qword_140C4FC58 = v53;
InitialHwDripsResidency = v54;
qword_140C4FCE0 = PreVetoCount;
qword_140C4FCE8 = VetoCount;
dword_140C4FD10 = PowerState.MaxCapacity;
qword_140C4FC48 = v10;
SourceTime = 0i64;
qword_140C4FC68 = 0i64;
qword_140C4FC70 = 0i64;
qword_140C4FC90 = 0i64;
qword_140C4FCC8 = 0i64;
qword_140C4FCD0 = 0i64;
qword_140C4FCA0 = 0i64;
qword_140C4FCB0 = 0i64;
CpuBusyTime = 0i64;
qword_140C4FD20 = 0i64;
qword_140C4FD28 = 0i64;
qword_140C4FD30 = 0i64;
byte_140C4FD0C = 0;
PopNetIsDisconnectStandbyActive(&Reason);
LOBYTE(v11) = KeAcquireSpinLockRaiseToDpc(&qword_140C22E38);
qword_140C22E28 = 0i64;
qword_140C22E30 = 0i64;
PopDisplayOnPerformance = 0i64;
dword_140C22E40 = 1;
KeReleaseSpinLock(&qword_140C22E38, v11);
PopGetEnergyCounter(&CsSessionEnergyCounter);
byte_140C4FD00 = (*(&stru_140C23628 + 441) == 0) | byte_140C4FD00 & 0xFE;
byte_140C4FD01 ^= (byte_140C4FD01 ^ PopNetIsCompliantNicPresent()) & 1;
if( (((Reason - 1) & 0xFFFFFFFC) != 0 || Reason == PoS0DisconnectedReasonSettingPolicy)
&& PopNetCheckUserConnectivityPolicy()
&& !PopNetCheckOpportunisticDs() )
{
byte_140C4FD01 &= ~2u;
}
else
{
byte_140C4FD01 |= 2u;
}
if( PopDiagCachedAggregatorIntent )
{
dword_140C4FD3C = PopDiagCachedAggregatorIntent;
dword_140C4FD40 = 6;
PopDiagCachedAggregatorAction = 6;
PopDiagCachedAggregatorIntent = 0;
}
PopGetPowerSettingValue(&GUID_ENERGY_SAVER_POLICY, v12, (VOID *)3, &ReturnedLength, v36, &ReturnedLengtha);
byte_140C4FD01 ^= (byte_140C4FD01 ^ (4 * ReturnedLength)) & 4;
PopGetPowerSettingValue(&GUID_VIDEO_POWERDOWN_TIMEOUT, v13, (VOID *)3, &v44, v37, &ReturnedLengtha);
dword_140C4FCF0 = v44;
PopGetPowerSettingValue(&GUID_VIDEO_CONSOLE_LOCK_TIMEOUT, v14, (VOID *)3, &v45, v38, &ReturnedLengtha);
dword_140C4FCF4 = v45;
byte_140C4FCF8 = IsLockConsoleTimeoutActive;
PopGetPowerSettingValue(&GUID_STANDBY_TIMEOUT, v15, (VOID *)3, &v46, v39, &ReturnedLengtha);
dword_140C4FCFC = v46;
byte_140C4FD15 = (char)KdDebuggerEnabled;
PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&stru_140C23628 + 518, FilteredCapabilities);
v3 = v17;
if( v17 >= 0 )
IsHibernateSupported = PopIsHibernateSupported(FilteredCapabilities);
byte_140C4FD14 = IsHibernateSupported;
PopGetPowerSettingValue(&GUID_HIBERNATE_TIMEOUT, v16, (VOID *)3, &v47, v40, &ReturnedLengtha);
dword_140C4FD18 = v47;
PopGetPowerSettingValue(&GUID_STANDBY_BUDGET_PERCENT, v18, (VOID *)3, &v48, v41, &ReturnedLengtha);
dword_140C4FD1C = v48;
_InterlockedExchange64(qword_140C4FD80, 0i64);
if( PopFxLookupSocSubsystemsByPlatformIdleState(PlatformIdleStateIndex) )
v3 = PopFxResetSocSubsystemAccounting((unsigned int)PlatformIdleStateIndex);
PopFxStartDeviceAccounting();
PpmIdleStartCsVetoAccounting();
dword_140C4FD04 = *(&stru_140C23628 + 537);
dword_140C4FD08 = PopAggressiveStandbyAppliedActions;
ExStartRecordingIRTimerExpiries();
PpmResetDripsAccountingSnapshot();
ModernStandbyTransitionReason = PopGetModernStandbyTransitionReason(1, 0i64);
PopDiagTraceCsEnterReason((POWER_MONITOR_REQUEST_REASON)ModernStandbyTransitionReason);
PopSetConnectedStandbyMarker(v20);
PopStatsNotifyPowerRequestCsState(v21, 1);
v50 = PopWdiCurrentScenarioInstanceId;
PopDirectedDripsNotify(0i64, &v50, v22, v23);
PopIdleWakeNotifyModernStandbyEnter();
v49 = 0;
PopQueryInputSuppressionCount(&v49);
dword_140C4FD38 = v49;
}
else
{
PopIdleWakeNotifyModernStandbyExit();
PopCalculateCsSummary(a3, (UINT64 *)(unsigned int)PopSleepstudyStopReason);
v50 = a3;
PopDirectedDripsNotify(1i64, &v50, v24, v25);
PpmIdleCaptureCsVetoAccounting(v26, (unsigned int)PlatformIdleStateIndex, v27);
ExStopRecordingIRTimerExpiries();
PopFxStopDeviceAccounting();
PpmSnapDripsAccountingSnapshot(v28, 10i64 * *(_QWORD *)(a3 + 32));
PopDiagTraceCsConsumption((int *)a3);
PopDiagTraceCsExitReason(a3, a2);
if( PopFxLookupSocSubsystemsByPlatformIdleState(PlatformIdleStateIndex) )
{
PopFxLogSocSubsystemBlockingTimes(v29, (unsigned int)PlatformIdleStateIndex, v30);
v3 = PopFxLogSocSubsystemMetadata(v31, (unsigned int)PlatformIdleStateIndex, v32);
}
PopStatsNotifyPowerRequestCsState(v29, 0);
PopGetModernStandbyTransitionReason(0, 0i64);
PopClearConnectedStandbyMarker();
qword_140C4FC48 = 0i64;
v33 = KeAcquireSpinLockRaiseToDpc(&qword_140C22E38);
dword_140C22E40 = 0;
LOBYTE(v34) = v33;
KeReleaseSpinLock(&qword_140C22E38, v34);
}
PopReleasePolicyLock();
return v3;
}Referenced by:
PopSleepstudyCaptureSessionStatistics