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