MiNoFaultFound
__int64 __fastcall MiNoFaultFound(
__int64 a1,
volatile signed __int64 *a2,
__int64 a3,
__int64 a4,
unsigned int a5,
signed __int64 a6){
unsigned int v6;
unsigned int v8;
int v9;
signed __int64 v10;
INT64 v12;
v6 = 0;
v8 = 0;
v9 = 0;
v10 = a6;
if( (a6 & 0x20) != 0 )
{
if( ((a4 & 1) == 0 || *(_BYTE *)(a4 & 0xFFFFFFFFFFFFFFFEui64) != 5)
&& (MiFlags & 0x100) == 0
&& (MiFlags & 0x200) == 0 )
{
v8 = 1;
}
}
else
{
v10 = a6 | 0x20;
v9 = 1;
}
if( (*(_QWORD *)(a1 + 8) & 2) != 0 && (v10 & 2) == 0 )
{
v9 = 1;
if( (v10 & 0x42) == 64 )
v8 = 1;
v10 |= 0x62ui64;
}
if( v9 && a6 != _InterlockedCompareExchange64(a2, v10, a6) )
return 0i64;
if( v8 && (MiFlags & 0x100) == 0 && (MiFlags & 0x200) == 0 )
{
v12 = *(_QWORD *)(a1 + 56);
if( v12 )
v6 = MiTbFlushType(v12);
KeFlushSingleTb(a3, v6, a5);
}
return v8;
}Referenced by:
MiLargePageFault
MiRaisedIrqlFault
MiSystemFault