RtlpHpSizeHeap

NTSTATUS __stdcall RtlpHpSizeHeap(INT64 a1, UINT64 a2, INT64 a3){
  int v3; 
  int v5; 
  int v6; 
  int v7; 
  UINT64 v8; 
  NTSTATUS v9; 

  v3 = *(_DWORD *)(a1 + 220);
  v5 = a3 | *(_DWORD *)(a1 + 20);
  v6 = 0;
  if( v3 )
    LOBYTE(v6) = v3 == KeGetCurrentThread()[1].CurrentRunTime;
  v7 = v5 | 1;
  if( !v6 )
    v7 = v5;
  if( !a2 )
    return -1;
  if( (a2 & 0xF) != 0 )
    return -1;
  v8 = RtlpHpSizeHeapInternal((__int128 *)a1, a2, v7, 0i64);
  v9 = v8;
  if( v8 != -1i64
    && (v7 & 0x10000000) != 0
    && RtlCompareMemory((const VOID *)(v8 + a2), CheckHeapFillPattern, 16) != (_SIZE_T *)16 )
  {
    return -1;
  }
  return v9;
}

Referenced by:

ExFreeHeapPool
RtlpHpFreeHeap