ViTargetFreeContiguousMemory

VOID __stdcall ViTargetFreeContiguousMemory(VOID *CallerAddress, VOID *p){
  int v3; 
  VOID *v4; 
  _VF_TARGET_DRIVER *v5; 
  _VF_AVL_TREE *v6; 
  _VF_AVL_LOCK_CONTEXT Context[4]; 

  *(_OWORD *)Context = 0i64;
  if( (unsigned int)ViTargetUpdateTreeAllowed() )
  {
    VfAvlInitializeLockContext(Context, Exclusive);
    v5 = (_VF_TARGET_DRIVER *)VfAvlLookupTreeNode(&ViTargetDriversAvl, Context, v4, (unsigned int)(v3 + 1));
    if( !v5 || !(unsigned int)ViTargetFreeContiguousMemoryFromNode(p, v5) )
      VfAvlEnumerateNodes(
        v6,
        Context,
        (UINT64 *)ViTargetFreeContiguousMemoryCallback,
        (_VF_AVL_TREE_NODE *)p,
        *(VOID **)Context,
        *(VOID **)&Context[2]);
    VfAvlCleanupLockContext(Context);
  }
}

Referenced by:

VerifierMmFreeContiguousMemory
VerifierMmFreeContiguousMemorySpecifyCache
VerifierMmFreeNonCachedMemory