PopInitSIdle
VOID __stdcall PopInitSIdle(){
unsigned int v0;
unsigned int v1;
UINT8 v2;
POP_SYSTEM_IDLE_TIMEOUT_SOURCE v3;
_SYSTEM_POWER_STATE v4;
_SYSTEM_POWER_CAPABILITIES v5;
int v6;
int v7;
_SYSTEM_POWER_CAPABILITIES v8;
__int64 v9;
UINT64 Timeout;
UINT64 Flags;
_SYSTEM_POWER_CAPABILITIES FilteredCapabilities[44];
v1 = v0;
memset(&FilteredCapabilities[20], 0i64, 0x60u);
memset(FilteredCapabilities, 0i64, 0x4Cu);
if( PopPlatformAoAc )
{
PopUpdateSystemIdleContext(v1);
return;
}
v2 = 1;
FilteredCapabilities[23] = -1;
FilteredCapabilities[26] = 1;
v3 = PopSystemIdleTimeoutSourceDisabled;
FilteredCapabilities[27] = *(_DWORD *)(*(&stru_140C23628 + 232) + 56i64);
FilteredCapabilities[28] = 2;
if( (*(&stru_140C23628 + 1864) & 3) == 0 && *(&stru_140C23628 + 446) && (*(&stru_140C23628 + 582) & 0x1000000) == 0 )
{
v3 = PopSystemIdleTimeoutSourceUnattend;
if( (unsigned int)(SystemAction - 2) <= 1 )
{
FilteredCapabilities[28] = *(&SystemAction + 1);
FilteredCapabilities[25] = SystemAction;
}
else
{
FilteredCapabilities[25] = 2;
FilteredCapabilities[28] = 4;
}
FilteredCapabilities[27] = 0;
FilteredCapabilities[23] = *(&stru_140C23628 + 446);
goto LABEL_5;
}
PopFilterCapabilities((_SYSTEM_POWER_CAPABILITIES *)&stru_140C23628 + 518, FilteredCapabilities);
if( !*(_DWORD *)(*(&stru_140C23628 + 232) + 60i64) )
{
if( !*(_DWORD *)(*(&stru_140C23628 + 232) + 88i64) )
goto LABEL_5;
goto LABEL_32;
}
if( LOBYTE(FilteredCapabilities[5]) )
{
FilteredCapabilities[25] = 2;
v3 = PopSystemIdleTimeoutSourceAoAc;
v8 = *(_DWORD *)(*(&stru_140C23628 + 232) + 60i64);
FilteredCapabilities[28] = 1;
}
else
{
if( !*(_WORD *)((char *)FilteredCapabilities + 3) && !BYTE1(FilteredCapabilities[1]) )
{
LABEL_32:
if( !PopIsDozeSupported(FilteredCapabilities) || !*(_DWORD *)(v9 + 88) )
goto LABEL_5;
v3 = PopSystemIdleTimeoutSourceHibernateDoze;
FilteredCapabilities[25] = 3;
v8 = *(_DWORD *)(v9 + 88);
FilteredCapabilities[28] = 5;
goto LABEL_35;
}
FilteredCapabilities[25] = 2;
v3 = PopSystemIdleTimeoutSourceSx;
v8 = *(_DWORD *)(*(&stru_140C23628 + 232) + 60i64);
FilteredCapabilities[28] = 4;
}
LABEL_35:
FilteredCapabilities[23] = v8;
LABEL_5:
if( RtlCompareMemory(&Action, &FilteredCapabilities[25], 12) == (_SIZE_T *)12
&& (v4 = LightestState, LightestState == FilteredCapabilities[28])
&& (v5 = ::Timeout, (_DWORD)::Timeout == FilteredCapabilities[23]) )
{
v2 = 0;
}
else
{
PopResetIdleTime(PopSystemIdleTimeResetReasonIdleParametersChanged);
v4 = FilteredCapabilities[28];
v5 = FilteredCapabilities[23];
Action = *(POWER_ACTION_POLICY *)&FilteredCapabilities[25];
byte_140C231D4 = 1;
LightestState = FilteredCapabilities[28];
LODWORD(::Timeout) = FilteredCapabilities[23];
if( dword_140C002E0 )
v6 = dword_140C231C4 | 1;
else
v6 = dword_140C231C4 & 0xFFFFFFFE;
dword_140C231C4 = v6;
if( !*(&stru_140C23628 + 2092) )
{
if( dword_140C00300 )
v7 = v6 | 2;
else
v7 = v6 & 0xFFFFFFFD;
dword_140C231C4 = v7;
}
}
LODWORD(Flags) = Action.Flags;
LODWORD(Timeout) = v5;
PopTraceSystemIdleTimeoutInitialization(v2, v3, Action.Action, v4, Timeout, Flags);
}Referenced by:
PopApplyPolicy
PopBatteryApplyCompositeState
PopDispatchFullWake
PopSleepPowerSettingCallback
PopTransitionSystemPowerStateEx