MiFreeLargeZeroPages
VOID __stdcall MiFreeLargeZeroPages(UINT64 PageFrameIndex, _MMPFN **a2, UINT64 a3){
unsigned int v3;
unsigned int v4;
signed __int64 v5;
_MMPFN **v6;
__int64 v8;
UINT8 v9;
_MMPFN *v10;
UINT64 BitsMustBeChanged;
__int128 v12;
__int64 v13;
v13 = 0i64;
v3 = 0;
v4 = a3;
v12 = 0i64;
v5 = (char *)MiLargePageSizes - (char *)a2;
v6 = a2;
do
{
while( 1 )
{
v10 = *v6;
if( !*v6 )
break;
*v6 = (_MMPFN *)v10->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0;
if( v3 == 3 )
{
MiReleaseFreshPage(v10);
}
else
{
LODWORD(BitsMustBeChanged) = 1;
v8 = v10 - MmGetPfnDb();
MiUpdateLargePageBitMap(PageFrameIndex, v8, *(UINT64 *)((char *)v6 + v5), 0i64, BitsMustBeChanged);
v9 = MiLockPageInline(v10);
*(_QWORD *)&v12 = v8;
*((_QWORD *)&v12 + 1) = v4;
v13 = v9;
MiInsertLargePageInNodeList((__int64)&v12);
}
}
++v3;
++v6;
}
while( v3 < 4 );
}Referenced by:
MiCleanupPageTablePages
MiCreateLargePfnList
MiCreatePagingFileMap
MiPfnRangeIsZero