PopUpdateSystemIdleContext
VOID __fastcall PopUpdateSystemIdleContext(INT64 a1){
unsigned int v1;
unsigned int v2;
unsigned int v3;
unsigned __int64 v4;
int a5;
unsigned int v6;
_SYSTEM_POWER_CAPABILITIES FilteredCapabilities;
v1 = a1;
memset((INT64)&FilteredCapabilities, 0i64);
if( !PopPlatformAoAc )
KeBugCheckEx(0xA0u, 0xAui64, 0x101ui64, 0i64, 0i64);
PopAcquireRwLockExclusive(&PopSystemIdleLock);
v2 = PopSystemIdleContext;
v3 = dword_140C0F194;
v4 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart / 0x989680ui64;
PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&PopCapabilities, &FilteredCapabilities);
if( (PopFullWake & 3) != 0 || (*(_DWORD *)PopSimulate & 0x1000000) != 0 )
{
a5 = *((_DWORD *)PopPolicy + 15);
if( a5 )
{
v6 = 1;
goto LABEL_9;
}
LABEL_8:
a5 = 0;
v6 = 5;
goto LABEL_9;
}
a5 = *(_DWORD *)dword_140C23D20;
if( !*(_DWORD *)dword_140C23D20 )
goto LABEL_8;
v6 = 4;
LABEL_9:
if( v1 == 1 || v1 == 4 )
PopPulseSystemIdleEvent(3ui64);
if( v1 == 3 )
{
PopIdleCancelAoAcDozeS4Timer(6i64);
if( byte_140C231F1 )
PopIdleArmAoAcDozeS4Timer();
}
LODWORD(PopSystemIdleContext) = v6;
LODWORD(dword_140C0F194) = a5;
qword_140C0F2C0 = v4;
dword_140C0F2C8 = v1;
dword_140C0F2CC = v2;
dword_140C0F2D0 = v3;
PopDiagTraceSystemIdleContextUpdate(v1, v2, (EVENT_DESCRIPTOR *)v3, v6, a5);
PopReleaseRwLock((UINT64)&PopSystemIdleLock);
}Referenced by:
PopInitSIdle