MiEliminateZeroPages
VOID __fastcall MiEliminateZeroPages(INT64 a1, UINT64 a2, UINT64 a3){
unsigned int v6;
MMPTE *PteAddress;
UINT64 v8;
MMPTE *v9;
_QWORD *v10;
_QWORD *v11;
MMPTE *PdeAddress;
INT64 result;
int v14;
int v15;
memset((INT64)&result, 0i64);
v6 = MiTbFlushType(a1);
MiInitializeTbFlushList((INT64)&result, v6, 20i64);
BYTE4(result) |= 4u;
PteAddress = MiGetPteAddress((PVOID)a2);
v8 = a3 >> 12;
v9 = 0i64;
while( v8 )
{
v10 = (_QWORD *)a2;
v11 = (_QWORD *)(a2 + 4088);
do
{
if( *v10 | *v11 )
break;
++v10;
--v11;
}
while( v10 <= v11 );
if( v10 > v11 )
{
PdeAddress = MiGetPdeAddress((PVOID)a2);
if( v9 != PdeAddress )
{
if( v15 )
MiConvertAndFlushWsleVas(a1, (INT64)&result);
v9 = PdeAddress;
}
MiInsertTbFlushEntry((INT64)&result, a2, 1i64, 0i64);
if( v15 == v14 )
MiConvertAndFlushWsleVas(a1, (INT64)&result);
}
PteAddress = (MMPTE *)((char *)PteAddress + 8);
a2 += 4096i64;
--v8;
}
if( v15 )
MiConvertAndFlushWsleVas(a1, (INT64)&result);
}Referenced by:
MiCopyToCfgBitMap
MiUpdateCfgSystemWideBitmapWorker