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