RtlpHpVsChunkAlignSplit

UINT64 __stdcall RtlpHpVsChunkAlignSplit(INT64 a1, INT64 a2, INT64 a3){
  unsigned int v4; 
  UINT64 v5; 
  INT64 v6; 
  unsigned int v7; 
  unsigned __int64 v8; 

  v4 = WORD1(RtlpHpHeapGlobals) ^ WORD1(a3) ^ *(unsigned __int16 *)(a3 + 2);
  if( ((a3 + 4111) & 0xFFFFFFFFFFFFF000ui64) - a3 >= 16 * (unsigned __int64)v4 )
    return 0i64;
  v5 = ((a3 + 4111) & 0xFFFFFFFFFFFFF000ui64) - 32;
  v6 = (__int64)(v5 - a3) >> 4;
  v7 = v4 - v6;
  *(_WORD *)(a3 + 2) = WORD1(RtlpHpHeapGlobals) ^ v6 ^ WORD1(a3);
  *(_OWORD *)v5 = 0i64;
  *(_OWORD *)(v5 + 16) = 0i64;
  *(_WORD *)(v5 + 2) = v7;
  *(_WORD *)(v5 + 4) = v6;
  *(_QWORD *)v5 ^= v5 ^ RtlpHpHeapGlobals;
  v8 = v5 + 16i64 * v7;
  if( v8 < a2 + 16 * ((unsigned __int64)*(unsigned __int16 *)(a2 + 32) + 3) )
    *(_WORD *)(v8 + 4) = WORD2(v8) ^ v7 ^ WORD2(RtlpHpHeapGlobals);
  return v5;
}

Referenced by:

RtlpHpVsChunkFree
RtlpHpVsContextFree