RtlpFindEntry
_LIST_ENTRY *__stdcall RtlpFindEntry(_HEAP *Heap, UINT64 Size){
unsigned int *BlocksIndex;
unsigned int *v4;
_LIST_ENTRY *result;
BlocksIndex = (unsigned int *)Heap->BlocksIndex;
if( Size >= BlocksIndex[2] )
{
do
{
v4 = *(unsigned int **)BlocksIndex;
if( !*(_QWORD *)BlocksIndex )
break;
BlocksIndex = *(unsigned int **)BlocksIndex;
}
while( Size >= v4[2] );
}
while( 1 )
{
result = (_LIST_ENTRY *)RtlpHeapFindListLookupEntry((_LIST_ENTRY *)Heap, (UINT64)BlocksIndex);
if( result )
break;
BlocksIndex = *(unsigned int **)BlocksIndex;
}
return result;
}Referenced by:
RtlZeroHeap
RtlpAllocateHeap
RtlpCreateSplitBlock
RtlpFreeHeap
RtlpInsertFreeBlock