VfPoolDelayFreeIfPossible
void __fastcall VfPoolDelayFreeIfPossible(PSLIST_ENTRY ListEntry, unsigned int a2){
__int64 *v2;
unsigned __int16 v3;
if( a2 > 1 || (v2 = &VfPoolDelayFreeData[8 * (__int64)(int)a2], ++*((_DWORD *)v2 + 13), !*((_DWORD *)v2 + 12)) )
{
ExFreePoolWithTag(ListEntry, 0);
return;
}
v3 = *(_WORD *)v2;
if( *(_WORD *)v2 >= 0x200u )
{
++*((_DWORD *)v2 + 14);
ExFreePoolWithTag(ListEntry, 0);
LABEL_7:
KeSetEvent((PRKEVENT)(v2 + 2), 1);
return;
}
RtlpInterlockedPushEntrySList((PSLIST_HEADER)v2, ListEntry);
if( v3 >= 0x40u )
goto LABEL_7;
}Referenced by:
VfUtilFreePoolCheckIRQL
VfUtilFreePoolDispatchLevel