SepRmDestroyCapTable
VOID __stdcall SepRmDestroyCapTable(_SEP_CENTRALIZED_ACCESS_POLICIES_TABLE *CapTable){
_RTL_DYNAMIC_HASH_TABLE_ENUMERATOR *v2;
_RTL_DYNAMIC_HASH_TABLE_ENUMERATOR *v3;
void *v4;
_RTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator;
memset(&Enumerator, 0, sizeof(Enumerator));
RtlInitEnumerationHashTable((_RTL_DYNAMIC_HASH_TABLE *)CapTable, &Enumerator);
while( 1 )
{
v2 = RtlEnumerateEntryHashTable((_RTL_DYNAMIC_HASH_TABLE *)CapTable, &Enumerator);
v3 = v2;
if( !v2 )
break;
RtlRemoveEntryHashTable((_RTL_DYNAMIC_HASH_TABLE *)CapTable, &v2->HashEntry, 0i64);
*(_QWORD *)&v3->BucketIndex = 0i64;
ExFreePoolWithTag(v3, 0x70536553u);
}
RtlEndEnumerationHashTable((_RTL_DYNAMIC_HASH_TABLE *)CapTable, &Enumerator);
RtlDeleteHashTable((_RTL_DYNAMIC_HASH_TABLE *)CapTable);
v4 = (void *)*((_QWORD *)CapTable + 7);
if( v4 )
ExFreePoolWithTag(v4, 0x70536553u);
ExFreePoolWithTag(CapTable, 0x70536553u);
}Referenced by:
SepRmDereferenceCapTable