MiUpdatePartitionLargePfnBitMap
__int64 __fastcall MiUpdatePartitionLargePfnBitMap(__int64 a1, _QWORD **a2){
_ETHREAD *CurrentThread;
unsigned int v4;
_QWORD *v6;
_QWORD *i;
_QWORD **v8;
__int64 v9;
_QWORD *v10;
_QWORD *v11;
__int128 v13;
__int128 v14;
__int128 v15;
__int64 v16;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v13 = 0i64;
v14 = 0i64;
v4 = 0;
v15 = 0i64;
v16 = 0i64;
*(_QWORD *)&v13 = a1;
MiLockDynamicMemoryExclusive(a1, (__int64)CurrentThread);
v6 = *a2;
i = 0i64;
while( v6 )
{
i = v6;
v6 = (_QWORD *)*v6;
}
while( i )
{
v8 = (_QWORD **)i[1];
v9 = (__int64)i;
v10 = i;
if( v8 )
{
v11 = *v8;
for( i = (_QWORD *)i[1]; v11; v11 = (_QWORD *)*v11 )
i = v11;
}
else
{
while( 1 )
{
i = (_QWORD *)(i[2] & 0xFFFFFFFFFFFFFFFCui64);
if( !i || (_QWORD *)*i == v10 )
break;
v10 = i;
}
}
MiActOnPartitionNodePages(v9, 3u, (__int16 **)&v13);
if( (SDWORD1(v14) & 0x80000000) != 0 )
{
v4 = DWORD1(v14);
break;
}
}
MiUnlockDynamicMemoryExclusive((_MI_PARTITION *)a1, CurrentThread);
return v4;
}Referenced by:
MiAllocatePartitionPhysicalPages
MiHotAddPartitionMemory