MiAddLoaderHalIoPte
NTSTATUS __stdcall MiAddLoaderHalIoPte(INT64 a1, INT64 a2, INT64 a3){
int v3;
UINT64 v4;
UINT64 v5;
UINT64 v6;
__int64 v7;
INT64 v9;
__int64 v10;
int v11;
UINT64 v12;
v3 = a3;
LODWORD(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( (((unsigned __int64)MmGetPfnDb()[v7].u4._bf_0 >> 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 = 2;
MiReferenceIoPages(1u, v7, v9, v11, 0i64, 0i64);
}
}
return 0;
}Referenced by:
No references.