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