MiAddLoaderHalIoPte
INT64 __fastcall MiAddLoaderHalIoPte(INT64 a1, INT64 a2, INT64 a3){
int v3;
INT64 v4;
unsigned __int64 v5;
unsigned __int64 v6;
__int64 v7;
INT64 v9;
__int64 v10;
INT64 v11;
UINT64 v12;
v3 = a3;
v4 = MI_READ_PTE_LOCK_FREE(a2);
v12 = v4;
v5 = v4;
if( (v4 & 1) != 0 )
{
v6 = v4;
MiPteInShadowRange((UINT64)&v12);
v7 = (v6 >> 12) & 0xFFFFFFFFFi64;
if( ((*((_QWORD *)MmGetPfnDb() + 6 * v7 + 5) >> 50) & 1) == 0 )
{
if( (v5 & 0x80u) == 0i64 )
{
v9 = 1i64;
}
else
{
v9 = 512i64;
if( v3 > 1 )
{
v10 = (unsigned int)(v3 - 1);
do
{
v9 <<= 9;
--v10;
}
while( v10 );
}
}
if( ((v5 >> 4) & 1) != 0 || (v5 & 8) == 0 )
v11 = ((v5 >> 4) & 1) == 0;
else
v11 = 2i64;
MiReferenceIoPages(1ui64, v7, v9, v11, 0i64, 0i64);
}
}
return 0i64;
}Referenced by:
No references.