PopValidateRTCWake

UINT8 __stdcall PopValidateRTCWake(UINT8 *Uncertain){
  unsigned __int64 v1; 
  int v2; 
  unsigned int v3; 
  unsigned __int8 v4; 
  UINT8 v5; 
  int v7; 
  int v8; 
  unsigned __int64 v9; 
  __int64 v11; 
  INT64 v12; 
  INT64 v13; 
  SYSTEM_BATTERY_STATE PowerState; 

  v1 = 0i64;
  v2 = *(&stru_140C23628 + 2960) & 0x18;
  *Uncertain = 0;
  v3 = 0;
  v4 = 0;
  v5 = 0;
  v7 = 1;
  if( v2 == 16 )
  {
    v8 = 1;
    dword_140C232C0 = 1;
    goto LABEL_6;
  }
  if( v2 == 8 )
  {
    v8 = 0;
    v4 = 1;
    dword_140C232C0 = 0;
    goto LABEL_6;
  }
  if( v2 )
  {
    PopCurrentPowerStatePrecise(&PowerState);
    dword_140C232C0 = *(&stru_140C23628 + 441);
  }
  v8 = dword_140C232C0;
  if( dword_140C232C0 >= 0 )
  {
LABEL_6:
    if( (unsigned __int64)v8 < 3 )
      goto LABEL_11;
  }
  if( (*(&stru_140C23628 + 2960) & 4) == 0 )
    *Uncertain = 1;
  if( ProgrammedWakeTimeDc && ProgrammedWakeTimeAc > ProgrammedWakeTimeDc )
  {
    v8 = 1;
    dword_140C232C0 = 1;
  }
  else
  {
    v8 = 0;
    *Uncertain = 0;
    dword_140C232C0 = 0;
    v4 = 1;
  }
LABEL_11:
  v9 = *(&ProgrammedWakeTimeAc + 3 * v8);
  if( v9 )
  {
    v11 = qword_140C232A8;
    v1 = v11 - 10000 * (unsigned int)PopCalculateWakeTimeAdjustment();
    if( v9 - 100000000 < v1 )
    {
      if( v1 <= v9
        || v1 - v9 < (-(__int64)(PopPendingUserPresenceDuringSystemSleep != 0) & 0xFFFFFFFFBE6F5500ui64) + 1200000000 )
      {
        v5 = 1;
      }
      else
      {
        dword_140C232C0 = 3;
        v3 = 3;
        *Uncertain = 0;
      }
    }
    else
    {
      dword_140C232C0 = 3;
      v3 = 2;
      *Uncertain = 0;
    }
    v7 = 0;
  }
  else
  {
    dword_140C232C0 = 3;
    v3 = 1;
    *Uncertain = 0;
  }
  LODWORD(v13) = v4;
  LODWORD(v12) = v7;
  PopDiagTraceRtcWakeInfo(v4, v5, v3, *Uncertain, v12, v13, v1);
  return v5;
}

Referenced by:

PopHandleWakeSources