MiFreeUnmappedPageTables
void **__fastcall MiFreeUnmappedPageTables(__int64 a1, _QWORD *a2){
void **result;
__int64 v3;
__int64 v5;
__int64 v6;
unsigned __int64 v7;
void *retaddr;
result = &retaddr;
v3 = 0i64;
v5 = a1;
if( a1 )
{
do
{
v6 = *(_QWORD *)v5;
v7 = (unsigned __int8)MiLockPageInline(v5);
*(_BYTE *)(v5 + 34) = *(_BYTE *)(v5 + 34) & 0xF8 | 6;
if( (unsigned int)MiDecrementShareCount(v5) == 3 )
++a2[1];
_InterlockedAnd64((volatile signed __int64 *)(v5 + 24), 0x7FFFFFFFFFFFFFFFui64);
result = (void **)(unsigned int)KiIrqlFlags;
__writecr8(v7);
++v3;
v5 = v6;
}
while( v6 );
}
a2[3] += v3;
*a2 += v3;
return result;
}Referenced by:
MiDeleteSystemPageTableTail