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