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