FsRtlCheckNoExclusiveConflict

CHAR __fastcall FsRtlCheckNoExclusiveConflict(
        INT64 a1,
        LARGE_INTEGER *a2,
        LARGE_INTEGER *a3,
        INT64 a4,
        INT64 a5,
        INT64 a6){
  int v7; 
  CHAR v10; 
  RTL_SPLAY_LINKS *v11; 
  RTL_SPLAY_LINKS *v12; 
  unsigned __int64 QuadPart; 
  INT64 v15; 
  INT64 v16; 
  PRTL_SPLAY_LINKS Links; 
  Links = 0i64;
  v7 = a4;
  v10 = 1;
  FsRtlFindFirstOverlappingExclusiveNode(*(_RTL_SPLAY_LINKS **)(a1 + 16), a2, a3, &Links, 0i64);
  v12 = v11;
  if( v11 )
  {
    QuadPart = a3->QuadPart;
    v15 = a6;
    v16 = a5;
    while( (_RTL_SPLAY_LINKS *)QuadPart >= v12[1].Parent )
    {
      if( (_RTL_SPLAY_LINKS *)a2->QuadPart <= v12[2].RightChild
        && (v12[2].Parent != (_RTL_SPLAY_LINKS *)v16
         || v12[2].LeftChild != (_RTL_SPLAY_LINKS *)v15
         || HIDWORD(v12[1].RightChild) != v7) )
      {
        v10 = 0;
        break;
      }
      v12 = RtlRealSuccessor(v12);
      if( !v12 )
        break;
    }
  }
  if( Links )
    *(_QWORD *)(a1 + 16) = RtlSplay(Links);
  return v10;
}

Referenced by:

FsRtlFastCheckLockForRead
FsRtlFastCheckLockForWrite