RtlpHpSegSegmentInitialize

INT64 __fastcall RtlpHpSegSegmentInitialize(INT64 a1, INT64 rdx0, UINT64 r8_0){
  char v3; 
  unsigned int v4; 
  unsigned int v7; 
  INT64 v8; 
  unsigned int v9; 
  unsigned int v10; 
  INT64 result; 
  unsigned __int8 *v12; 
  unsigned __int8 v13; 
  __int128 a2; 
  __int64 a3; 
  v3 = *(_BYTE *)(a1 + 13);
  v4 = r8_0;
  a3 = 0i64;
  if( (v3 & 7) != 0 )
  {
    a2 = *(_OWORD *)(a1 + 40);
    RtlpHpQueryVA(rdx0 & 0xFFFFFFFFFFE00000ui64, &a2, &a3, 0i64);
    *(_QWORD *)(rdx0 + 24) = a3;
  }
  v7 = v4;
  v8 = rdx0 + 32i64 * *(unsigned __int8 *)(a1 + 10);
  *(_BYTE *)(v8 + 31) = -*(_BYTE *)(a1 + 10);
  *(_BYTE *)(v8 + 24) |= 2u;
  v9 = 1 << *(_BYTE *)(a1 + 9);
  if( v4 )
  {
    v12 = (unsigned __int8 *)(v8 + 25);
    do
    {
      v13 = v9;
      if( v7 < v9 )
        v13 = v7;
      *v12 = v13;
      v12 += 32;
      v7 -= v13;
    }
    while( v7 );
  }
  v10 = *(unsigned __int8 *)(v8 + 31) - 1;
  *(_WORD *)(v8 + 28) = ~(_WORD)v4;
  result = 32i64 * v10;
  *(_BYTE *)(result + v8 + 31) = v10;
  *(_DWORD *)v8 = -857879331;
  return result;
}

Referenced by:

RtlpHpSegContextReserve
RtlpHpSegPageRangeAllocate