FsRtlPrivateCheckForSharedLockAccess

char __fastcall FsRtlPrivateCheckForSharedLockAccess(__int64 a1, __int64 a2){
  _RTL_SPLAY_LINKS *v3; 
  char v5; 
  RTL_SPLAY_LINKS *v7; 
  RTL_SPLAY_LINKS *v8; 
  _RTL_SPLAY_LINKS *v9; 
  PRTL_SPLAY_LINKS Links; 
  Links = 0i64;
  v3 = *(_RTL_SPLAY_LINKS **)(a1 + 16);
  v5 = 1;
  if( v3 )
  {
    FsRtlFindFirstOverlappingExclusiveNode(v3, (_LARGE_INTEGER *)a2, (_LARGE_INTEGER *)(a2 + 40), &Links, 0i64);
    v8 = v7;
    if( v7 )
    {
      v9 = *(_RTL_SPLAY_LINKS **)(a2 + 40);
      while( v8[1].Parent <= v9 )
      {
        if( (v8[2].Parent != *(_RTL_SPLAY_LINKS **)(a2 + 24)
           || v8[2].LeftChild != *(_RTL_SPLAY_LINKS **)(a2 + 32)
           || HIDWORD(v8[1].RightChild) != *(_DWORD *)(a2 + 20))
          && (*(_QWORD *)(a2 + 8) || v8[1].LeftChild) )
        {
          v5 = 0;
          break;
        }
        v8 = RtlRealSuccessor(v8);
        if( !v8 )
          break;
      }
    }
    if( Links )
      *(_QWORD *)(a1 + 16) = RtlSplay(Links);
  }
  return v5;
}

Referenced by:

FsRtlPrivateCheckWaitingLocks
FsRtlPrivateLock