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