PopExecuteSystemIdleAction
NTSTATUS __stdcall PopExecuteSystemIdleAction(_LOADER_PARAMETER_BLOCK *LoaderBlock){
char v1;
__int64 v2;
UINT8 v3;
__int64 v4;
unsigned int v5;
unsigned __int64 v6;
char v7;
unsigned int updated;
POWER_ACTION_POLICY ActionPolicy;
_POP_ACTION_TRIGGER Trigger;
v3 = v1;
memset(&Trigger, 0, sizeof(Trigger));
v4 = v2;
v5 = (unsigned int)LoaderBlock;
v6 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart / 0x989680ui64;
if( (_DWORD)LoaderBlock == 1 )
{
v7 = v1;
goto LABEL_10;
}
if( (int)LoaderBlock <= 2 )
goto LABEL_8;
if( (int)LoaderBlock > 4 )
{
if( (_DWORD)LoaderBlock == 5 )
{
v7 = 0;
LABEL_10:
updated = PopUpdatePdcSystemIdleState(v7);
goto LABEL_11;
}
LABEL_8:
updated = -1073741811;
goto LABEL_11;
}
updated = 0;
if( v1 )
{
Trigger.Type = PolicySystemIdle;
Trigger.Flags = 128;
ActionPolicy.EventCode = 0;
ActionPolicy.Action = PowerActionHibernate;
ActionPolicy.Flags = -2147483612;
PopAcquirePolicyLock();
PopExecutePowerAction(&Trigger, 0i64, &ActionPolicy, PowerSystemHibernate, SubstituteLightestOverallDownwardBounded);
PopReleasePolicyLock();
}
LABEL_11:
*(_QWORD *)v4 = v6;
*(_DWORD *)(v4 + 8) = v5;
*(_BYTE *)(v4 + 12) = v3;
*(_DWORD *)(v4 + 16) = updated;
PopDiagTraceSystemIdleAction(v5, v3, (NPTEXTMETRIC *)updated);
return updated;
}Referenced by:
PopSystemIdleWorker