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