RtlpHpVaMgrCtxStart
INT64 __fastcall RtlpHpVaMgrCtxStart(INT64 a1, INT64 a2, INT64 a3, UINT64 a4){
int v5;
unsigned int v7;
UINT64 v8;
INT64 result;
unsigned int v10;
int v11;
UINT64 v12;
INT64 v13;
__int128 v14;
ULONGLONG pullResult;
pullResult = 0i64;
v5 = a2;
_BitScanForward(&v7, 0x20u);
*(_DWORD *)(a1 + 24) = v7;
v8 = (a4 >> 20) + 1;
if( (a4 & 0xFFFFF) == 0 )
v8 = a4 >> 20;
LODWORD(result) = RtlULongLongMult(v8, 8ui64, &pullResult);
if( (int)result >= 0 )
{
LODWORD(result) = RtlULongLongMult(pullResult, v10, &pullResult);
if( (int)result >= 0 )
{
result = RtlCSparseBitmapStart(a1 + 32, pullResult, v5, 1i64);
if( (int)result >= 0 )
result = 0i64;
if( (int)result >= 0 )
{
LODWORD(v13) = -1;
*(_DWORD *)a1 = v5;
v11 = 0;
*(_QWORD *)(a1 + 8) = a3;
v14 = 0i64;
while( 1 )
{
HIDWORD(v13) = v11;
v12 = 0x200000i64;
if( v11 != 2 && v11 == 3 )
v12 = 0x40000000i64;
result = RtlpHpVaMgrCtxAllocatorReference(a1, (INT64)&v13, v12);
if( (int)result < 0 )
break;
if( ++v11 >= 4 )
return 0i64;
}
}
}
}
return result;
}Referenced by:
RtlHpHeapManagerStart