FsRtlReleaseHeaderMutex

VOID __stdcall FsRtlReleaseHeaderMutex(_FSRTL_EOF_LOCK *EofLock, INT64 *EofGeneration){
  __int64 v2; 
  unsigned __int64 v3; 
  unsigned __int32 v4; 

  if( EofGeneration )
    _InterlockedIncrement((volatile signed __int32 *)EofGeneration);
  v2 = *(_QWORD *)(*((_QWORD *)EofLock + 3) + 48i64);
  v3 = *(unsigned __int8 *)(v2 + 48);
  *(_QWORD *)(v2 + 8) = 0i64;
  v4 = _InterlockedCompareExchange((volatile signed __int32 *)v2, 1, 0);
  if( v4 )
    ExpReleaseFastMutexContended((_FAST_MUTEX *)v2, v4);
  __writecr8(v3);
  KeAbPostRelease((VOID *)v2);
}

Referenced by:

FsRtlReleaseEofLock