RtlpFindEntry

__int64 *__fastcall RtlpFindEntry(__int64 a1, unsigned __int64 a2){
  INT64 v2; 
  INT64 v5; 
  INT64 v6; 
  __int64 *result; 
  v2 = *(_QWORD *)(a1 + 312);
  if( a2 < *(unsigned int *)(v2 + 8) )
  {
LABEL_4:
    v6 = (unsigned int)a2;
  }
  else
  {
    while( 1 )
    {
      v5 = *(_QWORD *)v2;
      if( !*(_QWORD *)v2 )
        break;
      v2 = *(_QWORD *)v2;
      if( a2 < *(unsigned int *)(v5 + 8) )
        goto LABEL_4;
    }
    v6 = (unsigned int)(*(_DWORD *)(v2 + 8) - 1);
  }
  while( 1 )
  {
    result = RtlpHeapFindListLookupEntry(a1, v2, 1, v6, a2);
    if( result )
      break;
    v2 = *(_QWORD *)v2;
    v6 = *(unsigned int *)(v2 + 24);
  }
  return result;
}

Referenced by:

RtlZeroHeap
RtlpAllocateHeap
RtlpCreateSplitBlock
RtlpFreeHeap
RtlpInsertFreeBlock