PopEsUpdateState
VOID __stdcall PopEsUpdateState(UINT8 ForceTrace){
int v2;
int v3;
int v4;
int v5;
unsigned __int64 v6;
INT64 v7;
SYSTEM_BATTERY_STATE BatteryState;
memset(&BatteryState, 0, sizeof(BatteryState));
PopCurrentPowerState(&BatteryState);
v2 = 0;
v3 = *(&stru_140CF2E80 + 1281);
v4 = 0;
v5 = *(&stru_140CF2E80 + 1848);
if( PopEsMode == 1 )
{
v4 = 1;
LABEL_19:
v2 = 1;
goto LABEL_6;
}
if( PopEsMode == 2
&& *(&stru_140C23628 + 458)
&& BatteryState.BatteryPresent
&& BatteryState.MaxCapacity
&& (BatteryState.MaxCapacity + 100 * BatteryState.RemainingCapacity - 1) / BatteryState.MaxCapacity <= *(&stru_140C23628 + 458) )
{
v4 = 2;
goto LABEL_19;
}
if( *(&stru_140C23628 + 1836) && *(&stru_140C23628 + 458) && PopEsBgActivityPolicy == 1 )
{
v4 = 8;
goto LABEL_19;
}
if( PopEsEnabledOnHost )
{
v4 = 16;
goto LABEL_19;
}
LABEL_6:
if( ForceTrace || v2 != *(&stru_140CF2E80 + 1281) || v4 != *(&stru_140CF2E80 + 1848) )
{
PopEsSnapTelemetry(&BatteryState);
v6 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 115);
*(&stru_140CF2E80 + 1281) = v2;
*(&stru_140CF2E80 + 1848) = v4;
if( PopCsResiliencyStats[0] && (v2 != v3 || v4 != v5) )
++dword_140C22F68;
KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 115);
__writecr8(v6);
if( v2 != v3 )
PopEsPublishState();
PopDiagTraceEsState(v7);
}
}Referenced by:
PopEsWorker