MiVaToPfn
NTSTATUS __stdcall MiVaToPfn(VOID *Va){
int v2;
__int64 v3;
INT64 v4;
INT64 v5;
unsigned __int64 v6;
__int64 v7;
__int64 v8;
unsigned __int64 v9;
__int16 v10;
int v11;
UINT64 v14[5];
INT64 v15;
memset(v14, 0, 32);
MiFillPteHierarchy((UINT64)Va, v14);
v2 = 4;
v3 = 4i64;
do
{
v4 = v14[--v3];
--v2;
LODWORD(v5) = MI_READ_PTE_LOCK_FREE(v4);
v15 = v5;
}
while( v3 && (v5 & 0x80u) == 0i64 );
LODWORD(v6) = MI_READ_PTE_LOCK_FREE((INT64)&v15);
v7 = (v6 >> 12) & 0xFFFFFFFFFi64;
if( v2 )
{
v8 = 1i64;
v9 = (unsigned __int64)Va >> 12;
do
{
v10 = v9;
v9 >>= 9;
v11 = v8 * (v10 & 0x1FF);
v8 <<= 9;
LODWORD(v7) = v11 + v7;
--v2;
}
while( v2 );
}
return v7;
}Referenced by:
MiCheckKernelShadow
MiDuplicateCloneLeaf
MiFreeInitializationCode
MiGetPhysicalAddress
MiInitializeShadowPageTable