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