PopIdleArmAoAcDozeS4Timer
VOID __stdcall PopIdleArmAoAcDozeS4Timer(){
char v0;
UINT64 v1;
unsigned __int8 v2;
unsigned __int64 v3;
EVENT_DESCRIPTOR *v4;
_SYSTEM_POWER_CAPABILITIES FilteredCapabilities;
INT64 v6;
UINT64 v7;
v7 = 0i64;
LODWORD(v6) = 0;
memset((INT64)&FilteredCapabilities, 0i64);
PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&PopCapabilities, &FilteredCapabilities);
v0 = 0;
if( PopIsDozeSupported(&FilteredCapabilities.PowerButtonPresent) && PopIdleChooseDozeS4Time(&v7, &v6) )
{
KeAcquireSpinLockRaiseToDpc(&PopIdleAoAcDozeS4Lock, v1);
v3 = v2;
if( !(_BYTE)MinState )
{
KeSetTimer2(&PopIdleAoAcDozeS4Timer, v7, 0i64, 0i64);
v0 = 1;
dword_140C231E8 = v6;
LOBYTE(MinState) = 1;
}
KxReleaseSpinLock(&PopIdleAoAcDozeS4Lock);
__writecr8(v3);
if( v0 )
PopTraceSystemIdleS0LowPowerDozeTimerArmed(v6, v7, v4);
}
}Referenced by:
PopIdleCsStateChanged
PopUmpoProcessPowerMessage
PopUpdateSmartUserPresencePredictions
PopUpdateSystemIdleContext