PopIdleArmAoAcDozeS4Timer
VOID __stdcall PopIdleArmAoAcDozeS4Timer(){
char v0;
unsigned __int64 v1;
_SYSTEM_POWER_CAPABILITIES FilteredCapabilities[22];
POP_DOZE_TIMER_SOURCE Source;
INT64 Time;
Time = 0i64;
Source = PopDozeTimerSourceUnknown;
memset(FilteredCapabilities, 0i64, 0x4Cu);
PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&stru_140C23628 + 518, FilteredCapabilities);
v0 = 0;
if( PopIsDozeSupported(FilteredCapabilities) && PopIdleChooseDozeS4Time(&Time, &Source) )
{
v1 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(&PopIdleAoAcDozeS4Lock);
if( !(_BYTE)MinState )
{
KeSetTimer2((INT64)&PopIdleAoAcDozeS4Timer, Time, 0i64, 0i64);
v0 = 1;
dword_140C231E8 = Source;
LOBYTE(MinState) = 1;
}
KxReleaseSpinLock(&PopIdleAoAcDozeS4Lock);
__writecr8(v1);
if( v0 )
PopTraceSystemIdleS0LowPowerDozeTimerArmed(Source, Time);
}
}Referenced by:
PopIdleCsStateChanged
PopUmpoProcessPowerMessage
PopUpdateSmartUserPresencePredictions
PopUpdateSystemIdleContext