FsRtlPrivateCheckWaitingLocks

void __fastcall FsRtlPrivateCheckWaitingLocks(__int64 a1, KSPIN_LOCK *a2, KIRQL a3){
  KSPIN_LOCK *v3; 
  KSPIN_LOCK *i; 
  __int64 v7; 
  __int64 v8; 
  CHAR v9; 
  CHAR v10; 
  CHAR v11; 
  CHAR v12; 
  __int64 v13; 
  char inserted; 
  UINT64 v15; 
  KIRQL v16; 
  LARGE_INTEGER v17[2]; 
  PVOID Object[2]; 
  __int128 v19; 
  int v21; 
  __int64 v22; 
  v21 = 0;
  v3 = a2 + 3;
  for( i = (KSPIN_LOCK *)a2[3]; i; i = (KSPIN_LOCK *)*v3 )
  {
    v7 = i[3];
    *(_OWORD *)&v17[0].LowPart = 0i64;
    v22 = v7;
    *(_OWORD *)Object = 0i64;
    v19 = 0i64;
    v8 = *(_QWORD *)(v7 + 184);
    v17[0] = *(LARGE_INTEGER *)(v8 + 24);
    v17[1] = **(LARGE_INTEGER **)(v8 + 8);
    *((_QWORD *)&v19 + 1) = v17[1].QuadPart + v17[0].QuadPart - 1;
    Object[1] = *(PVOID *)(v8 + 48);
    *(_QWORD *)&v19 = IoGetRequestorProcess((_IRP *)v7);
    HIDWORD(Object[0]) = *(_DWORD *)(v8 + 16);
    if( (*(_BYTE *)(v8 + 2) & 2) != 0 )
    {
      LOBYTE(Object[0]) = 1;
      v9 = FsRtlPrivateCheckForExclusiveLockAccess((INT64)a2, v17);
    }
    else
    {
      LOBYTE(Object[0]) = 0;
      v9 = FsRtlPrivateCheckForSharedLockAccess((__int64)a2, (__int64)v17);
    }
    v10 = v9;
    if( !v9 )
      goto LABEL_16;
    *(_BYTE *)(v7 + 69) = KeAcquireQueuedSpinLock(7ui64);
    _InterlockedExchange64((volatile __int64 *)(v7 + 104), 0i64);
    v11 = v10;
    v12 = 0;
    v13 = v22;
    if( !*(_BYTE *)(v22 + 68) )
      v12 = v11;
    KeReleaseQueuedSpinLock(7ui64, *(_BYTE *)(v22 + 69));
    if( v12 )
    {
      inserted = FsRtlPrivateInsertLock((_QWORD *)a1, *(_QWORD *)(v8 + 48), (_OWORD *)v17);
      *v3 = *i;
      if( i == (KSPIN_LOCK *)a2[4] )
        a2[4] = (KSPIN_LOCK)v3;
      KxReleaseSpinLock(a2);
      __writecr8(a3);
      ObfReferenceObjectWithTag(Object[1], 0x746C6644u);
      FsRtlCompleteLockIrpReal(
        *(__int64(__fastcall **)(__int64, __int64))(a1 + 8),
        i[2],
        v13,
        inserted == 0 ? 0xC000009A : 0,
        &v21,
        (__int64)Object[1]);
      if( inserted )
      {
        if( v21 < 0 )
          FsRtlPrivateRemoveLock(a1, (__int64)v17, 0);
      }
      ObfDereferenceObjectWithTag(Object[1], 0x746C6644ui64);
      KeAcquireSpinLockRaiseToDpc(a2, v15);
      a3 = v16;
      v3 = a2 + 3;
      ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)FsRtlWaitingLockLookasideList, i);
    }
    else
    {
LABEL_16:
      v3 = i;
    }
  }
}

Referenced by:

FsRtlFastUnlockSingleExclusive
FsRtlFastUnlockSingleShared
FsRtlPrivateFastUnlockAll