MiReturnPartitionPagesToParent
VOID __stdcall MiReturnPartitionPagesToParent(_MI_PARTITION *FromPartition){
__int64 v2;
KIRQL v3;
_QWORD *v4;
_QWORD *v5;
unsigned __int64 v6;
_QWORD *v7;
__int64 v8;
_QWORD *v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int64 v13;
v10 = 0i64;
v11 = 0i64;
v12 = 0i64;
v13 = 0i64;
v2 = **(_QWORD **)(*((_QWORD *)FromPartition + 22) + 56i64);
MiDrainZeroLookasides(FromPartition, 0i64, 0i64, 0i64);
*(_QWORD *)&v10 = v2;
*((_QWORD *)&v10 + 1) = FromPartition;
v3 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)FromPartition + 50);
v4 = (_QWORD *)*((_QWORD *)FromPartition + 3);
v5 = 0i64;
v6 = v3;
LOBYTE(v11) = v3;
while( v4 )
{
v5 = v4;
v4 = (_QWORD *)*v4;
}
while( v5 )
{
v7 = (_QWORD *)v5[1];
v8 = (__int64)v5;
v9 = v5;
if( v7 )
{
do
{
v5 = v7;
v7 = (_QWORD *)*v7;
}
while( v7 );
}
else
{
while( 1 )
{
v5 = (_QWORD *)(v5[2] & 0xFFFFFFFFFFFFFFFCui64);
if( !v5 || (_QWORD *)*v5 == v9 )
break;
v9 = v5;
}
}
MiActOnPartitionNodePages(v8, 4u, (__int16 **)&v10);
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)FromPartition + 25);
__writecr8(v6);
MiReleasePartitionHugeIoSpace(FromPartition);
}Referenced by:
MiFreePartitionPhysicalPages