ViRemLockDeleteFirstTreeNode

UINT64 __stdcall ViRemLockDeleteFirstTreeNode(PVOID Address, UINT64 a2){
  void *v2; 
  UINT64 v3; 
  INT64 v4; 
  CHAR *v5; 
  CHAR *v6; 
  __int128 v8; 
  v2 = 0i64;
  v8 = 0i64;
  VfAvlInitializeLockContext((INT64)&v8, 0i64);
  v5 = VfAvlLookupTreeNode(&ViRemLockAvl, (INT64)&v8, v3, v4);
  v6 = v5;
  if( v5 )
    v2 = (void *)VfAvlDeleteTreeNode((INT64)&ViRemLockAvl, (INT64)&v8, *(_QWORD *)v5, 0i64);
  VfAvlCleanupLockContext((INT64)&v8);
  if( !v6 )
    return 0i64;
  if( v2 )
  {
    if( dword_140D4A520 == 1 )
      ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)ViAvlNodeLookaside, v2);
    else
      VfUtilFreePoolCheckIRQL(v2);
  }
  return 1i64;
}

Referenced by:

VerifierIoInitializeRemoveLockEx
VfRemLockDeleteMemoryRange