PopUpdateSystemIdleContext
VOID __stdcall PopUpdateSystemIdleContext(INT64 a1){
unsigned int v1;
unsigned int v2;
unsigned int v3;
unsigned __int64 v4;
int v5;
unsigned int v6;
size_t *pcchRemaining;
ULONG v8;
_SYSTEM_POWER_CAPABILITIES FilteredCapabilities[20];
v1 = a1;
memset(FilteredCapabilities, 0i64, 0x4Cu);
if( !PopPlatformAoAc )
KeBugCheckEx(0xA0u, (PVOID)0xA, (PVOID)0x101, 0i64, 0i64);
PopAcquireRwLockExclusive((_POP_RW_LOCK *)&PopIrpWorkerControlEvent + 15);
v2 = PopSystemIdleContext;
v3 = dword_140C0F194;
v4 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart / 0x989680ui64;
PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&stru_140C23628 + 518, FilteredCapabilities);
if( (*(&stru_140C23628 + 1864) & 3) != 0 || (*(&stru_140C23628 + 582) & 0x1000000) != 0 )
{
v5 = *(_DWORD *)(*(&stru_140C23628 + 232) + 60i64);
if( v5 )
{
v6 = 1;
goto LABEL_9;
}
LABEL_8:
v5 = 0;
v6 = 5;
goto LABEL_9;
}
v5 = *(&stru_140C23628 + 446);
if( !*(&stru_140C23628 + 446) )
goto LABEL_8;
v6 = 4;
LABEL_9:
if( v1 == 1 || v1 == 4 )
PopPulseSystemIdleEvent(3ui64);
if( v1 == 3 )
{
PopIdleCancelAoAcDozeS4Timer(PopDozeTimerCancelledReasonMax);
if( byte_140C231F1 )
PopIdleArmAoAcDozeS4Timer();
}
LODWORD(PopSystemIdleContext) = v6;
LODWORD(dword_140C0F194) = v5;
qword_140C0F2C0 = v4;
dword_140C0F2C8 = v1;
dword_140C0F2CC = v2;
dword_140C0F2D0 = v3;
LODWORD(pcchRemaining) = v5;
PopDiagTraceSystemIdleContextUpdate(v1, v2, v3, v6, pcchRemaining, v8);
PopReleaseRwLock((_POP_RW_LOCK *)&PopIrpWorkerControlEvent + 15);
}Referenced by:
PopInitSIdle