MiImagePageOk
BOOL __fastcall MiImagePageOk(UINT64 a1, INT64 a2){
UINT8 v2;
WCHAR *v3;
int v5;
__int64 v6;
RTL_BALANCED_NODE *Address;
__int64 v8;
__int64 v9;
__int64 v10;
__int64 v11;
int v13;
LOBYTE(v5) = MI_PFN_IS_PROTO((UNICODE_STRING *)a2, (UNICODE_STRING *)a2, v2, v3);
if( !v5 )
return 1;
v8 = *(_QWORD *)(v6 + 16);
if( (v8 & 0x400) == 0 || ((*(_QWORD *)(v6 + 40) >> 60) & 7) == 3 )
return 1;
v9 = *(_QWORD *)(v6 + 16);
if( qword_140C4DC80 && (v8 & 0x10) == 0 )
v9 = ~qword_140C4DC80 & v8;
v10 = v9 >> 16;
if( (*(_DWORD *)(*(_QWORD *)v10 + 56i64) & 0x20) == 0 )
return 1;
v11 = *(_QWORD *)(*(_QWORD *)(*(_QWORD *)v10 + 96i64) + 40i64);
if( !v11 || (v11 & 0xFFFFFFFFFFFFFFF8ui64) == 8 || (v11 & 3) == 2 )
return 1;
if( a1 >= 0xFFFF800000000000ui64 )
{
if( (MiFlags & 0x10000) == 0 || (v8 & 0x40) == 0 )
return 1;
LABEL_17:
if( !Address )
return 0;
goto LABEL_18;
}
if( !Address )
{
Address = MiLocateAddress(a1);
goto LABEL_17;
}
LABEL_18:
v13 = (int)Address[2].Children[0];
return(v13 & 0x70) == 32
&& ((v13 & 0xF80) == 128
|| (*(_DWORD *)&Address[2].0 & 0x8000000) != 0 && (v11 & 4) == 0
|| (MiFlags & 0x400) != 0 && (*(_BYTE *)(v10 + 34) & 2) != 0);
}Referenced by:
MiSoftFaultMappedView
MiWaitForCollidedFaultComplete