PopValidateRTCWake

UINT8 __stdcall PopValidateRTCWake(UINT8 *Uncertain){
  unsigned __int64 a7; 
  int v2; 
  unsigned int v3; 
  unsigned __int8 v4; 
  UINT8 v5; 
  int v7; 
  int v8; 
  unsigned __int64 v9; 
  INT64 v11; 
  INT64 a5; 
  INT64 a6; 
  SYSTEM_BATTERY_STATE PowerState; 
  a7 = 0i64;
  v2 = PopFixedWakeSourceMask & 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 = dword_140C23D0C;
  }
  v8 = dword_140C232C0;
  if( dword_140C232C0 >= 0 )
  {
LABEL_6:
    if( (unsigned __int64)v8 < 3 )
      goto LABEL_11;
  }
  if( (PopFixedWakeSourceMask & 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;
    a7 = v11 - 10000 * (unsigned int)PopCalculateWakeTimeAdjustment();
    if( v9 - 100000000 < a7 )
    {
      if( a7 <= v9
        || a7 - 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(a6) = v4;
  LODWORD(a5) = v7;
  PopDiagTraceRtcWakeInfo(v4, v5, v3, *Uncertain, a5, a6, a7);
  return v5;
}

Referenced by:

PopHandleWakeSources