RtlpFindUCREntry

_LIST_ENTRY *__stdcall RtlpFindUCREntry(_HEAP *Heap, UINT64 Size){
  INT64 v3; 
  unsigned int *UCRIndex; 
  UINT64 i; 
  unsigned int *v6; 
  _LIST_ENTRY *result; 
  _LIST_ENTRY *p_UCRList; 

  if( RtlpHeapErrorHandlerThreshold >= 1 && ((Size + 4095) & 0xFFFFFFFFFFFFF000ui64) != Size )
  {
    DbgPrint("(ROUND_UP_TO_POWER2(Size, PAGE_SIZE) == Size)", Size, Size);
    RtlpHeapHandleError(v3);
  }
  UCRIndex = (unsigned int *)Heap->UCRIndex;
  if( UCRIndex )
  {
    for( i = UCRIndex[2]; Size >> 12 >= i; i = v6[2] )
    {
      v6 = *(unsigned int **)UCRIndex;
      if( !*(_QWORD *)UCRIndex )
        break;
      UCRIndex = *(unsigned int **)UCRIndex;
    }
    return(_LIST_ENTRY *)RtlpHeapFindListLookupEntry((_LIST_ENTRY *)Heap, (UINT64)UCRIndex);
  }
  else
  {
    p_UCRList = &Heap->UCRList;
    for( result = p_UCRList->Flink; p_UCRList != result; result = result->Flink )
    {
      if( result[2].Blink >= (_LIST_ENTRY *)Size )
        return result;
    }
    return p_UCRList;
  }
}

Referenced by:

RtlpFindAndCommitPages
RtlpInsertUCRBlock