MiAllowGuardFault

UINT64 __stdcall MiAllowGuardFault(PVOID TrapInformation){
  _ETHREAD *CurrentThread; 
  __int64 v2; 
  _BYTE *v3; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  if( *((_BYTE *)CurrentThread + 586) == 1 )
    return 0i64;
  v2 = (unsigned __int8)TrapInformation & 1;
  v3 = (_BYTE *)((unsigned __int64)TrapInformation & 0xFFFFFFFFFFFFFFFEui64);
  if( ((unsigned __int8)TrapInformation & 1) == 0 )
    goto LABEL_3;
  if( *v3 == 1 )
    goto LABEL_11;
  if( ((unsigned __int8)TrapInformation & 1) == 0 )
  {
LABEL_3:
    if( KeInvalidAccessAllowed(TrapInformation) != 1 )
      return(*((_DWORD *)CurrentThread + 29) & 0x20) == 0;
LABEL_11:
    if( !v2 || *v3 != 6 )
      return 0i64;
    return(*((_DWORD *)CurrentThread + 29) & 0x20) == 0;
  }
  if( *v3 == 3 || *v3 == 6 )
    goto LABEL_11;
  return(*((_DWORD *)CurrentThread + 29) & 0x20) == 0;
}

Referenced by:

MiAccessCheck
MiResolveProtoPteFault
MiUserFault
MiZeroFault