ViRemLockDeleteFirstTreeNode

UINT64 __stdcall ViRemLockDeleteFirstTreeNode(VOID *Address, UINT64 NumberOfBytes){
  VOID *v2; 
  VOID *v3; 
  UINT64 v4; 
  _VF_AVL_TREE_NODE *v5; 
  _VF_AVL_TREE_NODE *v6; 
  _VF_AVL_LOCK_CONTEXT Context[4]; 

  v2 = 0i64;
  *(_OWORD *)Context = 0i64;
  VfAvlInitializeLockContext(Context, Exclusive);
  v5 = VfAvlLookupTreeNode(&ViRemLockAvl, Context, v3, v4);
  v6 = v5;
  if( v5 )
    v2 = VfAvlDeleteTreeNode(&ViRemLockAvl, Context, v5->p, 0i64);
  VfAvlCleanupLockContext(Context);
  if( !v6 )
    return 0i64;
  if( v2 )
  {
    if( ViRemLockAvl.u1.NodeSize == 1 )
      ExFreeToNPagedLookasideList(&ViAvlNodeLookaside, v2);
    else
      VfUtilFreePoolCheckIRQL(v2);
  }
  return 1i64;
}

Referenced by:

VerifierIoInitializeRemoveLockEx
VfRemLockDeleteMemoryRange