RtlpPopulateContext
VOID __stdcall RtlpPopulateContext(
_RTL_DYNAMIC_HASH_TABLE *HashTable,
_RTL_DYNAMIC_HASH_TABLE_CONTEXT *Context,
UINT64 Signature){
unsigned int v3;
UINT64 v4;
_LIST_ENTRY *ChainHead;
_LIST_ENTRY **v6;
_LIST_ENTRY *v7;
_LIST_ENTRY *v8;
_LIST_ENTRY *i;
_LIST_ENTRY *Flink;
v3 = (69069 * ((unsigned int)Signature >> HashTable->Shift) + 1) & 0xFFFF0000 | ((1103515245
* ((unsigned int)Signature >> HashTable->Shift)
+ 12345) >> 16);
v4 = v3 & HashTable->DivisorMask;
if( (unsigned int)v4 < HashTable->Pivot )
v4 = v3 & ((2 * HashTable->DivisorMask) | 1);
ChainHead = RtlpGetChainHead(HashTable, v4);
v8 = ChainHead;
for( i = ChainHead->Flink; i != ChainHead; i = i->Flink )
{
Flink = i[1].Flink;
if( Flink && Flink >= v7 )
break;
v8 = i;
}
*v6 = ChainHead;
v6[1] = v8;
v6[2] = v7;
}Referenced by:
RtlInitStrongEnumerationHashTable
RtlInsertEntryHashTable
RtlRemoveEntryHashTable