RtlpHpSizeHeap

INT64 __fastcall RtlpHpSizeHeap(INT64 a1, UINT64 a2, INT64 a3){
  int v3; 
  int v5; 
  int v6; 
  int v7; 
  UINT64 v8; 
  INT64 v9; 
  v3 = *(_DWORD *)(a1 + 220);
  v5 = a3 | *(_DWORD *)(a1 + 20);
  v6 = 0;
  if( v3 )
    LOBYTE(v6) = v3 == *((_DWORD *)KeGetCurrentThread() + 288);
  v7 = v5 | 1;
  if( !v6 )
    v7 = v5;
  if( !a2 )
    return -1i64;
  if( (a2 & 0xF) != 0 )
    return -1i64;
  v8 = RtlpHpSizeHeapInternal((__int128 *)a1, a2, v7, 0i64);
  v9 = v8;
  if( v8 != -1i64
    && (v7 & 0x10000000) != 0
    && RtlCompareMemory((VOID *)(v8 + a2), CheckHeapFillPattern, 0x10ui64) != 16 )
  {
    return -1i64;
  }
  return v9;
}

Referenced by:

ExFreeHeapPool
RtlpHpFreeHeap