PopAdvanceSystemPowerState

VOID __stdcall PopAdvanceSystemPowerState(
        _SYSTEM_POWER_STATE *PowerState,
        POP_SUBSTITUTION_POLICY SubstitutionPolicy,
        _SYSTEM_POWER_STATE LightestSystemState,
        _SYSTEM_POWER_STATE DeepestSystemState){
  _SYSTEM_POWER_STATE v4; 
  _SYSTEM_POWER_STATE v8; 
  _SYSTEM_POWER_STATE v9; 
  __int32 v10; 

  if( !PowerState )
    return;
  v4 = *PowerState;
  if( *(int *)PowerState < 2 )
    return;
  if( v4 >= PowerSystemShutdown )
    goto LABEL_9;
  if( SubstitutionPolicy == SubstituteLightenSleep )
  {
    v8 = v4 - 1;
LABEL_6:
    *PowerState = v8;
    PopVerifySystemPowerState(PowerState, SubstitutionPolicy);
    goto LABEL_7;
  }
  v10 = SubstitutionPolicy - 1;
  if( v10 )
  {
    if( v10 != 1 )
      goto LABEL_7;
    if( v4 != PowerSystemHibernate )
    {
      v8 = v4 + 1;
      SubstitutionPolicy = SubstituteDeepenSleep;
      goto LABEL_6;
    }
LABEL_9:
    *PowerState = PowerSystemWorking;
    return;
  }
  *PowerState = v4 - 1;
  PopVerifySystemPowerState(PowerState, SubstituteLightestOverallDownwardBounded);
  if( *PowerState == v4 )
    *PowerState = PowerSystemWorking;
LABEL_7:
  v9 = *PowerState;
  if( *PowerState != PowerSystemWorking && (v9 < LightestSystemState || v9 > DeepestSystemState) )
    goto LABEL_9;
}

Referenced by:

PopTransitionSystemPowerStateEx