RtlpHpSegSegmentInitialize

NTSTATUS __stdcall RtlpHpSegSegmentInitialize(INT64 a1, INT64 a2, UINT64 a3){
  char v3; 
  unsigned int v4; 
  unsigned int v7; 
  INT64 v8; 
  unsigned int v9; 
  unsigned int v10; 
  __int64 v11; 
  unsigned __int8 *v12; 
  unsigned __int8 v13; 
  __int128 v15; 
  __int64 v16; 

  v3 = *(_BYTE *)(a1 + 13);
  v4 = a3;
  v16 = 0i64;
  if( (v3 & 7) != 0 )
  {
    v15 = *(_OWORD *)(a1 + 40);
    RtlpHpQueryVA(a2 & 0xFFFFFFFFFFE00000ui64, &v15, &v16, 0i64);
    *(_QWORD *)(a2 + 24) = v16;
  }
  v7 = v4;
  v8 = a2 + 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;
  v11 = 32i64 * v10;
  *(_BYTE *)(v11 + v8 + 31) = v10;
  *(_DWORD *)v8 = -857879331;
  return v11;
}

Referenced by:

RtlpHpSegContextReserve
RtlpHpSegPageRangeAllocate