PopActionRetrieveInitialState

VOID __stdcall PopActionRetrieveInitialState(
        _SYSTEM_POWER_STATE *LightestSystemState,
        _SYSTEM_POWER_STATE *DeepestSystemState,
        _SYSTEM_POWER_STATE *InitialSystemState,
        UINT8 *QueryDevices){
  _SYSTEM_POWER_STATE *v4; 
  _DWORD *v8; 
  _SYSTEM_POWER_STATE v9; 
  v4 = LightestSystemState;
  if( (unsigned int)(Action - 4) <= 2 )
  {
    *LightestSystemState = PowerSystemShutdown;
    *DeepestSystemState = PowerSystemShutdown;
  }
  else if( Action == PowerActionWarmEject )
  {
    *DeepestSystemState = PowerSystemHibernate;
    PopVerifySystemPowerState((INT64 *)DeepestSystemState, 0i64);
  }
  else
  {
    v8 = PopPolicy;
    *DeepestSystemState = *((_SYSTEM_POWER_STATE *)PopPolicy + 18);
    v9 = v8[17];
    if( v9 > *v4 )
      *v4 = v9;
  }
  if( *v4 > *DeepestSystemState )
    *DeepestSystemState = *v4;
  *QueryDevices = 1;
  if( *v4 == PowerSystemShutdown || *(int *)Flags < 0 && (unsigned int)(SleepReason - 1) <= 1 )
    *QueryDevices = 0;
  if( (unsigned __int8)PopFastS4Check() )
  {
    *v4 = *DeepestSystemState;
    *(_DWORD *)Flags &= ~0x10000000u;
  }
  if( (*(_DWORD *)Flags & 0x10000000) == 0 )
    v4 = DeepestSystemState;
  *InitialSystemState = *v4;
}

Referenced by:

PopTransitionSystemPowerStateEx