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