MiMapChildLargePageVads
NTSTATUS __stdcall MiMapChildLargePageVads(ULONG_PTR ProcessToInitialize, UINT64 LargePageVads){
UINT64 v2;
_QWORD *v4;
_QWORD *i;
_QWORD **v6;
INT64 v7;
_QWORD *v8;
_QWORD *v9;
int v10;
__int64 v11;
_MMVAD *Address;
_MMVAD_SHORT *v13;
NTSTATUS result;
v2 = LargePageVads;
if( LargePageVads )
{
v4 = *(_QWORD **)(*(_QWORD *)&ProcessToInitialize + 2008i64);
i = 0i64;
while( v4 )
{
i = v4;
v4 = (_QWORD *)*v4;
}
while( i )
{
v6 = (_QWORD **)i[1];
v7 = (INT64)i;
v8 = i;
if( v6 )
{
v9 = *v6;
for( i = (_QWORD *)i[1]; v9; v9 = (_QWORD *)*v9 )
i = v9;
}
else
{
while( 1 )
{
i = (_QWORD *)(i[2] & 0xFFFFFFFFFFFFFFFCui64);
if( !i || (_QWORD *)*i == v8 )
break;
v8 = i;
}
}
LOBYTE(v10) = MiIsVadLargePrivate(v7);
if( v10 )
{
Address = MiLocateAddress((VOID *)((*(unsigned int *)(v11 + 24) | ((unsigned __int64)*(unsigned __int8 *)(v11 + 32) << 32)) << 12));
result = MiCopyLargeVad(ProcessToInitialize, &Address->Core, v13);
if( result < 0 )
return result;
if( !--v2 )
break;
}
}
}
return 0;
}Referenced by:
MiCloneProcessAddressSpace