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