PopPolicySystemIdle

INT64 __fastcall PopPolicySystemIdle(){
  bool v0; 
  bool v1; 
  int ConsoleDisplayRequestCount; 
  bool v3; 
  CHAR S0LowPowerIdleAction; 
  char v5; 
  UINT8 a5; 
  UINT64 a5a; 
  UINT64 DozeS4Timeout; 
  POWER_ACTION Action; 
  _SYSTEM_POWER_STATE MinState; 
  INT64 a1[2]; 
  __int64 v13; 
  _SYSTEM_POWER_CAPABILITIES FilteredCapabilities; 
  memset((INT64)&FilteredCapabilities, 0i64);
  v0 = 0;
  *(_OWORD *)a1 = 0i64;
  v13 = 0i64;
  if( PopPlatformAoAc )
    KeBugCheckEx(0xA0u, 0xAui64, 3ui64, 0i64, 0i64);
  v1 = 0;
  ConsoleDisplayRequestCount = PopGetConsoleDisplayRequestCount();
  PopAcquirePolicyLock();
  if( KUSER_SHARED_DATA.LastSystemRITEventTickCount != dword_140C231B0 )
  {
    dword_140C231B0 = KUSER_SHARED_DATA.LastSystemRITEventTickCount;
    PopResetIdleTime(1i64);
  }
  PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&PopCapabilities, &FilteredCapabilities);
  v3 = 0;
  if( !FilteredCapabilities.spare2[2] && dword_140C231E0 )
    v3 = (unsigned int)(AccumulatedIdleTime - dword_140C231E0) < *(_DWORD *)dword_140C23D20;
  if( *(_DWORD *)::a5 && (unsigned int)AccumulatedIdleTime >= *(_DWORD *)::a5 && !v3 && !PopUserShutdownInProgress )
  {
    if( FilteredCapabilities.spare2[2] )
    {
      if( !PopConsoleDisplayState || !ConsoleDisplayRequestCount )
        v0 = 1;
    }
    else
    {
      v0 = dword_140C231C4 == 0;
    }
  }
  byte_140C231F0 = v0;
  if( FilteredCapabilities.spare2[2] && (_DWORD)Source1 == 2 )
    v1 = (_DWORD)dword_140C231C0 == 1;
  if( v0 )
  {
    if( !v1 )
      PopResetIdleTime(5i64);
    byte_140C231D5 = 0;
  }
  PopIsHibernateSupported(&FilteredCapabilities.PowerButtonPresent);
  S0LowPowerIdleAction = PopIsDozeSupported(&FilteredCapabilities.PowerButtonPresent);
  LOBYTE(MinState) = ::MinState;
  LOBYTE(Action) = v1;
  LOBYTE(DozeS4Timeout) = v5;
  PopTraceSystemIdleUpdate(
    (unsigned int)AccumulatedIdleTime,
    v0,
    dword_140C231C4 != 0,
    v3,
    a5,
    DozeS4Timeout,
    S0LowPowerIdleAction,
    *((_DWORD *)PopPolicy + 22),
    Action,
    MinState);
  if( v0 && !v1 )
  {
    a1[0] = 0x8000000007i64;
    LODWORD(a5a) = 1;
    PopExecutePowerAction((INT64)a1, 0i64, (INT64)&Source1, (unsigned int)dword_140C231C0, a5a);
  }
  PopReleasePolicyLock();
  if( !v0 && PsWin32CalloutsEstablished )
    PopScanIdleList();
  if( *((_DWORD *)KeGetCurrentThread() + 121) )
    __fastfail(0x20u);
  return 0i64;
}

Referenced by:

No references.