MiClearSystemAccessBits
VOID __fastcall MiClearSystemAccessBits(INT64 a1, INT64 a2, UINT64 a3){
unsigned int v3;
INT64 v6;
INT64 v7;
signed __int64 v8;
INT64 i;
INT64 result;
int v11;
__int64 v12;
v3 = a3;
memset((INT64)&result, 0i64);
v12 = 0i64;
v11 = 20;
v6 = ((a1 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
if( a2 )
{
v7 = a2;
do
{
v8 = MI_READ_PTE_LOCK_FREE(a1);
if( (v8 & 0x20) != 0 )
_InterlockedCompareExchange64((volatile signed __int64 *)a1, v8 & 0xFFFFFFFFFFFFFFDFui64, v8);
a1 += 8i64;
--v7;
}
while( v7 );
}
if( v3 )
{
for( i = a1 - 8 * a2; a2; --a2 )
{
MiInsertLargeTbFlushEntry((INT64)&result, v3, i);
i += 8i64;
}
}
else
{
MiInsertTbFlushEntry((INT64)&result, v6, a2, 0i64);
}
MiFlushTbList((__int64)&result);
}Referenced by:
MiPfnRangeIsZero