RtlpHpVsChunkSize

INT64 __fastcall RtlpHpVsChunkSize(INT64 a1, INT64 a2, INT64 a3, INT64 *a4){
  INT64 v5; 
  int v6; 
  INT64 v7; 
  unsigned int v8; 
  __int16 v9; 
  int v10; 
  void *retaddr; 
  v5 = a2 - 16;
  v6 = *(_DWORD *)(a1 + 176) & 1;
  if( v6 && (a2 & 0xFFF) == 0 )
    v5 -= 16i64;
  if( ((HIDWORD(v5) ^ DWORD1(RtlpHpHeapGlobals) ^ HIDWORD(*(_QWORD *)v5)) & 0xFF0000) == 0 )
    return -1i64;
  v7 = 16 * (WORD1(RtlpHpHeapGlobals) ^ WORD1(v5) ^ *(unsigned __int16 *)(v5 + 2)) - 16;
  if( v6 && ((v5 + 32) & 0xFFF) == 0 )
    v7 -= 16i64;
  if( (*(_DWORD *)(v5 + 8) & 0x100) != 0 )
  {
    v8 = *(unsigned __int16 *)((unsigned int)v7 + a2 - 2);
    v9 = *(_WORD *)((unsigned int)v7 + a2 - 2);
    if( (v8 & 0x4000) != 0 )
    {
      _InterlockedOr((volatile signed __int32 *)&retaddr, 0);
      v9 = *(_WORD *)((unsigned int)v7 + a2 - 2);
    }
    v10 = (v8 >> 14) & 1;
    if( v9 >= 0 )
      v7 -= v9 & 0x1FFF;
    else
      --v7;
  }
  else
  {
    v10 = 0;
  }
  if( a4 )
    *(_DWORD *)a4 = v10;
  return v7;
}

Referenced by:

RtlpHpSegSizeInternal
RtlpSizeHeapInternal