MiCheckSystemPageTables

INT64 __stdcall MiCheckSystemPageTables(UINT64 *FaultStatus){
  __int64 v2; 
  ULONG_PTR **i; 
  ULONG_PTR v4; 
  UINT64 v6; 
  unsigned int v7; 
  int v8; 
  ULONG_PTR v9; 
  v2 = 3i64;
  for( i = (ULONG_PTR **)(FaultStatus + 6); ; --i )
  {
    v4 = **i;
    if( (v4 & 1) == 0 )
      KeBugCheckEx(0x50u, *FaultStatus, FaultStatus[1], FaultStatus[2], 0xDui64);
    if( (v4 & 0x80u) != 0i64 )
      break;
    if( !--v2 )
      return 0i64;
  }
  if( (FaultStatus[1] & 2) == 0 || (v4 & 0x800) != 0 )
  {
    MiCheckSystemNxFault((INT64)FaultStatus, v4, 6ui64);
    v6 = FaultStatus[2];
    if( (v6 & 1) != 0 )
    {
      v7 = *(unsigned __int8 *)(v6 & 0xFFFFFFFFFFFFFFFEui64);
      if( (unsigned __int8)v7 <= 6u )
      {
        v8 = 74;
        if( _bittest(&v8, v7) )
          return 1i64;
      }
    }
    else if( KeInvalidAccessAllowed((PVOID)v6) == 1 )
    {
      return 1i64;
    }
    v9 = *FaultStatus;
    if( *FaultStatus >= (unsigned __int64)MmGetPteBase() && v9 <= (unsigned __int64)MmGetPteLimit() )
      KeBugCheckEx(0x50u, v9, FaultStatus[1], FaultStatus[2], 8ui64);
    return 1i64;
  }
  if( !MiGenerateAccessViolation(FaultStatus) )
    KeBugCheckEx(0xBEu, *FaultStatus, v4, FaultStatus[2], 0x10ui64);
  return 2i64;
}

Referenced by:

MiSystemFault