RtlDeleteNoSplay
VOID __stdcall RtlDeleteNoSplay(_RTL_SPLAY_LINKS *Links, _RTL_SPLAY_LINKS **Root){
_RTL_SPLAY_LINKS *LeftChild;
_RTL_SPLAY_LINKS *v5;
_RTL_SPLAY_LINKS *Parent;
__int64 v7;
__int64 v8;
_RTL_SPLAY_LINKS *v9;
if( Links->LeftChild && Links->RightChild )
{
LODWORD(v9) = RtlSubtreePredecessor((INT64)Links);
if( Links->Parent == Links )
*Root = v9;
SwapSplayLinks(v9, Links);
}
LeftChild = Links->LeftChild;
if( LeftChild || (LeftChild = Links->RightChild) != 0i64 )
{
Parent = Links->Parent;
if( Links->Parent == Links )
{
LeftChild->Parent = LeftChild;
*Root = LeftChild;
}
else
{
v8 = 8i64;
if( Parent->LeftChild != Links )
v8 = 16i64;
*(_RTL_SPLAY_LINKS **)((char *)&Parent->Parent + v8) = LeftChild;
LeftChild->Parent = Links->Parent;
}
}
else
{
v5 = Links->Parent;
if( Links->Parent == Links )
{
*Root = 0i64;
}
else
{
v7 = 8i64;
if( v5->LeftChild != Links )
v7 = 16i64;
*(_RTL_SPLAY_LINKS **)((char *)&v5->Parent + v7) = 0i64;
}
}
}Referenced by:
FsRtlPrivateInsertSharedLock
FsRtlRemoveNodeFromTunnel
FsRtlUninitializeFileLock