ExTryToAcquireFastMutex

UINT8 __stdcall ExTryToAcquireFastMutex(_FAST_MUTEX *FastMutex){
  _BYTE *v2; 
  unsigned __int8 CurrentIrql; 
  UINT8 result; 

  v2 = KeAbPreAcquire(FastMutex, 0i64, 1ui64);
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(1ui64);
  if( _interlockedbittestandreset(&FastMutex->Count, 0) )
  {
    if( v2 )
      v2[26] |= 1u;
    result = 1;
    FastMutex->Owner = KeGetCurrentThread();
    FastMutex->OldIrql = CurrentIrql;
  }
  else
  {
    __writecr8(CurrentIrql);
    if( v2 )
      KeAbPostReleaseEx(FastMutex, v2);
    _mm_pause();
    return 0;
  }
  return result;
}

Referenced by:

CreateMiniNtBootKey
FsRtlTryToAcquireHeaderMutex
KeTryToAcquireGuardedMutex
RawScanDeletedList