MiPerformFinalZeroing
VOID __fastcall MiPerformFinalZeroing(UINT64 *a1, UINT64 a2, INT64 a3){
INT64 v3;
__int64 v4;
_MMPFN *PfnDb;
_MI_PFN_CACHE_ATTRIBUTE v6;
UINT64 *v7;
UINT64 *v8;
__int64 v9;
char *v10;
__int64 v11;
UINT64 v12;
int v13[10];
v3 = 0i64;
v4 = (unsigned int)a2;
PfnDb = MmGetPfnDb();
v6 = (int)a3;
v7 = a1;
if( (_DWORD)a2 )
{
v8 = a1;
v9 = (unsigned int)v4;
do
{
v10 = (char *)PfnDb + 48 * *v8++;
*((_QWORD *)v10 + 2) = v3;
v3 = (INT64)v10;
--v9;
}
while( v9 );
}
MiChangePageAttributeBatch(v3, (_BYTE *)(unsigned int)a3, ZeroPte);
if( (_DWORD)v4 )
{
v11 = v4;
do
{
v12 = *v7;
MiZeroPhysicalPage(*v7, 1ui64, v6);
_InterlockedOr(v13, 0);
MiSetPfnTbFlushStamp((_MMPFN *)((char *)PfnDb + 48 * v12), (unsigned int)KiTbFlushTimeStamp, 0i64);
++v7;
--v11;
}
while( v11 );
}
}Referenced by:
MiGetPageChain