PopDeferDoze

UINT8 __fastcall PopDeferDoze(INT64 a1, INT64 rdx0, BYTE *r8_0){
  int v3; 
  UINT8 v4; 
  unsigned int v6; 
  unsigned int v7; 
  CHAR IsDozeSupported; 
  int v9; 
  int v10; 
  int v11; 
  int v12; 
  int v13; 
  INT64 v14; 
  unsigned int v15; 
  INT64 v16; 
  PVOID v17; 
  PVOID P[2]; 
  int a2; 
  int a3; 
  INT64 a4; 
  P[0] = 0i64;
  v3 = 0;
  a2 = 0;
  a3 = 0;
  v4 = 0;
  a4 = 0i64;
  v6 = rdx0;
  v7 = a1;
  IsDozeSupported = PopIsDozeSupported(&PopCapabilities);
  v10 = v9 | 0x10;
  if( IsDozeSupported )
    v10 = v9;
  v11 = v10 | 0x20;
  if( *((_DWORD *)PopPolicy + 22) )
    v11 = v10;
  if( PopQueryPowerSettingUlong(&GUID_LEGACY_RTC_MITIGATION, &a2, &a3) )
  {
    v3 = a2;
    if( !*r8_0 )
      v3 = a3;
  }
  v12 = v11 | 0x40;
  if( v3 )
    v12 = v11;
  v13 = v12;
  if( r8_0[3] && *r8_0 && a2 == 1 && !a3 )
    v13 = v12 | 0x100;
  v14 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  if( !PopIsWakeTimerImmanent(*(INT64 *)&KUSER_SHARED_DATA.InterruptTime.LowPart, v7, v6, (INT64)&a4, P) )
    v13 |= 0x80u;
  v15 = ~PopDozeDeferralChecksToIgnore & v13;
  if( !v15 )
  {
    v4 = 1;
    PopPrintEx(3ui64, (INT8 *)"Deferring doze to S4\n");
  }
  v16 = v14;
  v17 = P[0];
  PopDiagTraceDozeDeferralDecision(v4, v15, (INT64)P[0], v16, a4, v7, v6);
  if( v17 )
    ExFreePoolWithTag(v17, 0x53577254u);
  return v4;
}

Referenced by:

PopTransitionSystemPowerStateEx