SmcStoreSlotCommit

VOID __stdcall SmcStoreSlotCommit(
        _SMC_CACHE *Cache,
        _SMC_STORE_ENTRY *StoreEntry,
        UINT64 StoreId,
        _SM_STORE_MANAGER_TYPE StoreMgrType){
  _ETHREAD *CurrentThread; 
  unsigned __int8 v5; 
  _SMC_STORE_ENTRY v6; 
  _EX_PUSH_LOCK *v8; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v5 = StoreMgrType;
  v6 = StoreId;
  --CurrentThread->Tcb.KernelApcDisable;
  v8 = (_EX_PUSH_LOCK *)(Cache + 40);
  ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)Cache + 20, 0i64);
  StoreEntry[1] &= ~4u;
  *StoreEntry = v6;
  _InterlockedExchange64((volatile __int64 *)StoreEntry + 2, 0i64);
  StoreEntry[1] ^= (v5 ^ (unsigned __int8)StoreEntry[1]) & 3;
  if( (_InterlockedExchangeAdd64(&v8->_bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock(v8);
  KeAbPostRelease(v8);
  KeLeaveCriticalRegion();
}

Referenced by:

SmcStoreCreate