RtlpProbeUserBufferSafe

_HEAP_ENTRY *__stdcall RtlpProbeUserBufferSafe(_HEAP *Heap, VOID *BaseAddress){
  _HEAP_ENTRY *v2; 
  VOID *v3; 
  _HEAP *v4; 
  _HEAP_FAILURE_TYPE v5; 

  if( ((unsigned __int8)BaseAddress & 0xF) != 0 )
  {
    v3 = BaseAddress;
    v4 = Heap;
    v5 = heap_failure_invalid_argument;
    goto LABEL_7;
  }
  v2 = (_HEAP_ENTRY *)((char *)BaseAddress - 16);
  _m_prefetchw(v2);
  if( v2->UnpackedEntry.UnusedBytes == 5 )
    v2 -= v2->UnpackedEntry.SegmentOffset;
  if( (v2->UnpackedEntry.UnusedBytes & 0x3F) == 0 )
  {
    v3 = v2;
    v4 = Heap;
    v5 = heap_failure_block_not_busy;
LABEL_7:
    RtlpLogHeapFailure(v5, v4, v3, 0i64, 0i64);
    return 0i64;
  }
  return v2;
}

Referenced by:

RtlpFreeHeapInternal
RtlpSizeHeapInternal