PopInitSIdle

VOID __stdcall PopInitSIdle(){
  unsigned int v0; 
  unsigned int v1; 
  UINT8 v2; 
  POP_SYSTEM_IDLE_TIMEOUT_SOURCE v3; 
  _SYSTEM_POWER_STATE v4; 
  _SYSTEM_POWER_CAPABILITIES v5; 
  int v6; 
  int v7; 
  _SYSTEM_POWER_CAPABILITIES v8; 
  __int64 v9; 
  UINT64 Timeout; 
  UINT64 Flags; 
  _SYSTEM_POWER_CAPABILITIES FilteredCapabilities[44]; 

  v1 = v0;
  memset(&FilteredCapabilities[20], 0i64, 0x60u);
  memset(FilteredCapabilities, 0i64, 0x4Cu);
  if( PopPlatformAoAc )
  {
    PopUpdateSystemIdleContext(v1);
    return;
  }
  v2 = 1;
  FilteredCapabilities[23] = -1;
  FilteredCapabilities[26] = 1;
  v3 = PopSystemIdleTimeoutSourceDisabled;
  FilteredCapabilities[27] = *(_DWORD *)(*(&stru_140C23628 + 232) + 56i64);
  FilteredCapabilities[28] = 2;
  if( (*(&stru_140C23628 + 1864) & 3) == 0 && *(&stru_140C23628 + 446) && (*(&stru_140C23628 + 582) & 0x1000000) == 0 )
  {
    v3 = PopSystemIdleTimeoutSourceUnattend;
    if( (unsigned int)(SystemAction - 2) <= 1 )
    {
      FilteredCapabilities[28] = *(&SystemAction + 1);
      FilteredCapabilities[25] = SystemAction;
    }
    else
    {
      FilteredCapabilities[25] = 2;
      FilteredCapabilities[28] = 4;
    }
    FilteredCapabilities[27] = 0;
    FilteredCapabilities[23] = *(&stru_140C23628 + 446);
    goto LABEL_5;
  }
  PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&stru_140C23628 + 518, FilteredCapabilities);
  if( !*(_DWORD *)(*(&stru_140C23628 + 232) + 60i64) )
  {
    if( !*(_DWORD *)(*(&stru_140C23628 + 232) + 88i64) )
      goto LABEL_5;
    goto LABEL_32;
  }
  if( LOBYTE(FilteredCapabilities[5]) )
  {
    FilteredCapabilities[25] = 2;
    v3 = PopSystemIdleTimeoutSourceAoAc;
    v8 = *(_DWORD *)(*(&stru_140C23628 + 232) + 60i64);
    FilteredCapabilities[28] = 1;
  }
  else
  {
    if( !*(_WORD *)((char *)FilteredCapabilities + 3) && !BYTE1(FilteredCapabilities[1]) )
    {
LABEL_32:
      if( !PopIsDozeSupported(FilteredCapabilities) || !*(_DWORD *)(v9 + 88) )
        goto LABEL_5;
      v3 = PopSystemIdleTimeoutSourceHibernateDoze;
      FilteredCapabilities[25] = 3;
      v8 = *(_DWORD *)(v9 + 88);
      FilteredCapabilities[28] = 5;
      goto LABEL_35;
    }
    FilteredCapabilities[25] = 2;
    v3 = PopSystemIdleTimeoutSourceSx;
    v8 = *(_DWORD *)(*(&stru_140C23628 + 232) + 60i64);
    FilteredCapabilities[28] = 4;
  }
LABEL_35:
  FilteredCapabilities[23] = v8;
LABEL_5:
  if( RtlCompareMemory(&Action, &FilteredCapabilities[25], 12) == (_SIZE_T *)12
    && (v4 = LightestState, LightestState == FilteredCapabilities[28])
    && (v5 = ::Timeout, (_DWORD)::Timeout == FilteredCapabilities[23]) )
  {
    v2 = 0;
  }
  else
  {
    PopResetIdleTime(PopSystemIdleTimeResetReasonIdleParametersChanged);
    v4 = FilteredCapabilities[28];
    v5 = FilteredCapabilities[23];
    Action = *(POWER_ACTION_POLICY *)&FilteredCapabilities[25];
    byte_140C231D4 = 1;
    LightestState = FilteredCapabilities[28];
    LODWORD(::Timeout) = FilteredCapabilities[23];
    if( dword_140C002E0 )
      v6 = dword_140C231C4 | 1;
    else
      v6 = dword_140C231C4 & 0xFFFFFFFE;
    dword_140C231C4 = v6;
    if( !*(&stru_140C23628 + 2092) )
    {
      if( dword_140C00300 )
        v7 = v6 | 2;
      else
        v7 = v6 & 0xFFFFFFFD;
      dword_140C231C4 = v7;
    }
  }
  LODWORD(Flags) = Action.Flags;
  LODWORD(Timeout) = v5;
  PopTraceSystemIdleTimeoutInitialization(v2, v3, Action.Action, v4, Timeout, Flags);
}

Referenced by:

PopApplyPolicy
PopBatteryApplyCompositeState
PopDispatchFullWake
PopSleepPowerSettingCallback
PopTransitionSystemPowerStateEx