PopDecrementPowerSettingPendingUpdates

void __fastcall PopDecrementPowerSettingPendingUpdates(INT64 ClearQueuedReferences){
  UINT64 v1; 
  char v2; 
  unsigned __int8 v3; 
  unsigned __int64 v4; 
  v2 = ClearQueuedReferences;
  KeAcquireSpinLockRaiseToDpc(&PopPendingPowerSettingUpdateLock, v1);
  v4 = v3;
  if( v2 )
  {
    _InterlockedExchangeAdd(&PopPendingPowerSettingUpdates, -PopPendingPowerSettingUpdatesQueued);
    PopPendingPowerSettingUpdatesQueued = 0;
  }
  else
  {
    _InterlockedAdd(&PopPendingPowerSettingUpdates, 0xFFFFFFFF);
  }
  if( !PopPendingPowerSettingUpdates )
  {
    PopPendingPowerSettingUpdateTime = 0i64;
    PopDeepSleepClearDisengageReason((unsigned int)(PopPendingPowerSettingUpdates + 3));
  }
  KxReleaseSpinLock(&PopPendingPowerSettingUpdateLock);
  __writecr8(v4);
}

Referenced by:

PopDispatchPowerSettingCallbacks
PopSetPowerSettingValue