MiGenerateAccessViolation
BOOL __fastcall MiGenerateAccessViolation(UINT64 *a1){
UINT64 v1;
__int64 *v2;
unsigned __int64 v3;
_QWORD *v4;
__int64 v5;
v1 = *a1;
if( (unsigned int)MiDeterminePoolType(*a1) == 32 )
return 0;
v2 = &qword_140C4C640;
v3 = ExAcquireSpinLockShared(&dword_140C4C638);
while( 1 )
{
v4 = (_QWORD *)*v2;
while( v4 )
{
if( v1 > v4[4] )
{
v4 = (_QWORD *)v4[1];
}
else
{
if( v1 >= v4[3] )
goto LABEL_14;
v4 = (_QWORD *)*v4;
}
}
if( v2 != &qword_140C4C640 )
break;
v5 = *((_QWORD *)KeGetCurrentThread() + 23);
if( (*(_DWORD *)(v5 + 1124) & 0x10000) == 0 )
break;
v2 = (__int64 *)(*(_QWORD *)(v5 + 1368) + 1008i64);
}
LABEL_14:
ExReleaseSpinLockSharedFromDpcLevel(&dword_140C4C638);
__writecr8(v3);
return v4 != 0;
}Referenced by:
MiCheckSystemPageTables
MiRaisedIrqlFault
MiSystemFault