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