RtlHpHeapManagerStart
void __fastcall RtlHpHeapManagerStart(_RTL_RUN_ONCE *a1, int a2, __int64 a3, unsigned __int64 a4, char a5){
int v9;
unsigned int v10;
char v11;
__int128 Parameter;
a1[1].Value = a3;
if( RtlCSparseBitmapStart((INT64)&a1[2], 2 * (a4 >> 20), a2, a2 == 1) >= 0 )
{
RtlpHpVaMgrCtxStart((INT64)&a1[11], a2, a3, a4 - 1);
if( v9 >= 0 )
{
if( (a5 & 2) != 0 )
{
Parameter = 0i64;
*(_WORD *)((char *)&Parameter + 1) = 1;
LOBYTE(Parameter) = (2 * (a2 & 3)) | 1;
RtlpHpMetadataHeapCreate(a1 + 1814, &Parameter, 0i64);
}
if( (a5 & 1) != 0 )
{
v10 = 0;
v11 = 2 * (a2 & 3);
do
{
Parameter = 0i64;
*(_WORD *)((char *)&Parameter + 1) = (unsigned __int8)v10;
LOBYTE(Parameter) = v11 | (v10 != 0);
if( RtlpHpMetadataHeapStart(&a1[2 * v10 + 1811], &Parameter) < 0 )
break;
++v10;
}
while( v10 < 3 );
}
}
}
}Referenced by:
ExInitializeSessionHeapManager
RtlHpKInitializeHeapManager