SepRmDestroyCapTable
void __fastcall SepRmDestroyCapTable(PVOID P){
RTL_DYNAMIC_HASH_TABLE_ENTRY *v2;
RTL_DYNAMIC_HASH_TABLE_ENTRY *v3;
void *v4;
struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator;
memset(&Enumerator, 0, sizeof(Enumerator));
RtlInitEnumerationHashTable((PRTL_DYNAMIC_HASH_TABLE)P, &Enumerator);
while( 1 )
{
v2 = RtlEnumerateEntryHashTable((RTL_DYNAMIC_HASH_TABLE *)P, &Enumerator);
v3 = v2;
if( !v2 )
break;
RtlRemoveEntryHashTable((RTL_DYNAMIC_HASH_TABLE *)P, v2, 0i64);
v3[1].Linkage.Blink = 0i64;
ExFreePoolWithTag(v3, 0x70536553u);
}
RtlEndEnumerationHashTable((RTL_DYNAMIC_HASH_TABLE *)P, &Enumerator);
RtlDeleteHashTable((RTL_DYNAMIC_HASH_TABLE *)P);
v4 = (void *)*((_QWORD *)P + 7);
if( v4 )
ExFreePoolWithTag(v4, 0x70536553u);
ExFreePoolWithTag(P, 0x70536553u);
}Referenced by:
SepRmDereferenceCapTable