SmcStoreSlotCommit

void __fastcall SmcStoreSlotCommit(__int64 a1, __int64 a2, int a3, unsigned __int8 a4){
  _ETHREAD *CurrentThread; 
  volatile INT64 *v8; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  v8 = (volatile INT64 *)(a1 + 160);
  ExAcquirePushLockExclusiveEx(a1 + 160, 0i64);
  *(_DWORD *)(a2 + 4) &= ~4u;
  *(_DWORD *)a2 = a3;
  _InterlockedExchange64((volatile __int64 *)(a2 + 16), 0i64);
  *(_DWORD *)(a2 + 4) ^= (a4 ^ (unsigned __int8)*(_DWORD *)(a2 + 4)) & 3;
  if( (_InterlockedExchangeAdd64(v8, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock(v8);
  KeAbPostRelease((PVOID)v8);
  KeLeaveCriticalRegion();
}

Referenced by:

SmcStoreCreate