RtlpHeapAddListEntry

VOID __stdcall RtlpHeapAddListEntry(
        _HEAP *Heap,
        _HEAP_LIST_LOOKUP *ListLookup,
        _LIST_ENTRY *ListEntry,
        UINT64 InitialIndex,
        UINT64 Context){
  _LIST_ENTRY **ListHints; 
  unsigned int v8; 
  __int64 v9; 
  __int64 v10; 
  _LIST_ENTRY *v11; 
  UINT64 Size; 

  ListHints = ListLookup->ListHints;
  ++ListLookup->ItemCount;
  v8 = Context - ListLookup->BaseIndex;
  v9 = 2 * v8;
  if( !ListLookup->ExtraItem )
    v9 = v8;
  v10 = (unsigned int)v9;
  v11 = ListHints[v9];
  if( (_DWORD)Context == ListLookup->ArraySize - 1 )
    ++ListLookup->OutOfRangeItems;
  if( !v11 || RtlpHeapListCompare(Heap, v11, Size, 1u) <= 0 )
    ListLookup->ListHints[v10] = (_LIST_ENTRY *)InitialIndex;
  if( !v11 )
    ListLookup->ListsInUseUlong[(unsigned __int64)v8 >> 5] |= 1 << (v8 & 0x1F);
}

Referenced by:

RtlZeroHeap
RtlpCreateSplitBlock
RtlpFreeHeap
RtlpInsertFreeBlock
RtlpPopulateListIndex