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