RtlpHpSegContextInitialize

__int64 __fastcall RtlpHpSegContextInitialize(
        __int64 *a1,
        unsigned int a2,
        __int64 a3,
        __int64 a4,
        __int64 a5,
        __int16 a6,
        __int128 *a7,
        char a8){
  __int64 v9; 
  unsigned __int64 v12; 
  unsigned int v13; 
  unsigned int v14; 
  int v15; 
  __int128 v16; 
  __int64 result; 

  v9 = a2;
  memset(a1, 0i64, 0xC0u);
  *(_WORD *)((char *)a1 + 11) = 1031;
  v12 = (unsigned int)v9 >> 8;
  *a1 = ~(v9 - 1);
  _BitScanReverse(&v13, v12);
  *((_BYTE *)a1 + 8) = v13;
  _BitScanForward(&v14, (unsigned int)v9 >> 20);
  *((_BYTE *)a1 + 9) = v14;
  v15 = ~*(_DWORD *)a1;
  *((_BYTE *)a1 + 10) = (v12 + 0x1FFF) / v12;
  *((_DWORD *)a1 + 4) = (((((_DWORD)v12 - 1) & (unsigned int)(v12 + 0x1FFF)) - (unsigned int)v12 + v15 - 8190) >> 1)
                      - ((v12 - 1) & (((((_DWORD)v12 - 1) & (unsigned int)(v12 + 0x1FFF))
                                     - (unsigned int)v12
                                     + v15
                                     - 8190) >> 1));
  *((_BYTE *)a1 + 13) = a8;
  a1[8] = 0i64;
  v16 = *a7;
  a1[10] = (__int64)(a1 + 9);
  a1[9] = (__int64)(a1 + 9);
  a1[12] = 0i64;
  a1[13] = 0i64;
  a1[3] = a4;
  a1[7] = a3;
  *((_WORD *)a1 + 10) = a6 + ((unsigned int)v9 >= 0x200000 ? 0x10 : 0) - (_WORD)a1 + 32;
  result = a5;
  a1[4] = a5;
  *((_WORD *)a1 + 11) = a6 - (_WORD)a1;
  *(_OWORD *)(a1 + 5) = v16;
  return result;
}

Referenced by:

RtlpHpHeapCreate