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