MiAnyProtosAreMapped
__int64 __fastcall MiAnyProtosAreMapped(__int64 a1, _QWORD *a2){
unsigned int v2;
unsigned __int64 v3;
unsigned __int64 v4;
_MMPFN *v5;
ULONG_PTR v6;
unsigned __int64 v7;
UINT8 v8;
UINT8 PageIrql;
v2 = 0;
PageIrql = 17;
if( a1 == a2[3] )
v3 = a2[1];
else
v3 = *(_QWORD *)(a1 + 8);
if( a1 == a2[4] )
v4 = a2[2] + 8i64;
else
v4 = v3 + 8i64 * *(unsigned int *)(a1 + 44);
if( v3 < v4 )
{
do
{
v5 = MiCheckProtoPtePageState((VOID *)v3, &PageIrql);
v6 = (unsigned int)v5;
if( v5 )
{
v7 = v4;
if( v4 > (v3 & 0xFFFFFFFFFFFFF000ui64) + 4096 )
v7 = (v3 & 0xFFFFFFFFFFFFF000ui64) + 4096;
while( v3 < v7 )
{
if( (*(_BYTE *)v3 & 1) != 0 )
{
v2 = 1;
v3 = v4;
break;
}
v3 += 8i64;
}
v8 = PageIrql;
if( PageIrql != 17 )
{
MiUnlockProtoPoolPage((ULONG_PTR)v5, PageIrql);
v8 = 17;
PageIrql = 17;
}
}
else
{
v8 = PageIrql;
v3 = (v3 & 0xFFFFFFFFFFFFF000ui64) + 4096;
}
}
while( v3 < v4 );
if( v8 != 17 )
MiUnlockProtoPoolPage(v6, v8);
}
return v2;
}Referenced by:
MiTrimSection