HalpMmInitSystem
__int64 __fastcall HalpMmInitSystem(int a1, __int64 a2, __int64 a3){
int inited;
int v4;
int v5;
INT64 v7;
__int64 v8;
VOID *v9;
__int64 v10;
inited = 0;
if( a1 )
{
v4 = a1 - 12;
if( v4 )
{
v5 = v4 - 4;
if( v5 )
{
if( v5 == 1 )
{
inited = HalpInitMemoryCachingRequirementsTable(a3);
if( inited >= 0 )
{
HalpPteReserveResources(v7);
HalpMoveMemory = (__int64(__fastcall *)())RtlCopyMemoryNonTemporal;
}
}
}
else
{
HalpMmReservePageTablePages();
HalpMmLoaderBlock = 0i64;
HalpMmLeftoverMemory = 0i64;
HalpMmLeftoverMemorySize = 0;
}
}
else if( HalpMiscDiscardLowMemory )
{
HalpConsumeLowMemory(a3);
}
}
else
{
v8 = *(_QWORD *)(a3 + 240);
HalpMmLeftoverMemory = 0i64;
HalpMmLeftoverMemorySize = 0;
HalpMmLoaderBlock = (_LOADER_PARAMETER_BLOCK *)a3;
v9 = *(VOID **)(v8 + 2928);
v10 = *(_QWORD *)(v8 + 2936);
HalpHeapStart = v9;
HalpHeapEnd = (__int64)v9 + v10;
HalpOriginalHeapEnd = (__int64)v9 + v10 - 1;
qword_140C00718 = (__int64)HalpAllocateEarlyPages;
qword_140C00720 = (__int64)HalpMapEarlyPages;
HalpOriginalHeapStart = v9;
HalpMmAllocCtxInit(v9, a2);
}
return(unsigned int)inited;
}Referenced by:
No references.