RtlRemoveEntryHashTable

UINT8 __stdcall RtlRemoveEntryHashTable(
        _RTL_DYNAMIC_HASH_TABLE *HashTable,
        _RTL_DYNAMIC_HASH_TABLE_ENTRY *Entry,
        _RTL_DYNAMIC_HASH_TABLE_CONTEXT *Context){
  unsigned __int64 Signature; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 

  Signature = Entry->Signature;
  --HashTable->NumEntries;
  Flink = Entry->Linkage.Flink;
  Blink = Entry->Linkage.Blink;
  if( Entry->Linkage.Flink == Blink )
  {
    --HashTable->NonEmptyBuckets;
    Blink = Entry->Linkage.Blink;
    Flink = Entry->Linkage.Flink;
  }
  if( (_RTL_DYNAMIC_HASH_TABLE_ENTRY *)Flink->Blink != Entry || (_RTL_DYNAMIC_HASH_TABLE_ENTRY *)Blink->Flink != Entry )
    __fastfail(3u);
  Blink->Flink = Flink;
  Flink->Blink = Blink;
  if( Context && !Context->ChainHead )
    RtlpPopulateContext(HashTable, Context, Signature);
  return 1;
}

Referenced by:

SepCleanupMarkedForDeletionEntries
SepDeReferenceSharedSidEntries
SepDereferenceCachedHandlesEntry
SepDereferenceLowBoxNumberEntry
SepInsertOrReferenceSharedSidEntries
SepRmDestroyCapTable