PopVerifySystemPowerState

VOID __fastcall PopVerifySystemPowerState(INT64 *a1, INT64 a2){
  int v2; 
  INT64 *v3; 
  int v4; 
  char v5; 
  BYTE *v6; 
  BYTE *v7; 
  BYTE *v9; 
  v2 = a2;
  v3 = a1;
  if( a1 )
  {
    v4 = *(_DWORD *)a1;
    if( *(int *)a1 <= -1 || (unsigned int)(v4 - 2) <= 3 )
    {
      v5 = 1;
      if( (int)a2 >= 0 )
      {
        v6 = &PopCapabilities;
        if( (int)a2 > 1 )
        {
          if( (_DWORD)a2 != 2 )
            goto LABEL_8;
        }
        else
        {
          if( v4 == 5 )
          {
            if( PopIsHiberbootSupported((INT64)&PopCapabilities) )
              goto LABEL_8;
            if( PopIsHibernateSupported(v7) )
              goto LABEL_8;
            v4 = 4;
          }
          if( v4 == 4 )
          {
            if( *(&PopCapabilities + 5) )
              goto LABEL_8;
            v4 = 3;
          }
          if( v4 == 3 )
          {
            if( *(&PopCapabilities + 4) )
              goto LABEL_8;
            v4 = 2;
          }
          if( v4 == 2 )
          {
            if( *(&PopCapabilities + 3) )
              goto LABEL_8;
            v4 = 1;
          }
          if( v4 != 1 || v2 != 1 )
            goto LABEL_8;
          v5 = 0;
          v4 = 2;
        }
        if( v4 == 2 )
        {
          if( *(&PopCapabilities + 3) )
            goto LABEL_8;
          v4 = 3;
        }
        if( v4 == 3 )
        {
          if( *(&PopCapabilities + 4) )
            goto LABEL_8;
          v4 = 4;
        }
        if( v4 == 4 )
        {
          if( *(&PopCapabilities + 5) )
            goto LABEL_8;
          v4 = 5;
        }
        if( v4 == 5 && (!v5 || !PopIsHiberbootSupported((INT64)v6) && !PopIsHibernateSupported(v9)) )
          v4 = 1;
      }
LABEL_8:
      *(_DWORD *)v3 = v4;
    }
  }
}

Referenced by:

PdcPoVerifyPowerState
PopActionRetrieveInitialState
PopAdvanceSystemPowerState
PopExecutePowerAction
PopVerifySystemPowerPolicy