PopIdleAoAcDozeToS4

VOID __stdcall PopIdleAoAcDozeToS4(VOID *Context){
  POWER_ACTION_POLICY ActionPolicy; 
  _POP_ACTION_TRIGGER Trigger; 

  PopAcquirePolicyLock();
  PopTraceSystemIdleS0LowPowerDoze();
  dword_140C231D0 = 0;
  *(_OWORD *)&Trigger.Wait = 0i64;
  if( dword_140C231E8 == 1 )
    goto LABEL_10;
  if( dword_140C231E8 != 2 )
  {
    if( dword_140C231E8 == 3 )
    {
      Trigger.Type = PolicyImmediateDozeS4AdaptiveBudget;
      goto LABEL_11;
    }
    if( dword_140C231E8 == 4 )
    {
      Trigger.Type = PolicyImmediateDozeS4AdaptiveReserveNoWake;
      goto LABEL_11;
    }
LABEL_10:
    Trigger.Type = PolicyImmediateDozeS4;
    goto LABEL_11;
  }
  Trigger.Type = PolicyImmediateDozeS4Predicted;
  if( qword_140C232B8
    && *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - qword_140C232B8 > 10000000
                                                                             * (unsigned __int64)(unsigned int)PopSmartUserPresenceCheckTimeout )
  {
    Trigger.Type = PolicyImmediateDozeS4PredictedNoWake;
  }
LABEL_11:
  ActionPolicy.EventCode = 0;
  Trigger.Flags = 128;
  ActionPolicy.Action = PowerActionHibernate;
  ActionPolicy.Flags = -2147483612;
  PopExecutePowerAction(&Trigger, 0i64, &ActionPolicy, PowerSystemHibernate, SubstituteLightestOverallDownwardBounded);
  PopReleasePolicyLock();
  _InterlockedAnd(&dword_140C231EC, 0);
  PopDeepSleepClearDisengageReason(PopDeepSleepDisengageReasonDozeS4WorkerQueued);
}

Referenced by:

No references.