MiDeleteCloneDescriptor
PSLIST_ENTRY __fastcall MiDeleteCloneDescriptor(ULONG_PTR a1, __int64 a2){
__int64 v2;
INT64 v5;
unsigned __int64 v6;
__int64 v7;
v2 = *(_QWORD *)(a2 + 56);
if( _InterlockedExchangeAdd64((volatile signed __int64 *)(v2 + 8), 0xFFFFFFFFFFFFFFFFui64) == 1 )
{
v5 = *(_QWORD *)(v2 + 24);
v6 = *(_QWORD *)(a2 + 32) - *(_QWORD *)(a2 + 24) + 32i64;
v7 = *(_QWORD *)(v2 + 16);
*(_QWORD *)(v7 + 24) = (unsigned int)(v6 >> 12) + ((v6 & 0xFFF) != 0);
RtlpInterlockedPushEntrySList((PSLIST_HEADER)(v5 + 1840), (PSLIST_ENTRY)v7);
KeSetEvent((PRKEVENT)(v5 + 1808), 0);
MiDecrementCloneHeaderCount(v5);
ExFreePoolWithTag((PVOID)v2, 0);
}
PsReturnProcessNonPagedPoolQuota(a1, *(_QWORD *)(a2 + 64));
return RtlpInterlockedPushEntrySList((PSLIST_HEADER)(*(_QWORD *)(a1 + 1680) + 368i64), (PSLIST_ENTRY)(a2 + 80));
}Referenced by:
MiDecrementCloneBlockReference
MiDeleteInsertedCloneVads