ViTargetFreeContiguousMemoryFromNode

_LIST_ENTRY *__fastcall ViTargetFreeContiguousMemoryFromNode(VOID *ContiguousMemory, _VF_TARGET_DRIVER *Node){
  _VF_TARGET_VERIFIED_DRIVER_DATA *VerifiedData; 
  _LIST_ENTRY *Flink; 
  _VF_TARGET_VERIFIED_DRIVER_DATA *v5; 
  VOID **p_Flink; 

  VerifiedData = Node->VerifiedData;
  if( !VerifiedData )
    return 0i64;
  Flink = VerifiedData->ContiguousMemoryListHead.Flink;
  if( Flink == &VerifiedData->ContiguousMemoryListHead )
    return 0i64;
  while( 1 )
  {
    v5 = (_VF_TARGET_VERIFIED_DRIVER_DATA *)Flink->Flink;
    if( Flink[1].Flink == ContiguousMemory )
      break;
    Flink = Flink->Flink;
    if( v5 == (_VF_TARGET_VERIFIED_DRIVER_DATA *)&VerifiedData->ContiguousMemoryListHead )
      return 0i64;
  }
  if( v5->WMICallback != Flink || (p_Flink = (VOID **)&Flink->Blink->Flink, *p_Flink != Flink) )
    __fastfail(3u);
  *p_Flink = v5;
  v5->WMICallback = p_Flink;
  VerifiedData->ContiguousMemoryBytes -= (unsigned __int64)Flink[1].Blink;
  VfUtilFreePoolDispatchLevel(Flink);
  return(_LIST_ENTRY *)1;
}

Referenced by:

ViTargetFreeContiguousMemory
ViTargetFreeContiguousMemoryCallback