mono_parse_default_optimizations (const char * p)
{
  int D.23782;
  guint32 opt;

  opt = parse_optimizations (p);
  D.23782 = (int) opt;
  return D.23782;
}


parse_optimizations (const char * p)
{
  unsigned int D.23784;
  unsigned int exclude.0;
  unsigned int D.23786;
  guint32 D.23789;
  char D.23790;
  short int D.23794;
  sizetype D.23795;
  long unsigned int D.23796;
  long unsigned int D.23797;
  int D.23798;
  int D.23803;
  int D.23804;
  unsigned int D.23805;
  unsigned int D.23807;
  sizetype D.23808;
  void (*<T3e5b>) (const char *) D.23813;
  const char * p.1;
  char D.23818;
  unsigned int i.2;
  const char * D.23821;
  _Bool iftmp.3;
  long unsigned int D.23826;
  int D.23829;
  int D.23831;
  unsigned int D.23837;
  struct _IO_FILE * stderr.4;
  guint32 opt;
  guint32 exclude;
  const char * n;
  int i;
  int invert;
  int len;

  try
    {
      opt = 370223615;
      exclude = 0;
      mono_hwcap_init ();
      D.23784 = mono_arch_cpu_optimizations (&exclude);
      opt = D.23784 | opt;
      exclude.0 = exclude;
      D.23786 = ~exclude.0;
      opt = D.23786 & opt;
      if (p == 0B) goto <D.23787>; else goto <D.23788>;
      <D.23787>:
      D.23789 = opt;
      return D.23789;
      <D.23788>:
      goto <D.23432>;
      <D.23431>:
      D.23790 = *p;
      if (D.23790 == 45) goto <D.23791>; else goto <D.23792>;
      <D.23791>:
      p = p + 1;
      invert = 1;
      goto <D.23793>;
      <D.23792>:
      invert = 0;
      <D.23793>:
      i = 0;
      goto <D.23430>;
      <D.23429>:
      D.23794 = opt_names[i];
      D.23795 = (sizetype) D.23794;
      n = &opstr + D.23795;
      D.23796 = __strlen_g (n);
      len = (int) D.23796;
      D.23797 = (long unsigned int) len;
      D.23798 = strncmp (p, n, D.23797);
      if (D.23798 == 0) goto <D.23799>; else goto <D.23800>;
      <D.23799>:
      if (invert != 0) goto <D.23801>; else goto <D.23802>;
      <D.23801>:
      D.23803 = 1 << i;
      D.23804 = ~D.23803;
      D.23805 = (unsigned int) D.23804;
      opt = D.23805 & opt;
      goto <D.23806>;
      <D.23802>:
      D.23803 = 1 << i;
      D.23807 = (unsigned int) D.23803;
      opt = D.23807 | opt;
      <D.23806>:
      D.23808 = (sizetype) len;
      p = p + D.23808;
      D.23790 = *p;
      if (D.23790 == 44) goto <D.23809>; else goto <D.23810>;
      <D.23809>:
      p = p + 1;
      goto <D.23425>;
      <D.23810>:
      D.23790 = *p;
      if (D.23790 == 61) goto <D.23811>; else goto <D.23812>;
      <D.23811>:
      p = p + 1;
      D.23813 = opt_funcs[i];
      if (D.23813 != 0B) goto <D.23814>; else goto <D.23815>;
      <D.23814>:
      D.23813 = opt_funcs[i];
      D.23813 (p);
      <D.23815>:
      goto <D.23427>;
      <D.23426>:
      <D.23427>:
      D.23790 = *p;
      if (D.23790 != 0) goto <D.23816>; else goto <D.23428>;
      <D.23816>:
      p.1 = p;
      p = p.1 + 1;
      D.23818 = *p.1;
      if (D.23818 != 44) goto <D.23426>; else goto <D.23428>;
      <D.23428>:
      goto <D.23425>;
      <D.23812>:
      goto <D.23425>;
      <D.23800>:
      i = i + 1;
      <D.23430>:
      i.2 = (unsigned int) i;
      if (i.2 <= 28) goto <D.23820>; else goto <D.23425>;
      <D.23820>:
      D.23794 = opt_names[i];
      D.23795 = (sizetype) D.23794;
      D.23821 = &opstr + D.23795;
      if (D.23821 != 0B) goto <D.23429>; else goto <D.23425>;
      <D.23425>:
      if (i == 29) goto <D.23822>; else goto <D.23824>;
      <D.23824>:
      D.23794 = opt_names[i];
      D.23795 = (sizetype) D.23794;
      D.23821 = &opstr + D.23795;
      if (D.23821 == 0B) goto <D.23822>; else goto <D.23823>;
      <D.23822>:
      D.23826 = __strlen_g ("all");
      if (D.23826 <= 2) goto <D.23827>; else goto <D.23828>;
      <D.23827>:
      D.23829 = strcmp (p, "all");
      iftmp.3 = D.23829 == 0;
      goto <D.23830>;
      <D.23828>:
      D.23831 = strncmp (p, "all", 3);
      iftmp.3 = D.23831 == 0;
      <D.23830>:
      if (iftmp.3 != 0) goto <D.23832>; else goto <D.23833>;
      <D.23832>:
      if (invert != 0) goto <D.23834>; else goto <D.23835>;
      <D.23834>:
      opt = 0;
      goto <D.23836>;
      <D.23835>:
      exclude.0 = exclude;
      D.23837 = exclude.0 | 151126528;
      opt = ~D.23837;
      <D.23836>:
      p = p + 3;
      D.23790 = *p;
      if (D.23790 == 44) goto <D.23838>; else goto <D.23839>;
      <D.23838>:
      p = p + 1;
      <D.23839>:
      goto <D.23840>;
      <D.23833>:
      stderr.4 = stderr;
      fprintf (stderr.4, "Invalid optimization name `%s\'\n", p);
      exit (1);
      <D.23840>:
      <D.23823>:
      <D.23432>:
      D.23790 = *p;
      if (D.23790 != 0) goto <D.23431>; else goto <D.23433>;
      <D.23433>:
      D.23789 = opt;
      return D.23789;
    }
  finally
    {
      exclude = {CLOBBER};
    }
}


__attribute__((__gnu_inline__))
__strlen_g (const char * __str)
{
  size_t D.23844;
  long int __ptr.5;
  long int __str.6;
  long int D.23847;
  char * __ptr;
  char * __tmp;

  __ptr = 0B;
  __tmp = __str;
  __asm__ __volatile__("   la    0,0
0: srst  %0,%1
   jo    0b
" : "=&a" __ptr, "=&a" __tmp : "0" __ptr, "1" __tmp : "0", "memory", "cc");
  __ptr.5 = (long int) __ptr;
  __str.6 = (long int) __str;
  D.23847 = __ptr.5 - __str.6;
  D.23844 = (size_t) D.23847;
  return D.23844;
}


__attribute__((__gnu_inline__, nothrow, leaf, pure))
strcmp (const char * __s1, const char * __s2)
{
  int iftmp.7;
  int iftmp.8;
  int D.23857;
  char * __p1;
  char * __p2;
  int __ret;

  __p1 = __s1;
  __p2 = __s2;
  __asm__ __volatile__("   slr   0,0
0: clst  %1,%2
   jo    0b
   ipm   %0
   srl   %0,28" : "=d" __ret, "=&a" __p1, "=&a" __p2 : "1" __p1, "2" __p2 : "0", "memory", "cc");
  if (__ret != 0) goto <D.23850>; else goto <D.23851>;
  <D.23850>:
  if (__ret == 1) goto <D.23853>; else goto <D.23854>;
  <D.23853>:
  iftmp.8 = -1;
  goto <D.23855>;
  <D.23854>:
  iftmp.8 = 1;
  <D.23855>:
  iftmp.7 = iftmp.8;
  goto <D.23856>;
  <D.23851>:
  iftmp.7 = 0;
  <D.23856>:
  __ret = iftmp.7;
  D.23857 = __ret;
  return D.23857;
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__))
fprintf (struct FILE * restrict __stream, const char * restrict __fmt)
{
  int D.23859;

  D.23859 = __fprintf_chk (__stream, 1, __fmt, __builtin_va_arg_pack ());
  return D.23859;
}


mono_jit_exec (struct MonoDomain * domain, struct MonoAssembly * assembly, int argc, char * * argv)
{
  const char * D.23863;
  int D.23864;
  struct MonoImage * image;
  struct MonoMethod * method;
  guint32 entry;

  image = mono_assembly_get_image (assembly);
  entry = mono_image_get_entry_point (image);
  if (entry == 0) goto <D.23861>; else goto <D.23862>;
  <D.23861>:
  D.23863 = mono_image_get_filename (image);
  monoeg_g_print ("Assembly \'%s\' doesn\'t have an entry point.\n", D.23863);
  mono_environment_exitcode_set (1);
  D.23864 = 1;
  return D.23864;
  <D.23862>:
  method = mono_get_method (image, entry, 0B);
  if (method == 0B) goto <D.23865>; else goto <D.23866>;
  <D.23865>:
  monoeg_g_print ("The entry point method could not be loaded\n");
  mono_environment_exitcode_set (1);
  D.23864 = 1;
  return D.23864;
  <D.23866>:
  D.23864 = mono_runtime_run_main (method, argc, argv, 0B);
  return D.23864;
}


mono_jit_parse_options (int argc, char * * argv)
{
  long unsigned int D.23868;
  long unsigned int D.23869;
  char * * D.23870;
  char * D.23871;
  char D.23872;
  _Bool iftmp.9;
  long unsigned int D.23875;
  int D.23878;
  int D.23880;
  char * D.23883;
  int D.23885;
  _Bool iftmp.10;
  long unsigned int D.23890;
  int D.23893;
  int D.23895;
  char * D.23898;
  _Bool iftmp.11;
  long unsigned int D.23901;
  int D.23904;
  int D.23906;
  char * D.23909;
  int D.23911;
  _Bool iftmp.12;
  long unsigned int D.23916;
  int D.23919;
  int D.23921;
  int D.23928;
  int D.23930;
  int D.23931;
  int D.23935;
  int D.23939;
  int D.23942;
  struct _IO_FILE * stderr.13;
  int D.23946;
  int D.23950;
  struct MonoTraceSpec * D.23956;
  struct MonoTraceSpec * mono_jit_trace_calls.14;
  unsigned int mini_verbose.15;
  int i;
  char * trace_options;
  int mini_verbose;

  trace_options = 0B;
  mini_verbose = 0;
  i = 0;
  goto <D.23671>;
  <D.23670>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23872 = *D.23871;
  if (D.23872 != 45) goto <D.23664>; else goto <D.23873>;
  <D.23873>:
  D.23875 = __strlen_g ("--debugger-agent=");
  if (D.23875 <= 16) goto <D.23876>; else goto <D.23877>;
  <D.23876>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23878 = strcmp (D.23871, "--debugger-agent=");
  iftmp.9 = D.23878 == 0;
  goto <D.23879>;
  <D.23877>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23880 = strncmp (D.23871, "--debugger-agent=", 17);
  iftmp.9 = D.23880 == 0;
  <D.23879>:
  if (iftmp.9 != 0) goto <D.23881>; else goto <D.23882>;
  <D.23881>:
  {
    struct MonoDebugOptions * opt;

    opt = mini_get_debug_options ();
    D.23868 = (long unsigned int) i;
    D.23869 = D.23868 * 8;
    D.23870 = argv + D.23869;
    D.23871 = *D.23870;
    D.23883 = D.23871 + 17;
    mono_debugger_agent_parse_options (D.23883);
    opt->mdb_optimizations = 1;
    enable_debugging = 1;
  }
  goto <D.23884>;
  <D.23882>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23885 = strcmp (D.23871, "--soft-breakpoints");
  if (D.23885 == 0) goto <D.23886>; else goto <D.23887>;
  <D.23886>:
  {
    struct MonoDebugOptions * opt;

    opt = mini_get_debug_options ();
    opt->soft_breakpoints = 1;
    opt->explicit_null_checks = 1;
  }
  goto <D.23888>;
  <D.23887>:
  D.23890 = __strlen_g ("--optimize=");
  if (D.23890 <= 10) goto <D.23891>; else goto <D.23892>;
  <D.23891>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23893 = strcmp (D.23871, "--optimize=");
  iftmp.10 = D.23893 == 0;
  goto <D.23894>;
  <D.23892>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23895 = strncmp (D.23871, "--optimize=", 11);
  iftmp.10 = D.23895 == 0;
  <D.23894>:
  if (iftmp.10 != 0) goto <D.23896>; else goto <D.23897>;
  <D.23896>:
  {
    guint32 opt;

    D.23868 = (long unsigned int) i;
    D.23869 = D.23868 * 8;
    D.23870 = argv + D.23869;
    D.23871 = *D.23870;
    D.23898 = D.23871 + 11;
    opt = parse_optimizations (D.23898);
    mono_set_optimizations (opt);
  }
  goto <D.23899>;
  <D.23897>:
  D.23901 = __strlen_g ("-O=");
  if (D.23901 <= 2) goto <D.23902>; else goto <D.23903>;
  <D.23902>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23904 = strcmp (D.23871, "-O=");
  iftmp.11 = D.23904 == 0;
  goto <D.23905>;
  <D.23903>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23906 = strncmp (D.23871, "-O=", 3);
  iftmp.11 = D.23906 == 0;
  <D.23905>:
  if (iftmp.11 != 0) goto <D.23907>; else goto <D.23908>;
  <D.23907>:
  {
    guint32 opt;

    D.23868 = (long unsigned int) i;
    D.23869 = D.23868 * 8;
    D.23870 = argv + D.23869;
    D.23871 = *D.23870;
    D.23909 = D.23871 + 3;
    opt = parse_optimizations (D.23909);
    mono_set_optimizations (opt);
  }
  goto <D.23910>;
  <D.23908>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23911 = strcmp (D.23871, "--trace");
  if (D.23911 == 0) goto <D.23912>; else goto <D.23913>;
  <D.23912>:
  trace_options = "";
  goto <D.23914>;
  <D.23913>:
  D.23916 = __strlen_g ("--trace=");
  if (D.23916 <= 7) goto <D.23917>; else goto <D.23918>;
  <D.23917>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23919 = strcmp (D.23871, "--trace=");
  iftmp.12 = D.23919 == 0;
  goto <D.23920>;
  <D.23918>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23921 = strncmp (D.23871, "--trace=", 8);
  iftmp.12 = D.23921 == 0;
  <D.23920>:
  if (iftmp.12 != 0) goto <D.23922>; else goto <D.23923>;
  <D.23922>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  trace_options = D.23871 + 8;
  goto <D.23924>;
  <D.23923>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23928 = strcmp (D.23871, "--verbose");
  if (D.23928 == 0) goto <D.23925>; else goto <D.23929>;
  <D.23929>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23930 = strcmp (D.23871, "-v");
  if (D.23930 == 0) goto <D.23925>; else goto <D.23926>;
  <D.23925>:
  mini_verbose = mini_verbose + 1;
  goto <D.23927>;
  <D.23926>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23931 = strcmp (D.23871, "--breakonex");
  if (D.23931 == 0) goto <D.23932>; else goto <D.23933>;
  <D.23932>:
  {
    struct MonoDebugOptions * opt;

    opt = mini_get_debug_options ();
    opt->break_on_exc = 1;
  }
  goto <D.23934>;
  <D.23933>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23935 = strcmp (D.23871, "--stats");
  if (D.23935 == 0) goto <D.23936>; else goto <D.23937>;
  <D.23936>:
  mono_counters_enable (-1);
  mono_stats.enabled = 1;
  mono_jit_stats.enabled = 1;
  goto <D.23938>;
  <D.23937>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23939 = strcmp (D.23871, "--break");
  if (D.23939 == 0) goto <D.23940>; else goto <D.23941>;
  <D.23940>:
  D.23942 = i + 1;
  if (D.23942 >= argc) goto <D.23943>; else goto <D.23944>;
  <D.23943>:
  stderr.13 = stderr;
  fprintf (stderr.13, "Missing method name in --break command line option\n");
  exit (1);
  <D.23944>:
  i = i + 1;
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23946 = mono_debugger_insert_breakpoint (D.23871, 0);
  if (D.23946 == 0) goto <D.23947>; else goto <D.23948>;
  <D.23947>:
  stderr.13 = stderr;
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  fprintf (stderr.13, "Error: invalid method name \'%s\'\n", D.23871);
  <D.23948>:
  goto <D.23949>;
  <D.23941>:
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  D.23950 = strcmp (D.23871, "--llvm");
  if (D.23950 == 0) goto <D.23951>; else goto <D.23952>;
  <D.23951>:
  stderr.13 = stderr;
  fprintf (stderr.13, "Mono Warning: --llvm not supported on this platform.\n");
  goto <D.23953>;
  <D.23952>:
  stderr.13 = stderr;
  D.23868 = (long unsigned int) i;
  D.23869 = D.23868 * 8;
  D.23870 = argv + D.23869;
  D.23871 = *D.23870;
  fprintf (stderr.13, "Unsupported command line option: \'%s\'\n", D.23871);
  exit (1);
  <D.23953>:
  <D.23949>:
  <D.23938>:
  <D.23934>:
  <D.23927>:
  <D.23924>:
  <D.23914>:
  <D.23910>:
  <D.23899>:
  <D.23888>:
  <D.23884>:
  i = i + 1;
  <D.23671>:
  if (i < argc) goto <D.23670>; else goto <D.23664>;
  <D.23664>:
  if (trace_options != 0B) goto <D.23954>; else goto <D.23955>;
  <D.23954>:
  D.23956 = mono_trace_parse_options (trace_options);
  mono_jit_trace_calls = D.23956;
  mono_jit_trace_calls.14 = mono_jit_trace_calls;
  if (mono_jit_trace_calls.14 == 0B) goto <D.23958>; else goto <D.23959>;
  <D.23958>:
  exit (1);
  <D.23959>:
  <D.23955>:
  if (mini_verbose != 0) goto <D.23960>; else goto <D.23961>;
  <D.23960>:
  mini_verbose.15 = (unsigned int) mini_verbose;
  mono_set_verbose_level (mini_verbose.15);
  <D.23961>:
}


mono_main (int argc, char * * argv)
{
  const gchar * D.23963;
  long unsigned int D.23970;
  long unsigned int D.23971;
  char * * D.23972;
  char * D.23973;
  char D.23974;
  int D.23976;
  _Bool iftmp.16;
  long unsigned int D.23981;
  int D.23984;
  int D.23986;
  char * D.23989;
  unsigned int D.23990;
  int D.23995;
  int D.23997;
  int D.24000;
  int D.24002;
  const char * iftmp.17;
  struct MonoImage * D.24006;
  int D.24012;
  int D.24015;
  int D.24017;
  int D.24018;
  int D.24021;
  int D.24024;
  int D.24027;
  _Bool iftmp.18;
  long unsigned int D.24031;
  int D.24034;
  int D.24036;
  int D.24039;
  struct _IO_FILE * stderr.19;
  struct FILE * D.24043;
  _Bool iftmp.20;
  long unsigned int D.24046;
  int D.24049;
  int D.24051;
  char * D.24054;
  _Bool iftmp.21;
  long unsigned int D.24057;
  int D.24060;
  int D.24062;
  char * D.24065;
  int D.24067;
  int D.24071;
  int D.24075;
  int D.24081;
  int D.24087;
  _Bool iftmp.22;
  long unsigned int D.24092;
  int D.24095;
  int D.24097;
  int D.24101;
  int D.24105;
  int D.24110;
  int D.24114;
  int D.24117;
  struct MonoMethodDesc * D.24120;
  struct MonoMethodDesc * mono_break_at_bb_method.23;
  int D.24124;
  int D.24126;
  struct MonoMethodDesc * D.24131;
  struct MonoMethodDesc * mono_inject_async_exc_method.24;
  int D.24135;
  int D.24137;
  int D.24141;
  int D.24145;
  int D.24149;
  int D.24153;
  _Bool iftmp.25;
  long unsigned int D.24158;
  int D.24161;
  int D.24163;
  _Bool iftmp.26;
  long unsigned int D.24168;
  int D.24171;
  int D.24173;
  char * D.24176;
  int D.24177;
  int D.24179;
  _Bool iftmp.27;
  long unsigned int D.24184;
  int D.24187;
  int D.24189;
  int D.24193;
  int D.24197;
  _Bool iftmp.28;
  long unsigned int D.24202;
  int D.24205;
  int D.24207;
  _Bool iftmp.29;
  long unsigned int D.24212;
  int D.24215;
  int D.24217;
  char * D.24222;
  _Bool iftmp.30;
  long unsigned int D.24225;
  int D.24228;
  int D.24230;
  int D.24234;
  _Bool iftmp.31;
  long unsigned int D.24241;
  int D.24244;
  int D.24246;
  int D.24252;
  int D.24258;
  _Bool iftmp.32;
  long unsigned int D.24263;
  int D.24266;
  int D.24268;
  int D.24271;
  _Bool iftmp.33;
  long unsigned int D.24276;
  int D.24279;
  int D.24281;
  char * D.24284;
  int D.24286;
  _Bool iftmp.34;
  long unsigned int D.24291;
  int D.24294;
  int D.24296;
  int D.24299;
  int D.24303;
  int D.24307;
  int D.24311;
  int D.24315;
  int D.24319;
  int D.24324;
  int D.24328;
  int D.24332;
  _Bool iftmp.35;
  long unsigned int D.24337;
  int D.24340;
  int D.24342;
  char * D.24345;
  int D.24346;
  int D.24349;
  int D.24350;
  int D.24353;
  int D.24356;
  int D.24360;
  int D.24364;
  const gchar * D.24370;
  int mono_compile_aot.36;
  struct MonoTraceSpec * D.24382;
  struct MonoTraceSpec * mono_jit_trace_calls.37;
  int enable_debugging.38;
  struct MonoDomain * domain.39;
  struct MonoDomain * domain.40;
  void * * D.24395;
  long unsigned int D.24396;
  long unsigned int D.24397;
  void * * D.24398;
  void * D.24399;
  unsigned int D.24402;
  unsigned int i.41;
  int D.24404;
  <unnamed type> open_status.42;
  const char * D.24424;
  const char * iftmp.43;
  struct MonoImage * D.24442;
  short unsigned int D.24450;
  int D.24451;
  int D.24452;
  short unsigned int D.24454;
  int D.24455;
  int D.24456;
  struct MonoDomain * D.24457;
  struct MonoDomain * D.24458;
  unsigned int D.24459;
  unsigned int D.24462;
  unsigned int D.24463;
  struct FILE * mini_stats_fd.44;
  char * D.24472;
  char D.24473;
  unsigned int i.45;
  struct MonoDomain * D.24477;
  struct MonoDomain * D.24486;
  struct MonoDomain * D.24488;
  struct MainThreadArgs main_args;
  struct MonoAssembly * assembly;
  struct MonoMethodDesc * desc;
  struct MonoMethod * method;
  struct MonoCompile * cfg;
  struct MonoDomain * domain;
  MonoImageOpenStatus open_status;
  const char * aname;
  const char * mname;
  char * config_file;
  int i;
  int count;
  guint32 opt;
  guint32 action;
  guint32 recompilation_times;
  MonoGraphOptions mono_graph_options;
  int mini_verbose;
  gboolean enable_profile;
  char * trace_options;
  char * profile_options;
  char * aot_options;
  char * forced_version;
  struct GPtrArray * agents;
  char * attach_options;

  try
    {
      mname = 0B;
      config_file = 0B;
      count = 1;
      action = 4;
      recompilation_times = 1;
      mono_graph_options = 0;
      mini_verbose = 0;
      enable_profile = 0;
      trace_options = 0B;
      profile_options = 0B;
      aot_options = 0B;
      forced_version = 0B;
      agents = 0B;
      attach_options = 0B;
      setlocale (6, "");
      D.23963 = monoeg_g_getenv ("MONO_NO_SMP");
      if (D.23963 != 0B) goto <D.23964>; else goto <D.23965>;
      <D.23964>:
      mono_set_use_smp (0);
      <D.23965>:
      if (0 != 0) goto <D.23966>; else goto <D.23967>;
      <D.23966>:
      if (0 != 0) goto <D.23968>; else goto <D.23969>;
      <D.23968>:
      monoeg_g_log (0B, 4, "No vtable supported in g_thread_init");
      <D.23709>:
      goto <D.23709>;
      <D.23969>:
      <D.23967>:
      monoeg_g_log_set_always_fatal (4);
      monoeg_g_log_set_fatal_mask (0B, 4);
      opt = parse_optimizations (0B);
      i = 1;
      goto <D.23719>;
      <D.23718>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.23974 = *D.23973;
      if (D.23974 != 45) goto <D.23710>; else goto <D.23975>;
      <D.23975>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.23976 = strcmp (D.23973, "--regression");
      if (D.23976 == 0) goto <D.23977>; else goto <D.23978>;
      <D.23977>:
      action = 1;
      goto <D.23979>;
      <D.23978>:
      D.23981 = __strlen_g ("--single-method=");
      if (D.23981 <= 15) goto <D.23982>; else goto <D.23983>;
      <D.23982>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.23984 = strcmp (D.23973, "--single-method=");
      iftmp.16 = D.23984 == 0;
      goto <D.23985>;
      <D.23983>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.23986 = strncmp (D.23973, "--single-method=", 16);
      iftmp.16 = D.23986 == 0;
      <D.23985>:
      if (iftmp.16 != 0) goto <D.23987>; else goto <D.23988>;
      <D.23987>:
      {
        char * full_opts;

        D.23970 = (long unsigned int) i;
        D.23971 = D.23970 * 8;
        D.23972 = argv + D.23971;
        D.23973 = *D.23972;
        D.23989 = D.23973 + 16;
        full_opts = monoeg_g_strdup_printf ("-all,%s", D.23989);
        action = 2;
        D.23990 = parse_optimizations (full_opts);
        mono_single_method_regression_opt = D.23990;
        monoeg_g_free (full_opts);
      }
      goto <D.23991>;
      <D.23988>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.23995 = strcmp (D.23973, "--verbose");
      if (D.23995 == 0) goto <D.23992>; else goto <D.23996>;
      <D.23996>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.23997 = strcmp (D.23973, "-v");
      if (D.23997 == 0) goto <D.23992>; else goto <D.23993>;
      <D.23992>:
      mini_verbose = mini_verbose + 1;
      goto <D.23994>;
      <D.23993>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24000 = strcmp (D.23973, "--version");
      if (D.24000 == 0) goto <D.23998>; else goto <D.24001>;
      <D.24001>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24002 = strcmp (D.23973, "-V");
      if (D.24002 == 0) goto <D.23998>; else goto <D.23999>;
      <D.23998>:
      {
        char * build;
        char * gc_descr;

        build = mono_get_runtime_build_info ();
        monoeg_g_print ("Mono JIT compiler version %s\nCopyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com\n", build);
        monoeg_g_free (build);
        monoeg_g_print (&info);
        gc_descr = mono_gc_get_description ();
        monoeg_g_print ("\tGC:            %s\n", gc_descr);
        monoeg_g_free (gc_descr);
        if (mini_verbose != 0) goto <D.24003>; else goto <D.24004>;
        <D.24003>:
        {
          const char * cerror;
          const char * clibpath;

          mono_init ("mono");
          cerror = mono_check_corlib_version ();
          D.24006 = mono_defaults.corlib;
          if (D.24006 != 0B) goto <D.24007>; else goto <D.24008>;
          <D.24007>:
          D.24006 = mono_defaults.corlib;
          iftmp.17 = mono_image_get_filename (D.24006);
          goto <D.24009>;
          <D.24008>:
          iftmp.17 = "unknown";
          <D.24009>:
          clibpath = iftmp.17;
          if (cerror != 0B) goto <D.24010>; else goto <D.24011>;
          <D.24010>:
          monoeg_g_print ("The currently installed mscorlib doesn\'t match this runtime version.\n");
          monoeg_g_print ("The error is: %s\n", cerror);
          monoeg_g_print ("mscorlib.dll loaded at: %s\n", clibpath);
          D.24012 = 1;
          return D.24012;
          <D.24011>:
        }
        <D.24004>:
        D.24012 = 0;
        return D.24012;
      }
      <D.23999>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24015 = strcmp (D.23973, "--help");
      if (D.24015 == 0) goto <D.24013>; else goto <D.24016>;
      <D.24016>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24017 = strcmp (D.23973, "-h");
      if (D.24017 == 0) goto <D.24013>; else goto <D.24014>;
      <D.24013>:
      mini_usage ();
      D.24012 = 0;
      return D.24012;
      <D.24014>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24018 = strcmp (D.23973, "--help-trace");
      if (D.24018 == 0) goto <D.24019>; else goto <D.24020>;
      <D.24019>:
      mini_trace_usage ();
      D.24012 = 0;
      return D.24012;
      <D.24020>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24021 = strcmp (D.23973, "--help-devel");
      if (D.24021 == 0) goto <D.24022>; else goto <D.24023>;
      <D.24022>:
      mini_usage_jitdeveloper ();
      D.24012 = 0;
      return D.24012;
      <D.24023>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24024 = strcmp (D.23973, "--help-debug");
      if (D.24024 == 0) goto <D.24025>; else goto <D.24026>;
      <D.24025>:
      mini_debug_usage ();
      D.24012 = 0;
      return D.24012;
      <D.24026>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24027 = strcmp (D.23973, "--list-opt");
      if (D.24027 == 0) goto <D.24028>; else goto <D.24029>;
      <D.24028>:
      mini_usage_list_opt ();
      D.24012 = 0;
      return D.24012;
      <D.24029>:
      D.24031 = __strlen_g ("--statfile");
      if (D.24031 <= 9) goto <D.24032>; else goto <D.24033>;
      <D.24032>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24034 = strcmp (D.23973, "--statfile");
      iftmp.18 = D.24034 == 0;
      goto <D.24035>;
      <D.24033>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24036 = strncmp (D.23973, "--statfile", 10);
      iftmp.18 = D.24036 == 0;
      <D.24035>:
      if (iftmp.18 != 0) goto <D.24037>; else goto <D.24038>;
      <D.24037>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24040>; else goto <D.24041>;
      <D.24040>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --statfile requires a filename argument\n");
      D.24012 = 1;
      return D.24012;
      <D.24041>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24043 = fopen (D.23973, "w+");
      mini_stats_fd = D.24043;
      goto <D.24044>;
      <D.24038>:
      D.24046 = __strlen_g ("--optimize=");
      if (D.24046 <= 10) goto <D.24047>; else goto <D.24048>;
      <D.24047>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24049 = strcmp (D.23973, "--optimize=");
      iftmp.20 = D.24049 == 0;
      goto <D.24050>;
      <D.24048>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24051 = strncmp (D.23973, "--optimize=", 11);
      iftmp.20 = D.24051 == 0;
      <D.24050>:
      if (iftmp.20 != 0) goto <D.24052>; else goto <D.24053>;
      <D.24052>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      opt = parse_optimizations (D.24054);
      goto <D.24055>;
      <D.24053>:
      D.24057 = __strlen_g ("-O=");
      if (D.24057 <= 2) goto <D.24058>; else goto <D.24059>;
      <D.24058>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24060 = strcmp (D.23973, "-O=");
      iftmp.21 = D.24060 == 0;
      goto <D.24061>;
      <D.24059>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24062 = strncmp (D.23973, "-O=", 3);
      iftmp.21 = D.24062 == 0;
      <D.24061>:
      if (iftmp.21 != 0) goto <D.24063>; else goto <D.24064>;
      <D.24063>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24065 = D.23973 + 3;
      opt = parse_optimizations (D.24065);
      goto <D.24066>;
      <D.24064>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24067 = strcmp (D.23973, "--gc=sgen");
      if (D.24067 == 0) goto <D.24068>; else goto <D.24069>;
      <D.24068>:
      switch_gc (argv, "sgen");
      goto <D.24070>;
      <D.24069>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24071 = strcmp (D.23973, "--gc=boehm");
      if (D.24071 == 0) goto <D.24072>; else goto <D.24073>;
      <D.24072>:
      switch_gc (argv, "boehm");
      goto <D.24074>;
      <D.24073>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24075 = strcmp (D.23973, "--config");
      if (D.24075 == 0) goto <D.24076>; else goto <D.24077>;
      <D.24076>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24078>; else goto <D.24079>;
      <D.24078>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --config requires a filename argument\n");
      D.24012 = 1;
      return D.24012;
      <D.24079>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      config_file = *D.23972;
      goto <D.24080>;
      <D.24077>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24081 = strcmp (D.23973, "--ncompile");
      if (D.24081 == 0) goto <D.24082>; else goto <D.24083>;
      <D.24082>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24084>; else goto <D.24085>;
      <D.24084>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --ncompile requires an argument\n");
      D.24012 = 1;
      return D.24012;
      <D.24085>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      count = atoi (D.23973);
      action = 0;
      goto <D.24086>;
      <D.24083>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24087 = strcmp (D.23973, "--trace");
      if (D.24087 == 0) goto <D.24088>; else goto <D.24089>;
      <D.24088>:
      trace_options = "";
      goto <D.24090>;
      <D.24089>:
      D.24092 = __strlen_g ("--trace=");
      if (D.24092 <= 7) goto <D.24093>; else goto <D.24094>;
      <D.24093>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24095 = strcmp (D.23973, "--trace=");
      iftmp.22 = D.24095 == 0;
      goto <D.24096>;
      <D.24094>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24097 = strncmp (D.23973, "--trace=", 8);
      iftmp.22 = D.24097 == 0;
      <D.24096>:
      if (iftmp.22 != 0) goto <D.24098>; else goto <D.24099>;
      <D.24098>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      trace_options = D.23973 + 8;
      goto <D.24100>;
      <D.24099>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24101 = strcmp (D.23973, "--breakonex");
      if (D.24101 == 0) goto <D.24102>; else goto <D.24103>;
      <D.24102>:
      {
        struct MonoDebugOptions * opt;

        opt = mini_get_debug_options ();
        opt->break_on_exc = 1;
      }
      goto <D.24104>;
      <D.24103>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24105 = strcmp (D.23973, "--break");
      if (D.24105 == 0) goto <D.24106>; else goto <D.24107>;
      <D.24106>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24108>; else goto <D.24109>;
      <D.24108>:
      stderr.19 = stderr;
      fprintf (stderr.19, "Missing method name in --break command line option\n");
      D.24012 = 1;
      return D.24012;
      <D.24109>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24110 = mono_debugger_insert_breakpoint (D.23973, 0);
      if (D.24110 == 0) goto <D.24111>; else goto <D.24112>;
      <D.24111>:
      stderr.19 = stderr;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      fprintf (stderr.19, "Error: invalid method name \'%s\'\n", D.23973);
      <D.24112>:
      goto <D.24113>;
      <D.24107>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24114 = strcmp (D.23973, "--break-at-bb");
      if (D.24114 == 0) goto <D.24115>; else goto <D.24116>;
      <D.24115>:
      D.24117 = i + 2;
      if (D.24117 >= argc) goto <D.24118>; else goto <D.24119>;
      <D.24118>:
      stderr.19 = stderr;
      fprintf (stderr.19, "Missing method name or bb num in --break-at-bb command line option.");
      D.24012 = 1;
      return D.24012;
      <D.24119>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24120 = mono_method_desc_new (D.23973, 1);
      mono_break_at_bb_method = D.24120;
      mono_break_at_bb_method.23 = mono_break_at_bb_method;
      if (mono_break_at_bb_method.23 == 0B) goto <D.24122>; else goto <D.24123>;
      <D.24122>:
      stderr.19 = stderr;
      fprintf (stderr.19, "Method name is in a bad format in --break-at-bb command line option.");
      D.24012 = 1;
      return D.24012;
      <D.24123>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24124 = atoi (D.23973);
      mono_break_at_bb_bb_num = D.24124;
      goto <D.24125>;
      <D.24116>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24126 = strcmp (D.23973, "--inject-async-exc");
      if (D.24126 == 0) goto <D.24127>; else goto <D.24128>;
      <D.24127>:
      D.24117 = i + 2;
      if (D.24117 >= argc) goto <D.24129>; else goto <D.24130>;
      <D.24129>:
      stderr.19 = stderr;
      fprintf (stderr.19, "Missing method name or position in --inject-async-exc command line option\n");
      D.24012 = 1;
      return D.24012;
      <D.24130>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24131 = mono_method_desc_new (D.23973, 1);
      mono_inject_async_exc_method = D.24131;
      mono_inject_async_exc_method.24 = mono_inject_async_exc_method;
      if (mono_inject_async_exc_method.24 == 0B) goto <D.24133>; else goto <D.24134>;
      <D.24133>:
      stderr.19 = stderr;
      fprintf (stderr.19, "Method name is in a bad format in --inject-async-exc command line option\n");
      D.24012 = 1;
      return D.24012;
      <D.24134>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24135 = atoi (D.23973);
      mono_inject_async_exc_pos = D.24135;
      goto <D.24136>;
      <D.24128>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24137 = strcmp (D.23973, "--verify-all");
      if (D.24137 == 0) goto <D.24138>; else goto <D.24139>;
      <D.24138>:
      mono_verifier_enable_verify_all ();
      goto <D.24140>;
      <D.24139>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24141 = strcmp (D.23973, "--full-aot");
      if (D.24141 == 0) goto <D.24142>; else goto <D.24143>;
      <D.24142>:
      mono_aot_only = 1;
      goto <D.24144>;
      <D.24143>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24145 = strcmp (D.23973, "--print-vtable");
      if (D.24145 == 0) goto <D.24146>; else goto <D.24147>;
      <D.24146>:
      mono_print_vtable = 1;
      goto <D.24148>;
      <D.24147>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24149 = strcmp (D.23973, "--stats");
      if (D.24149 == 0) goto <D.24150>; else goto <D.24151>;
      <D.24150>:
      mono_counters_enable (-1);
      mono_stats.enabled = 1;
      mono_jit_stats.enabled = 1;
      goto <D.24152>;
      <D.24151>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24153 = strcmp (D.23973, "--aot");
      if (D.24153 == 0) goto <D.24154>; else goto <D.24155>;
      <D.24154>:
      stderr.19 = stderr;
      fprintf (stderr.19, "AOT compilation is not supported on this platform.\n");
      exit (1);
      mono_compile_aot = 1;
      goto <D.24156>;
      <D.24155>:
      D.24158 = __strlen_g ("--aot=");
      if (D.24158 <= 5) goto <D.24159>; else goto <D.24160>;
      <D.24159>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24161 = strcmp (D.23973, "--aot=");
      iftmp.25 = D.24161 == 0;
      goto <D.24162>;
      <D.24160>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24163 = strncmp (D.23973, "--aot=", 6);
      iftmp.25 = D.24163 == 0;
      <D.24162>:
      if (iftmp.25 != 0) goto <D.24164>; else goto <D.24165>;
      <D.24164>:
      stderr.19 = stderr;
      fprintf (stderr.19, "AOT compilation is not supported on this platform.\n");
      exit (1);
      mono_compile_aot = 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      aot_options = D.23973 + 6;
      goto <D.24166>;
      <D.24165>:
      D.24168 = __strlen_g ("--compile-all=");
      if (D.24168 <= 13) goto <D.24169>; else goto <D.24170>;
      <D.24169>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24171 = strcmp (D.23973, "--compile-all=");
      iftmp.26 = D.24171 == 0;
      goto <D.24172>;
      <D.24170>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24173 = strncmp (D.23973, "--compile-all=", 14);
      iftmp.26 = D.24173 == 0;
      <D.24172>:
      if (iftmp.26 != 0) goto <D.24174>; else goto <D.24175>;
      <D.24174>:
      action = 3;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24176 = D.23973 + 14;
      D.24177 = atoi (D.24176);
      recompilation_times = (guint32) D.24177;
      goto <D.24178>;
      <D.24175>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24179 = strcmp (D.23973, "--compile-all");
      if (D.24179 == 0) goto <D.24180>; else goto <D.24181>;
      <D.24180>:
      action = 3;
      goto <D.24182>;
      <D.24181>:
      D.24184 = __strlen_g ("--runtime=");
      if (D.24184 <= 9) goto <D.24185>; else goto <D.24186>;
      <D.24185>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24187 = strcmp (D.23973, "--runtime=");
      iftmp.27 = D.24187 == 0;
      goto <D.24188>;
      <D.24186>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24189 = strncmp (D.23973, "--runtime=", 10);
      iftmp.27 = D.24189 == 0;
      <D.24188>:
      if (iftmp.27 != 0) goto <D.24190>; else goto <D.24191>;
      <D.24190>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      forced_version = D.23973 + 10;
      goto <D.24192>;
      <D.24191>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24193 = strcmp (D.23973, "--jitmap");
      if (D.24193 == 0) goto <D.24194>; else goto <D.24195>;
      <D.24194>:
      mono_enable_jit_map ();
      goto <D.24196>;
      <D.24195>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24197 = strcmp (D.23973, "--profile");
      if (D.24197 == 0) goto <D.24198>; else goto <D.24199>;
      <D.24198>:
      enable_profile = 1;
      profile_options = 0B;
      goto <D.24200>;
      <D.24199>:
      D.24202 = __strlen_g ("--profile=");
      if (D.24202 <= 9) goto <D.24203>; else goto <D.24204>;
      <D.24203>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24205 = strcmp (D.23973, "--profile=");
      iftmp.28 = D.24205 == 0;
      goto <D.24206>;
      <D.24204>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24207 = strncmp (D.23973, "--profile=", 10);
      iftmp.28 = D.24207 == 0;
      <D.24206>:
      if (iftmp.28 != 0) goto <D.24208>; else goto <D.24209>;
      <D.24208>:
      enable_profile = 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      profile_options = D.23973 + 10;
      goto <D.24210>;
      <D.24209>:
      D.24212 = __strlen_g ("--agent=");
      if (D.24212 <= 7) goto <D.24213>; else goto <D.24214>;
      <D.24213>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24215 = strcmp (D.23973, "--agent=");
      iftmp.29 = D.24215 == 0;
      goto <D.24216>;
      <D.24214>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24217 = strncmp (D.23973, "--agent=", 8);
      iftmp.29 = D.24217 == 0;
      <D.24216>:
      if (iftmp.29 != 0) goto <D.24218>; else goto <D.24219>;
      <D.24218>:
      if (agents == 0B) goto <D.24220>; else goto <D.24221>;
      <D.24220>:
      agents = monoeg_g_ptr_array_new ();
      <D.24221>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24222 = D.23973 + 8;
      monoeg_g_ptr_array_add (agents, D.24222);
      goto <D.24223>;
      <D.24219>:
      D.24225 = __strlen_g ("--attach=");
      if (D.24225 <= 8) goto <D.24226>; else goto <D.24227>;
      <D.24226>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24228 = strcmp (D.23973, "--attach=");
      iftmp.30 = D.24228 == 0;
      goto <D.24229>;
      <D.24227>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24230 = strncmp (D.23973, "--attach=", 9);
      iftmp.30 = D.24230 == 0;
      <D.24229>:
      if (iftmp.30 != 0) goto <D.24231>; else goto <D.24232>;
      <D.24231>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      attach_options = D.23973 + 9;
      goto <D.24233>;
      <D.24232>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24234 = strcmp (D.23973, "--compile");
      if (D.24234 == 0) goto <D.24235>; else goto <D.24236>;
      <D.24235>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24237>; else goto <D.24238>;
      <D.24237>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --compile option requires a method name argument\n");
      D.24012 = 1;
      return D.24012;
      <D.24238>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      mname = *D.23972;
      action = 0;
      goto <D.24239>;
      <D.24236>:
      D.24241 = __strlen_g ("--graph=");
      if (D.24241 <= 7) goto <D.24242>; else goto <D.24243>;
      <D.24242>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24244 = strcmp (D.23973, "--graph=");
      iftmp.31 = D.24244 == 0;
      goto <D.24245>;
      <D.24243>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24246 = strncmp (D.23973, "--graph=", 8);
      iftmp.31 = D.24246 == 0;
      <D.24245>:
      if (iftmp.31 != 0) goto <D.24247>; else goto <D.24248>;
      <D.24247>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24249>; else goto <D.24250>;
      <D.24249>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --graph option requires a method name argument\n");
      D.24012 = 1;
      return D.24012;
      <D.24250>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24222 = D.23973 + 8;
      mono_graph_options = mono_parse_graph_options (D.24222);
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      mname = *D.23972;
      action = 5;
      goto <D.24251>;
      <D.24248>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24252 = strcmp (D.23973, "--graph");
      if (D.24252 == 0) goto <D.24253>; else goto <D.24254>;
      <D.24253>:
      D.24039 = i + 1;
      if (D.24039 >= argc) goto <D.24255>; else goto <D.24256>;
      <D.24255>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --graph option requires a method name argument\n");
      D.24012 = 1;
      return D.24012;
      <D.24256>:
      i = i + 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      mname = *D.23972;
      mono_graph_options = 1;
      action = 5;
      goto <D.24257>;
      <D.24254>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24258 = strcmp (D.23973, "--debug");
      if (D.24258 == 0) goto <D.24259>; else goto <D.24260>;
      <D.24259>:
      enable_debugging = 1;
      goto <D.24261>;
      <D.24260>:
      D.24263 = __strlen_g ("--debug=");
      if (D.24263 <= 7) goto <D.24264>; else goto <D.24265>;
      <D.24264>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24266 = strcmp (D.23973, "--debug=");
      iftmp.32 = D.24266 == 0;
      goto <D.24267>;
      <D.24265>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24268 = strncmp (D.23973, "--debug=", 8);
      iftmp.32 = D.24268 == 0;
      <D.24267>:
      if (iftmp.32 != 0) goto <D.24269>; else goto <D.24270>;
      <D.24269>:
      enable_debugging = 1;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24222 = D.23973 + 8;
      D.24271 = parse_debug_options (D.24222);
      if (D.24271 == 0) goto <D.24272>; else goto <D.24273>;
      <D.24272>:
      D.24012 = 1;
      return D.24012;
      <D.24273>:
      goto <D.24274>;
      <D.24270>:
      D.24276 = __strlen_g ("--debugger-agent=");
      if (D.24276 <= 16) goto <D.24277>; else goto <D.24278>;
      <D.24277>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24279 = strcmp (D.23973, "--debugger-agent=");
      iftmp.33 = D.24279 == 0;
      goto <D.24280>;
      <D.24278>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24281 = strncmp (D.23973, "--debugger-agent=", 17);
      iftmp.33 = D.24281 == 0;
      <D.24280>:
      if (iftmp.33 != 0) goto <D.24282>; else goto <D.24283>;
      <D.24282>:
      {
        struct MonoDebugOptions * opt;

        opt = mini_get_debug_options ();
        D.23970 = (long unsigned int) i;
        D.23971 = D.23970 * 8;
        D.23972 = argv + D.23971;
        D.23973 = *D.23972;
        D.24284 = D.23973 + 17;
        mono_debugger_agent_parse_options (D.24284);
        opt->mdb_optimizations = 1;
        enable_debugging = 1;
      }
      goto <D.24285>;
      <D.24283>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24286 = strcmp (D.23973, "--security");
      if (D.24286 == 0) goto <D.24287>; else goto <D.24288>;
      <D.24287>:
      mono_verifier_set_mode (2);
      mono_security_set_mode (2);
      mono_activate_security_manager ();
      goto <D.24289>;
      <D.24288>:
      D.24291 = __strlen_g ("--security=");
      if (D.24291 <= 10) goto <D.24292>; else goto <D.24293>;
      <D.24292>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24294 = strcmp (D.23973, "--security=");
      iftmp.34 = D.24294 == 0;
      goto <D.24295>;
      <D.24293>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24296 = strncmp (D.23973, "--security=", 11);
      iftmp.34 = D.24296 == 0;
      <D.24295>:
      if (iftmp.34 != 0) goto <D.24297>; else goto <D.24298>;
      <D.24297>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      D.24299 = strcmp (D.24054, "temporary-smcs-hack");
      if (D.24299 == 0) goto <D.24300>; else goto <D.24301>;
      <D.24300>:
      mono_security_set_mode (3);
      goto <D.24302>;
      <D.24301>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      D.24303 = strcmp (D.24054, "core-clr");
      if (D.24303 == 0) goto <D.24304>; else goto <D.24305>;
      <D.24304>:
      mono_verifier_set_mode (2);
      mono_security_set_mode (1);
      goto <D.24306>;
      <D.24305>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      D.24307 = strcmp (D.24054, "core-clr-test");
      if (D.24307 == 0) goto <D.24308>; else goto <D.24309>;
      <D.24308>:
      mono_security_set_mode (1);
      mono_security_core_clr_test = 1;
      goto <D.24310>;
      <D.24309>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      D.24311 = strcmp (D.24054, "cas");
      if (D.24311 == 0) goto <D.24312>; else goto <D.24313>;
      <D.24312>:
      mono_verifier_set_mode (2);
      mono_security_set_mode (2);
      mono_activate_security_manager ();
      goto <D.24314>;
      <D.24313>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      D.24315 = strcmp (D.24054, "validil");
      if (D.24315 == 0) goto <D.24316>; else goto <D.24317>;
      <D.24316>:
      mono_verifier_set_mode (1);
      goto <D.24318>;
      <D.24317>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24054 = D.23973 + 11;
      D.24319 = strcmp (D.24054, "verifiable");
      if (D.24319 == 0) goto <D.24320>; else goto <D.24321>;
      <D.24320>:
      mono_verifier_set_mode (2);
      goto <D.24322>;
      <D.24321>:
      stderr.19 = stderr;
      fprintf (stderr.19, "error: --security= option has invalid argument (cas, core-clr, verifiable or validil)\n");
      D.24012 = 1;
      return D.24012;
      <D.24322>:
      <D.24318>:
      <D.24314>:
      <D.24310>:
      <D.24306>:
      <D.24302>:
      goto <D.24323>;
      <D.24298>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24324 = strcmp (D.23973, "--desktop");
      if (D.24324 == 0) goto <D.24325>; else goto <D.24326>;
      <D.24325>:
      mono_gc_set_desktop_mode ();
      goto <D.24327>;
      <D.24326>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24328 = strcmp (D.23973, "--server");
      if (D.24328 == 0) goto <D.24329>; else goto <D.24330>;
      <D.24329>:
      mono_config_set_server_mode (1);
      goto <D.24331>;
      <D.24330>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24332 = strcmp (D.23973, "--inside-mdb");
      if (D.24332 == 0) goto <D.24333>; else goto <D.24334>;
      <D.24333>:
      action = 6;
      goto <D.24335>;
      <D.24334>:
      D.24337 = __strlen_g ("--wapi=");
      if (D.24337 <= 6) goto <D.24338>; else goto <D.24339>;
      <D.24338>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24340 = strcmp (D.23973, "--wapi=");
      iftmp.35 = D.24340 == 0;
      goto <D.24341>;
      <D.24339>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24342 = strncmp (D.23973, "--wapi=", 7);
      iftmp.35 = D.24342 == 0;
      <D.24341>:
      if (iftmp.35 != 0) goto <D.24343>; else goto <D.24344>;
      <D.24343>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24345 = D.23973 + 7;
      D.24346 = strcmp (D.24345, "hps");
      if (D.24346 == 0) goto <D.24347>; else goto <D.24348>;
      <D.24347>:
      D.24349 = argc - i;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.24012 = mini_wapi_hps (D.24349, D.23972);
      return D.24012;
      <D.24348>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24345 = D.23973 + 7;
      D.24350 = strcmp (D.24345, "semdel");
      if (D.24350 == 0) goto <D.24351>; else goto <D.24352>;
      <D.24351>:
      D.24349 = argc - i;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.24012 = mini_wapi_semdel (D.24349, D.23972);
      return D.24012;
      <D.24352>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24345 = D.23973 + 7;
      D.24353 = strcmp (D.24345, "seminfo");
      if (D.24353 == 0) goto <D.24354>; else goto <D.24355>;
      <D.24354>:
      D.24349 = argc - i;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.24012 = mini_wapi_seminfo (D.24349, D.23972);
      return D.24012;
      <D.24355>:
      stderr.19 = stderr;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      fprintf (stderr.19, "Invalid --wapi suboption: \'%s\'\n", D.23973);
      D.24012 = 1;
      return D.24012;
      <D.24344>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24356 = strcmp (D.23973, "--no-x86-stack-align");
      if (D.24356 == 0) goto <D.24357>; else goto <D.24358>;
      <D.24357>:
      mono_do_x86_stack_align = 0;
      goto <D.24359>;
      <D.24358>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24360 = strcmp (D.23973, "--llvm");
      if (D.24360 == 0) goto <D.24361>; else goto <D.24362>;
      <D.24361>:
      stderr.19 = stderr;
      fprintf (stderr.19, "Mono Warning: --llvm not supported on this platform.\n");
      goto <D.24363>;
      <D.24362>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      D.24364 = strcmp (D.23973, "--nollvm");
      if (D.24364 == 0) goto <D.24365>; else goto <D.24366>;
      <D.24365>:
      mono_use_llvm = 0;
      goto <D.24367>;
      <D.24366>:
      stderr.19 = stderr;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      fprintf (stderr.19, "Unknown command line option: \'%s\'\n", D.23973);
      D.24012 = 1;
      return D.24012;
      <D.24367>:
      <D.24363>:
      <D.24359>:
      <D.24335>:
      <D.24331>:
      <D.24327>:
      <D.24323>:
      <D.24289>:
      <D.24285>:
      <D.24274>:
      <D.24261>:
      <D.24257>:
      <D.24251>:
      <D.24239>:
      <D.24233>:
      <D.24223>:
      <D.24210>:
      <D.24200>:
      <D.24196>:
      <D.24192>:
      <D.24182>:
      <D.24178>:
      <D.24166>:
      <D.24156>:
      <D.24152>:
      <D.24148>:
      <D.24144>:
      <D.24140>:
      <D.24136>:
      <D.24125>:
      <D.24113>:
      <D.24104>:
      <D.24100>:
      <D.24090>:
      <D.24086>:
      <D.24080>:
      <D.24074>:
      <D.24070>:
      <D.24066>:
      <D.24055>:
      <D.24044>:
      <D.23994>:
      <D.23991>:
      <D.23979>:
      i = i + 1;
      <D.23719>:
      if (i < argc) goto <D.23718>; else goto <D.23710>;
      <D.23710>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      if (D.23973 == 0B) goto <D.24368>; else goto <D.24369>;
      <D.24368>:
      mini_usage ();
      D.24012 = 1;
      return D.24012;
      <D.24369>:
      D.24370 = monoeg_g_getenv ("MONO_XDEBUG");
      if (D.24370 != 0B) goto <D.24371>; else goto <D.24372>;
      <D.24371>:
      enable_debugging = 1;
      <D.24372>:
      mono_compile_aot.36 = mono_compile_aot;
      if (mono_compile_aot.36 != 0) goto <D.24373>; else goto <D.24376>;
      <D.24376>:
      if (action == 4) goto <D.24373>; else goto <D.24377>;
      <D.24377>:
      if (action == 6) goto <D.24373>; else goto <D.24374>;
      <D.24373>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      monoeg_g_set_prgname (D.23973);
      <D.24374>:
      if (enable_profile != 0) goto <D.24378>; else goto <D.24379>;
      <D.24378>:
      mono_profiler_load (profile_options);
      <D.24379>:
      mono_attach_parse_options (attach_options);
      if (trace_options != 0B) goto <D.24380>; else goto <D.24381>;
      <D.24380>:
      D.24382 = mono_trace_parse_options (trace_options);
      mono_jit_trace_calls = D.24382;
      mono_jit_trace_calls.37 = mono_jit_trace_calls;
      if (mono_jit_trace_calls.37 == 0B) goto <D.24384>; else goto <D.24385>;
      <D.24384>:
      exit (1);
      <D.24385>:
      <D.24381>:
      if (action == 6) goto <D.24386>; else goto <D.24387>;
      <D.24386>:
      enable_debugging = 1;
      monoeg_g_print ("The Mono Debugger is no longer supported.\n");
      D.24012 = 1;
      return D.24012;
      <D.24387>:
      enable_debugging.38 = enable_debugging;
      if (enable_debugging.38 != 0) goto <D.24389>; else goto <D.24390>;
      <D.24389>:
      mono_debug_init (1);
      <D.24390>:
      mono_set_defaults (mini_verbose, opt);
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.23973 = *D.23972;
      domain.39 = mini_init (D.23973, forced_version);
      domain = domain.39;
      mono_gc_set_stack_end (&domain);
      if (agents != 0B) goto <D.24392>; else goto <D.24393>;
      <D.24392>:
      {
        int i;

        i = 0;
        goto <D.23723>;
        <D.23722>:
        {
          int res;

          domain.40 = domain;
          D.24395 = agents->pdata;
          D.24396 = (long unsigned int) i;
          D.24397 = D.24396 * 8;
          D.24398 = D.24395 + D.24397;
          D.24399 = *D.24398;
          res = load_agent (domain.40, D.24399);
          if (res != 0) goto <D.24400>; else goto <D.24401>;
          <D.24400>:
          monoeg_g_ptr_array_free (agents, 1);
          domain.40 = domain;
          mini_cleanup (domain.40);
          D.24012 = 1;
          return D.24012;
          <D.24401>:
        }
        i = i + 1;
        <D.23723>:
        D.24402 = agents->len;
        i.41 = (unsigned int) i;
        if (D.24402 > i.41) goto <D.23722>; else goto <D.23724>;
        <D.23724>:
        monoeg_g_ptr_array_free (agents, 1);
      }
      <D.24393>:
      switch (action) <default: <D.23731>, case 0: <D.23727>, case 1: <D.23726>, case 2: <D.23725>, case 3: <D.23729>, case 5: <D.23730>>
      <D.23725>:
      mono_do_single_method_regression = 1;
      <D.23726>:
      D.24349 = argc - i;
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      D.24404 = mini_regression_list (mini_verbose, D.24349, D.23972);
      if (D.24404 != 0) goto <D.24405>; else goto <D.24406>;
      <D.24405>:
      monoeg_g_print ("Regression ERRORS!\n");
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 1;
      return D.24012;
      <D.24406>:
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 0;
      return D.24012;
      <D.23727>:
      D.24349 = argc - i;
      if (D.24349 != 1) goto <D.24407>; else goto <D.24409>;
      <D.24409>:
      if (mname == 0B) goto <D.24407>; else goto <D.24408>;
      <D.24407>:
      monoeg_g_print ("Usage: mini --ncompile num --compile method assembly\n");
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 1;
      return D.24012;
      <D.24408>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      aname = *D.23972;
      goto <D.23728>;
      <D.23729>:
      D.24349 = argc - i;
      if (D.24349 != 1) goto <D.24410>; else goto <D.24411>;
      <D.24410>:
      mini_usage ();
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 1;
      return D.24012;
      <D.24411>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      aname = *D.23972;
      goto <D.23728>;
      <D.23730>:
      D.24349 = argc - i;
      if (D.24349 != 1) goto <D.24412>; else goto <D.24414>;
      <D.24414>:
      if (mname == 0B) goto <D.24412>; else goto <D.24413>;
      <D.24412>:
      mini_usage ();
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 1;
      return D.24012;
      <D.24413>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      aname = *D.23972;
      goto <D.23728>;
      <D.23731>:
      D.24349 = argc - i;
      if (D.24349 <= 0) goto <D.24415>; else goto <D.24416>;
      <D.24415>:
      mini_usage ();
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 1;
      return D.24012;
      <D.24416>:
      D.23970 = (long unsigned int) i;
      D.23971 = D.23970 * 8;
      D.23972 = argv + D.23971;
      aname = *D.23972;
      goto <D.23728>;
      <D.23728>:
      mono_compile_aot.36 = mono_compile_aot;
      if (mono_compile_aot.36 != 0) goto <D.24417>; else goto <D.24419>;
      <D.24419>:
      if (action == 4) goto <D.24417>; else goto <D.24420>;
      <D.24420>:
      if (action == 6) goto <D.24417>; else goto <D.24418>;
      <D.24417>:
      mono_config_parse (config_file);
      <D.24418>:
      assembly = mono_assembly_open (aname, &open_status);
      if (assembly == 0B) goto <D.24421>; else goto <D.24422>;
      <D.24421>:
      stderr.19 = stderr;
      open_status.42 = open_status;
      D.24424 = mono_image_strerror (open_status.42);
      fprintf (stderr.19, "Cannot open assembly \'%s\': %s.\n", aname, D.24424);
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 2;
      return D.24012;
      <D.24422>:
      if (trace_options != 0B) goto <D.24425>; else goto <D.24426>;
      <D.24425>:
      mono_trace_set_assembly (assembly);
      <D.24426>:
      mono_compile_aot.36 = mono_compile_aot;
      if (mono_compile_aot.36 != 0) goto <D.24427>; else goto <D.24429>;
      <D.24429>:
      if (action == 4) goto <D.24427>; else goto <D.24428>;
      <D.24427>:
      {
        const char * error;

        error = mono_check_corlib_version ();
        if (error != 0B) goto <D.24430>; else goto <D.24431>;
        <D.24430>:
        stderr.19 = stderr;
        fprintf (stderr.19, "Corlib not in sync with this runtime: %s\n", error);
        stderr.19 = stderr;
        D.24006 = mono_defaults.corlib;
        if (D.24006 != 0B) goto <D.24433>; else goto <D.24434>;
        <D.24433>:
        D.24006 = mono_defaults.corlib;
        iftmp.43 = mono_image_get_filename (D.24006);
        goto <D.24435>;
        <D.24434>:
        iftmp.43 = "unknown";
        <D.24435>:
        fprintf (stderr.19, "Loaded from: %s\n", iftmp.43);
        stderr.19 = stderr;
        fprintf (stderr.19, "Download a newer corlib or a newer runtime at http://www.go-mono.com/daily.\n");
        exit (1);
        <D.24431>:
        domain.40 = domain;
        main_args.domain = domain.40;
        main_args.file = aname;
        D.24349 = argc - i;
        main_args.argc = D.24349;
        D.23970 = (long unsigned int) i;
        D.23971 = D.23970 * 8;
        D.23972 = argv + D.23971;
        main_args.argv = D.23972;
        main_args.opts = opt;
        main_args.aot_options = aot_options;
        main_thread_handler (&main_args);
        mono_thread_manage ();
        mono_dont_free_global_codeman = 1;
        domain.40 = domain;
        mini_cleanup (domain.40);
        i = mono_environment_exitcode_get ();
        D.24012 = i;
        return D.24012;
      }
      <D.24428>:
      if (action == 3) goto <D.24436>; else goto <D.24437>;
      <D.24436>:
      compile_all_methods (assembly, mini_verbose, opt, recompilation_times);
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 0;
      return D.24012;
      <D.24437>:
      if (action == 6) goto <D.24438>; else goto <D.24439>;
      <D.24438>:
      D.24012 = 1;
      return D.24012;
      <D.24439>:
      desc = mono_method_desc_new (mname, 0);
      if (desc == 0B) goto <D.24440>; else goto <D.24441>;
      <D.24440>:
      monoeg_g_print ("Invalid method name %s\n", mname);
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 3;
      return D.24012;
      <D.24441>:
      D.24442 = mono_assembly_get_image (assembly);
      method = mono_method_desc_search_in_image (desc, D.24442);
      if (method == 0B) goto <D.24443>; else goto <D.24444>;
      <D.24443>:
      monoeg_g_print ("Cannot find method %s\n", mname);
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 3;
      return D.24012;
      <D.24444>:
      if (action == 5) goto <D.24445>; else goto <D.24446>;
      <D.24445>:
      {
        int part;

        part = 0;
        switch (mono_graph_options) <default: <D.23739>, case 2: <D.23734>, case 4: <D.23736>, case 8: <D.23737>, case 16: <D.23738>>
        <D.23734>:
        part = 1;
        opt = opt | 8192;
        goto <D.23735>;
        <D.23736>:
        part = 1;
        goto <D.23735>;
        <D.23737>:
        part = 2;
        goto <D.23735>;
        <D.23738>:
        part = 3;
        goto <D.23735>;
        <D.23739>:
        goto <D.23735>;
        <D.23735>:
        D.24450 = method->iflags;
        D.24451 = (int) D.24450;
        D.24452 = D.24451 & 4096;
        if (D.24452 != 0) goto <D.24447>; else goto <D.24453>;
        <D.24453>:
        D.24454 = method->flags;
        D.24455 = (int) D.24454;
        D.24456 = D.24455 & 8192;
        if (D.24456 != 0) goto <D.24447>; else goto <D.24448>;
        <D.24447>:
        {
          struct MonoMethod * nm;

          nm = mono_marshal_get_native_wrapper (method, 1, 0);
          D.24457 = mono_get_root_domain ();
          cfg = mini_method_compile (nm, opt, D.24457, 0, part);
        }
        goto <D.24449>;
        <D.24448>:
        D.24458 = mono_get_root_domain ();
        cfg = mini_method_compile (method, opt, D.24458, 0, part);
        <D.24449>:
        D.24459 = mono_graph_options & 8;
        if (D.24459 != 0) goto <D.24460>; else goto <D.24461>;
        <D.24460>:
        D.24462 = cfg->comp_done;
        D.24463 = D.24462 & 32;
        if (D.24463 == 0) goto <D.24464>; else goto <D.24465>;
        <D.24464>:
        monoeg_g_log (0B, 16, "no SSA info available (use -O=deadce)");
        D.24012 = 1;
        return D.24012;
        <D.24465>:
        <D.24461>:
        mono_draw_graph (cfg, mono_graph_options);
        mono_destroy_compile (cfg);
      }
      goto <D.24466>;
      <D.24446>:
      if (action == 0) goto <D.24467>; else goto <D.24468>;
      <D.24467>:
      mini_stats_fd.44 = mini_stats_fd;
      if (mini_stats_fd.44 != 0B) goto <D.24470>; else goto <D.24471>;
      <D.24470>:
      {
        const char * n;
        double no_opt_time;
        struct GTimer * timer;

        no_opt_time = 0.0;
        timer = monoeg_g_timer_new ();
        mini_stats_fd.44 = mini_stats_fd;
        D.24472 = mono_method_full_name (method, 1);
        fprintf (mini_stats_fd.44, "$stattitle = \'Compilations times for %s\';\n", D.24472);
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "@data = (\n");
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "[");
        i = 0;
        goto <D.23745>;
        <D.23744>:
        opt = opt_sets[i];
        n = opt_descr (opt);
        D.24473 = *n;
        if (D.24473 == 0) goto <D.24474>; else goto <D.24475>;
        <D.24474>:
        n = "none";
        <D.24475>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "\"%s\",", n);
        i = i + 1;
        <D.23745>:
        i.45 = (unsigned int) i;
        if (i.45 <= 23) goto <D.23744>; else goto <D.23746>;
        <D.23746>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "],\n[");
        i = 0;
        goto <D.23753>;
        <D.23752>:
        {
          int j;
          double elapsed;

          opt = opt_sets[i];
          monoeg_g_timer_start (timer);
          j = 0;
          goto <D.23750>;
          <D.23749>:
          D.24477 = mono_get_root_domain ();
          cfg = mini_method_compile (method, opt, D.24477, 0, 0);
          mono_destroy_compile (cfg);
          j = j + 1;
          <D.23750>:
          if (j < count) goto <D.23749>; else goto <D.23751>;
          <D.23751>:
          monoeg_g_timer_stop (timer);
          elapsed = monoeg_g_timer_elapsed (timer, 0B);
          if (opt == 0) goto <D.24478>; else goto <D.24479>;
          <D.24478>:
          no_opt_time = elapsed;
          <D.24479>:
          mini_stats_fd.44 = mini_stats_fd;
          fprintf (mini_stats_fd.44, "%f, ", elapsed);
        }
        i = i + 1;
        <D.23753>:
        i.45 = (unsigned int) i;
        if (i.45 <= 23) goto <D.23752>; else goto <D.23754>;
        <D.23754>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "]");
        if (no_opt_time > 0.0) goto <D.24480>; else goto <D.24481>;
        <D.24480>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, ", \n[");
        i = 0;
        goto <D.23756>;
        <D.23755>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "%f,", no_opt_time);
        i = i + 1;
        <D.23756>:
        i.45 = (unsigned int) i;
        if (i.45 <= 23) goto <D.23755>; else goto <D.23757>;
        <D.23757>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, "]");
        <D.24481>:
        mini_stats_fd.44 = mini_stats_fd;
        fprintf (mini_stats_fd.44, ");\n");
      }
      goto <D.24482>;
      <D.24471>:
      i = 0;
      goto <D.23759>;
      <D.23758>:
      D.24450 = method->iflags;
      D.24451 = (int) D.24450;
      D.24452 = D.24451 & 4096;
      if (D.24452 != 0) goto <D.24483>; else goto <D.24485>;
      <D.24485>:
      D.24454 = method->flags;
      D.24455 = (int) D.24454;
      D.24456 = D.24455 & 8192;
      if (D.24456 != 0) goto <D.24483>; else goto <D.24484>;
      <D.24483>:
      method = mono_marshal_get_native_wrapper (method, 1, 0);
      <D.24484>:
      D.24486 = mono_get_root_domain ();
      cfg = mini_method_compile (method, opt, D.24486, 0, 0);
      mono_destroy_compile (cfg);
      i = i + 1;
      <D.23759>:
      if (i < count) goto <D.23758>; else goto <D.23760>;
      <D.23760>:
      <D.24482>:
      goto <D.24487>;
      <D.24468>:
      D.24488 = mono_get_root_domain ();
      cfg = mini_method_compile (method, opt, D.24488, 0, 0);
      mono_destroy_compile (cfg);
      <D.24487>:
      <D.24466>:
      domain.40 = domain;
      mini_cleanup (domain.40);
      D.24012 = 0;
      return D.24012;
    }
  finally
    {
      main_args = {CLOBBER};
      domain = {CLOBBER};
      open_status = {CLOBBER};
    }
}


mono_set_use_smp (int use_smp)
{
  int D.24494;

  if (use_smp == 0) goto <D.24492>; else goto <D.24493>;
  <D.24492>:
  {
    long unsigned int proc_mask;

    try
      {
        proc_mask = 1;
        D.24494 = getpid ();
        sched_setaffinity (D.24494, 8, &proc_mask);
      }
    finally
      {
        proc_mask = {CLOBBER};
      }
  }
  <D.24493>:
}


mini_trace_usage ()
{
  struct _IO_FILE * stdout.46;

  stdout.46 = stdout;
  fprintf (stdout.46, "Tracing options:\n   --trace[=EXPR]        Trace every call, optional EXPR controls the scope\n\nEXPR is composed of:\n    all                  All assemblies\n    none                 No assemblies\n    program              Entry point assembly\n    assembly             Specifies an assembly\n    wrapper              All wrappers bridging native and managed code\n    M:Type:Method        Specifies a method\n    N:Namespace          Specifies a namespace\n    T:Type               Specifies a type\n    E:Type               Specifies stack traces for an exception type\n    EXPR                 Includes expression\n    -EXPR                Excludes expression\n    EXPR,EXPR            Multiple expressions\n    disabled             Don\'t print any output until toggled via SIGUSR2\n");
}


mini_usage_jitdeveloper ()
{
  struct _IO_FILE * stdout.47;
  const char[6] * D.24497;
  const char[18] * D.24498;
  unsigned int i.48;
  int i;

  stdout.47 = stdout;
  fprintf (stdout.47, "Runtime and JIT debugging options:\n    --breakonex            Inserts a breakpoint on exceptions\n    --break METHOD         Inserts a breakpoint at METHOD entry\n    --break-at-bb METHOD N Inserts a breakpoint in METHOD at BB N\n    --compile METHOD       Just compile METHOD in assembly\n    --compile-all=N        Compiles all the methods in the assembly multiple times (default: 1)\n    --ncompile N           Number of times to compile METHOD (default: 1)\n    --print-vtable         Print the vtable of all used classes\n    --regression           Runs the regression test contained in the assembly\n    --single-method=OPTS   Runs regressions with only one method optimized with OPTS at any time\n    --statfile FILE        Sets the stat file to FILE\n    --stats                Print statistics about the JIT operations\n    --wapi=hps|semdel|seminfo IO-layer maintenance\n    --inject-async-exc METHOD OFFSET Inject an asynchronous exception at METHOD\n    --verify-all           Run the verifier on all assemblies and methods\n    --full-aot             Avoid JITting any code\n    --agent=ASSEMBLY[:ARG] Loads the specific agent assembly and executes its Main method with the given argument before loading the main assembly.\n    --no-x86-stack-align   Don\'t align stack on x86\n\nOther options:\n    --graph[=TYPE] METHOD  Draws a graph of the specified method:\n");
  i = 0;
  goto <D.23637>;
  <D.23636>:
  stdout.47 = stdout;
  D.24497 = &graph_names[i].name;
  D.24498 = &graph_names[i].desc;
  fprintf (stdout.47, "                           %-10s %s\n", D.24497, D.24498);
  i = i + 1;
  <D.23637>:
  i.48 = (unsigned int) i;
  if (i.48 <= 4) goto <D.23636>; else goto <D.23638>;
  <D.23638>:
}


mini_debug_usage ()
{
  struct _IO_FILE * stdout.49;

  stdout.49 = stdout;
  fprintf (stdout.49, "Debugging options:\n   --debug[=OPTIONS]     Enable debugging support, optional OPTIONS is a comma\n                         separated list of options\n\nOPTIONS is composed of:\n    casts                Enable more detailed InvalidCastException messages.\n    mdb-optimizations    Disable some JIT optimizations which are normally\n                         disabled when running inside the debugger.\n                         This is useful if you plan to attach to the running\n                         process with the debugger.\n");
}


mini_usage_list_opt ()
{
  struct _IO_FILE * stdout.50;
  short int D.24502;
  sizetype D.24503;
  const char * D.24504;
  long unsigned int D.24505;
  sizetype D.24506;
  sizetype D.24507;
  const char * D.24508;
  unsigned int i.51;
  int i;

  i = 0;
  goto <D.23644>;
  <D.23643>:
  stdout.50 = stdout;
  D.24502 = opt_names[i];
  D.24503 = (sizetype) D.24502;
  D.24504 = &opstr + D.24503;
  D.24502 = opt_names[i];
  D.24503 = (sizetype) D.24502;
  D.24502 = opt_names[i];
  D.24503 = (sizetype) D.24502;
  D.24504 = &opstr + D.24503;
  D.24505 = __strlen_g (D.24504);
  D.24506 = D.24503 + D.24505;
  D.24507 = D.24506 + 1;
  D.24508 = &opstr + D.24507;
  fprintf (stdout.50, "                           %-10s %s\n", D.24504, D.24508);
  i = i + 1;
  <D.23644>:
  i.51 = (unsigned int) i;
  if (i.51 <= 28) goto <D.23643>; else goto <D.23645>;
  <D.23645>:
}


switch_gc (char * * argv, const char * target_gc)
{
  const char * D.24510;
  int D.24511;
  char * D.24514;
  char * D.24515;
  long unsigned int D.24518;
  long unsigned int D.24519;
  char * D.24521;
  long unsigned int D.24524;
  char * D.24525;
  struct GString * path;

  D.24510 = mono_gc_get_gc_name ();
  D.24511 = strcmp (D.24510, target_gc);
  if (D.24511 == 0) goto <D.24512>; else goto <D.24513>;
  <D.24512>:
  return;
  <D.24513>:
  D.24514 = *argv;
  path = monoeg_g_string_new (D.24514);
  D.24514 = *argv;
  D.24515 = strstr (D.24514, "-sgen");
  if (D.24515 != 0B) goto <D.24516>; else goto <D.24517>;
  <D.24516>:
  D.24518 = path->len;
  D.24519 = D.24518 + 18446744073709551611;
  monoeg_g_string_truncate (path, D.24519);
  goto <D.24520>;
  <D.24517>:
  D.24514 = *argv;
  D.24521 = strstr (D.24514, "-boehm");
  if (D.24521 != 0B) goto <D.24522>; else goto <D.24523>;
  <D.24522>:
  D.24518 = path->len;
  D.24524 = D.24518 + 18446744073709551610;
  monoeg_g_string_truncate (path, D.24524);
  <D.24523>:
  <D.24520>:
  monoeg_g_string_append_c (path, 45);
  monoeg_g_string_append (path, target_gc);
  D.24525 = path->str;
  execvp (D.24525, argv);
}


__attribute__((__gnu_inline__, __pure__, __leaf__, __nothrow__))
atoi (const char * __nptr)
{
  int D.24527;
  long int D.24528;

  D.24528 = strtol (__nptr, 0B, 10);
  D.24527 = (int) D.24528;
  return D.24527;
}


mono_parse_graph_options (const char * p)
{
  long unsigned int D.24530;
  long unsigned int D.24531;
  int D.24532;
  MonoGraphOptions D.24535;
  unsigned int i.52;
  struct _IO_FILE * stderr.53;
  const char * n;
  int i;
  int len;

  i = 0;
  goto <D.23453>;
  <D.23452>:
  n = &graph_names[i].name;
  D.24530 = __strlen_g (n);
  len = (int) D.24530;
  D.24531 = (long unsigned int) len;
  D.24532 = strncmp (p, n, D.24531);
  if (D.24532 == 0) goto <D.24533>; else goto <D.24534>;
  <D.24533>:
  D.24535 = graph_names[i].value;
  return D.24535;
  <D.24534>:
  i = i + 1;
  <D.23453>:
  i.52 = (unsigned int) i;
  if (i.52 <= 4) goto <D.23452>; else goto <D.23454>;
  <D.23454>:
  stderr.53 = stderr;
  fprintf (stderr.53, "Invalid graph name provided: %s\n", p);
  exit (1);
}


parse_debug_options (const char * p)
{
  char D.24539;
  struct _IO_FILE * stderr.54;
  gboolean D.24543;
  _Bool iftmp.55;
  long unsigned int D.24545;
  int D.24548;
  int D.24550;
  _Bool iftmp.56;
  long unsigned int D.24555;
  int D.24558;
  int D.24560;
  _Bool iftmp.57;
  long unsigned int D.24565;
  int D.24568;
  int D.24570;
  struct MonoDebugOptions * opt;

  opt = mini_get_debug_options ();
  <D.23438>:
  D.24539 = *p;
  if (D.24539 == 0) goto <D.24540>; else goto <D.24541>;
  <D.24540>:
  stderr.54 = stderr;
  fprintf (stderr.54, "Syntax error; expected debug option name\n");
  D.24543 = 0;
  return D.24543;
  <D.24541>:
  D.24545 = __strlen_g ("casts");
  if (D.24545 <= 4) goto <D.24546>; else goto <D.24547>;
  <D.24546>:
  D.24548 = strcmp (p, "casts");
  iftmp.55 = D.24548 == 0;
  goto <D.24549>;
  <D.24547>:
  D.24550 = strncmp (p, "casts", 5);
  iftmp.55 = D.24550 == 0;
  <D.24549>:
  if (iftmp.55 != 0) goto <D.24551>; else goto <D.24552>;
  <D.24551>:
  opt->better_cast_details = 1;
  p = p + 5;
  goto <D.24553>;
  <D.24552>:
  D.24555 = __strlen_g ("mdb-optimizations");
  if (D.24555 <= 16) goto <D.24556>; else goto <D.24557>;
  <D.24556>:
  D.24558 = strcmp (p, "mdb-optimizations");
  iftmp.56 = D.24558 == 0;
  goto <D.24559>;
  <D.24557>:
  D.24560 = strncmp (p, "mdb-optimizations", 17);
  iftmp.56 = D.24560 == 0;
  <D.24559>:
  if (iftmp.56 != 0) goto <D.24561>; else goto <D.24562>;
  <D.24561>:
  opt->mdb_optimizations = 1;
  p = p + 17;
  goto <D.24563>;
  <D.24562>:
  D.24565 = __strlen_g ("gdb");
  if (D.24565 <= 2) goto <D.24566>; else goto <D.24567>;
  <D.24566>:
  D.24568 = strcmp (p, "gdb");
  iftmp.57 = D.24568 == 0;
  goto <D.24569>;
  <D.24567>:
  D.24570 = strncmp (p, "gdb", 3);
  iftmp.57 = D.24570 == 0;
  <D.24569>:
  if (iftmp.57 != 0) goto <D.24571>; else goto <D.24572>;
  <D.24571>:
  opt->gdb = 1;
  p = p + 3;
  goto <D.24573>;
  <D.24572>:
  stderr.54 = stderr;
  fprintf (stderr.54, "Invalid debug option `%s\', use --help-debug for details\n", p);
  D.24543 = 0;
  return D.24543;
  <D.24573>:
  <D.24563>:
  <D.24553>:
  D.24539 = *p;
  if (D.24539 == 44) goto <D.24574>; else goto <D.24575>;
  <D.24574>:
  p = p + 1;
  D.24539 = *p;
  if (D.24539 == 0) goto <D.24576>; else goto <D.24577>;
  <D.24576>:
  stderr.54 = stderr;
  fprintf (stderr.54, "Syntax error; expected debug option name\n");
  D.24543 = 0;
  return D.24543;
  <D.24577>:
  <D.24575>:
  D.24539 = *p;
  if (D.24539 != 0) goto <D.23438>; else goto <D.23439>;
  <D.23439>:
  D.24543 = 1;
  return D.24543;
}


load_agent (struct MonoDomain * domain, char * desc)
{
  long int col.58;
  long int desc.59;
  long int D.24583;
  unsigned int D.24584;
  unsigned int D.24585;
  sizetype D.24586;
  char * D.24587;
  struct _IO_FILE * stderr.60;
  <unnamed type> open_status.61;
  const char * D.24593;
  int D.24594;
  const char * D.24597;
  struct MonoThread * D.24600;
  struct MonoClass * D.24603;
  struct MonoString * D.24604;
  char * col;
  char * agent;
  char * args;
  struct MonoAssembly * agent_assembly;
  struct MonoImage * image;
  struct MonoMethod * method;
  guint32 entry;
  struct MonoArray * main_args;
  void * pa[1];
  MonoImageOpenStatus open_status;

  try
    {
      col = __builtin_strchr (desc, 58);
      if (col != 0B) goto <D.24579>; else goto <D.24580>;
      <D.24579>:
      col.58 = (long int) col;
      desc.59 = (long int) desc;
      D.24583 = col.58 - desc.59;
      D.24584 = (unsigned int) D.24583;
      D.24585 = D.24584 + 1;
      agent = monoeg_g_memdup (desc, D.24585);
      col.58 = (long int) col;
      desc.59 = (long int) desc;
      D.24583 = col.58 - desc.59;
      D.24586 = (sizetype) D.24583;
      D.24587 = agent + D.24586;
      *D.24587 = 0;
      args = col + 1;
      goto <D.24588>;
      <D.24580>:
      agent = monoeg_strdup (desc);
      args = 0B;
      <D.24588>:
      agent_assembly = mono_assembly_open (agent, &open_status);
      if (agent_assembly == 0B) goto <D.24589>; else goto <D.24590>;
      <D.24589>:
      stderr.60 = stderr;
      open_status.61 = open_status;
      D.24593 = mono_image_strerror (open_status.61);
      fprintf (stderr.60, "Cannot open agent assembly \'%s\': %s.\n", agent, D.24593);
      monoeg_g_free (agent);
      D.24594 = 2;
      return D.24594;
      <D.24590>:
      image = mono_assembly_get_image (agent_assembly);
      entry = mono_image_get_entry_point (image);
      if (entry == 0) goto <D.24595>; else goto <D.24596>;
      <D.24595>:
      D.24597 = mono_image_get_filename (image);
      monoeg_g_print ("Assembly \'%s\' doesn\'t have an entry point.\n", D.24597);
      monoeg_g_free (agent);
      D.24594 = 1;
      return D.24594;
      <D.24596>:
      method = mono_get_method (image, entry, 0B);
      if (method == 0B) goto <D.24598>; else goto <D.24599>;
      <D.24598>:
      monoeg_g_print ("The entry point method of assembly \'%s\' could not be loaded\n", agent);
      monoeg_g_free (agent);
      D.24594 = 1;
      return D.24594;
      <D.24599>:
      D.24600 = mono_thread_current ();
      mono_thread_set_main (D.24600);
      if (args != 0B) goto <D.24601>; else goto <D.24602>;
      <D.24601>:
      D.24603 = mono_defaults.string_class;
      main_args = mono_array_new (domain, D.24603, 1);
      {
        struct MonoString * * __p;

        __p = mono_array_addr_with_size (main_args, 8, 0);
        D.24604 = mono_string_new (domain, args);
        *__p = D.24604;
      }
      goto <D.24605>;
      <D.24602>:
      D.24603 = mono_defaults.string_class;
      main_args = mono_array_new (domain, D.24603, 0);
      <D.24605>:
      monoeg_g_free (agent);
      pa[0] = main_args;
      mono_runtime_invoke (method, 0B, &pa, 0B);
      D.24594 = 0;
      return D.24594;
    }
  finally
    {
      pa = {CLOBBER};
      open_status = {CLOBBER};
    }
}


monoeg_strdup (const gchar * str)
{
  gchar * D.24610;

  if (str != 0B) goto <D.24608>; else goto <D.24609>;
  <D.24608>:
  D.24610 = __strdup (str);
  return D.24610;
  <D.24609>:
  D.24610 = 0B;
  return D.24610;
}


mini_regression_list (int verbose, int count, char * * images)
{
  long unsigned int D.24612;
  long unsigned int D.24613;
  char * * D.24614;
  char * D.24615;
  struct MonoImage * D.24618;
  int D.24619;
  int run.62;
  int D.24623;
  double D.24624;
  double D.24625;
  double D.24626;
  double D.24627;
  int D.24629;
  int i;
  int total;
  int total_run;
  int run;
  struct MonoAssembly * ass;

  try
    {
      total = 0;
      total_run = total;
      i = 0;
      goto <D.23539>;
      <D.23538>:
      D.24612 = (long unsigned int) i;
      D.24613 = D.24612 * 8;
      D.24614 = images + D.24613;
      D.24615 = *D.24614;
      ass = mono_assembly_open (D.24615, 0B);
      if (ass == 0B) goto <D.24616>; else goto <D.24617>;
      <D.24616>:
      D.24612 = (long unsigned int) i;
      D.24613 = D.24612 * 8;
      D.24614 = images + D.24613;
      D.24615 = *D.24614;
      monoeg_g_log (0B, 16, "failed to load assembly: %s", D.24615);
      // predicted unlikely by continue predictor.
      goto <D.23537>;
      <D.24617>:
      D.24618 = mono_assembly_get_image (ass);
      D.24619 = mini_regression (D.24618, verbose, &run);
      total = D.24619 + total;
      run.62 = run;
      total_run = total_run + run.62;
      <D.23537>:
      i = i + 1;
      <D.23539>:
      if (i < count) goto <D.23538>; else goto <D.23540>;
      <D.23540>:
      if (total > 0) goto <D.24621>; else goto <D.24622>;
      <D.24621>:
      D.24623 = total_run - total;
      D.24624 = (double) D.24623;
      D.24625 = D.24624 * 1.0e+2;
      D.24626 = (double) total_run;
      D.24627 = D.24625 / D.24626;
      monoeg_g_print ("Overall results: tests: %d, failed: %d, opt combinations: %d (pass: %.2f%%)\n", total_run, total, 24, D.24627);
      goto <D.24628>;
      <D.24622>:
      monoeg_g_print ("Overall results: tests: %d, 100%% pass, opt combinations: %d\n", total_run, 24);
      <D.24628>:
      D.24629 = total;
      return D.24629;
    }
  finally
    {
      run = {CLOBBER};
    }
}


mini_regression (struct MonoImage * image, int verbose, int * total_run)
{
  struct FILE * mini_stats_fd.63;
  char D.24635;
  unsigned int D.24640;
  unsigned int D.24641;
  struct MonoClass * D.24644;
  _Bool iftmp.64;
  long unsigned int D.24646;
  const char * D.24649;
  int D.24650;
  int D.24652;
  int D.24657;
  unsigned int D.24658;
  int mono_do_single_method_regression.65;
  int total.66;
  int D.24667;
  struct GSList * mono_single_method_list.67;
  unsigned int D.24669;
  void * D.24670;
  struct MonoMethod * mono_current_single_method.68;
  struct GSList * iftmp.69;
  unsigned int D.24679;
  unsigned int exclude.70;
  unsigned int D.24681;
  unsigned int D.24682;
  guint32 i;
  guint32 opt;
  struct MonoMethod * method;
  char * n;
  struct GTimer * timer;
  struct MonoDomain * domain;
  guint32 exclude;
  int total;

  try
    {
      timer = monoeg_g_timer_new ();
      domain = mono_domain_get ();
      exclude = 0;
      mono_arch_cpu_optimizations (&exclude);
      mini_stats_fd.63 = mini_stats_fd;
      if (mini_stats_fd.63 != 0B) goto <D.24633>; else goto <D.24634>;
      <D.24633>:
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, "$stattitle = \'Mono Benchmark Results (various optimizations)\';\n");
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, "$graph->set_legend(qw(");
      opt = 0;
      goto <D.23513>;
      <D.23512>:
      {
        guint32 opt_flags;

        opt_flags = opt_sets[opt];
        n = opt_descr (opt_flags);
        D.24635 = *n;
        if (D.24635 == 0) goto <D.24636>; else goto <D.24637>;
        <D.24636>:
        n = "none";
        <D.24637>:
        if (opt != 0) goto <D.24638>; else goto <D.24639>;
        <D.24638>:
        mini_stats_fd.63 = mini_stats_fd;
        fprintf (mini_stats_fd.63, " ");
        <D.24639>:
        mini_stats_fd.63 = mini_stats_fd;
        fprintf (mini_stats_fd.63, "%s", n);
      }
      opt = opt + 1;
      <D.23513>:
      if (opt <= 23) goto <D.23512>; else goto <D.23514>;
      <D.23514>:
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, "));\n");
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, "@data = (\n");
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, "[");
      <D.24634>:
      i = 0;
      goto <D.23517>;
      <D.23516>:
      D.24640 = i + 1;
      D.24641 = D.24640 | 100663296;
      method = mono_get_method (image, D.24641, 0B);
      if (method == 0B) goto <D.24642>; else goto <D.24643>;
      <D.24642>:
      // predicted unlikely by continue predictor.
      goto <D.23515>;
      <D.24643>:
      D.24644 = method->klass;
      mono_class_init (D.24644);
      D.24646 = __strlen_g ("test_");
      if (D.24646 <= 4) goto <D.24647>; else goto <D.24648>;
      <D.24647>:
      D.24649 = method->name;
      D.24650 = strcmp (D.24649, "test_");
      iftmp.64 = D.24650 == 0;
      goto <D.24651>;
      <D.24648>:
      D.24649 = method->name;
      D.24652 = strncmp (D.24649, "test_", 5);
      iftmp.64 = D.24652 == 0;
      <D.24651>:
      if (iftmp.64 != 0) goto <D.24653>; else goto <D.24654>;
      <D.24653>:
      mini_stats_fd.63 = mini_stats_fd;
      if (mini_stats_fd.63 != 0B) goto <D.24655>; else goto <D.24656>;
      <D.24655>:
      mini_stats_fd.63 = mini_stats_fd;
      D.24649 = method->name;
      fprintf (mini_stats_fd.63, "\"%s\",", D.24649);
      <D.24656>:
      <D.24654>:
      <D.23515>:
      i = i + 1;
      <D.23517>:
      D.24657 = mono_image_get_table_rows (image, 6);
      D.24658 = (unsigned int) D.24657;
      if (D.24658 > i) goto <D.23516>; else goto <D.23518>;
      <D.23518>:
      mini_stats_fd.63 = mini_stats_fd;
      if (mini_stats_fd.63 != 0B) goto <D.24659>; else goto <D.24660>;
      <D.24659>:
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, "],\n");
      <D.24660>:
      total = 0;
      *total_run = 0;
      mono_do_single_method_regression.65 = mono_do_single_method_regression;
      if (mono_do_single_method_regression.65 != 0) goto <D.24662>; else goto <D.24663>;
      <D.24662>:
      {
        struct GSList * iter;

        mini_regression_step (image, verbose, total_run, &total, 0, timer, domain);
        total.66 = total;
        if (total.66 != 0) goto <D.24665>; else goto <D.24666>;
        <D.24665>:
        D.24667 = total;
        return D.24667;
        <D.24666>:
        mono_single_method_list.67 = mono_single_method_list;
        D.24669 = monoeg_g_slist_length (mono_single_method_list.67);
        monoeg_g_print ("Single method regression: %d methods\n", D.24669);
        iter = mono_single_method_list;
        goto <D.23522>;
        <D.23521>:
        {
          char * method_name;

          D.24670 = iter->data;
          mono_current_single_method = D.24670;
          mono_current_single_method.68 = mono_current_single_method;
          method_name = mono_method_full_name (mono_current_single_method.68, 1);
          monoeg_g_print ("Current single method: %s\n", method_name);
          monoeg_g_free (method_name);
          mini_regression_step (image, verbose, total_run, &total, 0, timer, domain);
          total.66 = total;
          if (total.66 != 0) goto <D.24672>; else goto <D.24673>;
          <D.24672>:
          D.24667 = total;
          return D.24667;
          <D.24673>:
        }
        if (iter != 0B) goto <D.24675>; else goto <D.24676>;
        <D.24675>:
        iftmp.69 = iter->next;
        goto <D.24677>;
        <D.24676>:
        iftmp.69 = 0B;
        <D.24677>:
        iter = iftmp.69;
        <D.23522>:
        if (iter != 0B) goto <D.23521>; else goto <D.23523>;
        <D.23523>:
      }
      goto <D.24678>;
      <D.24663>:
      opt = 0;
      goto <D.23525>;
      <D.23524>:
      D.24679 = opt_sets[opt];
      exclude.70 = exclude;
      D.24681 = ~exclude.70;
      D.24682 = D.24679 & D.24681;
      mini_regression_step (image, verbose, total_run, &total, D.24682, timer, domain);
      opt = opt + 1;
      <D.23525>:
      if (opt <= 23) goto <D.23524>; else goto <D.23526>;
      <D.23526>:
      <D.24678>:
      mini_stats_fd.63 = mini_stats_fd;
      if (mini_stats_fd.63 != 0B) goto <D.24683>; else goto <D.24684>;
      <D.24683>:
      mini_stats_fd.63 = mini_stats_fd;
      fprintf (mini_stats_fd.63, ");\n");
      mini_stats_fd.63 = mini_stats_fd;
      fflush (mini_stats_fd.63);
      <D.24684>:
      monoeg_g_timer_destroy (timer);
      D.24667 = total;
      return D.24667;
    }
  finally
    {
      exclude = {CLOBBER};
      total = {CLOBBER};
    }
}


mini_regression_step (struct MonoImage * image, int verbose, int * total_run, int * total, guint32 opt_flags, struct GTimer * timer, struct MonoDomain * domain)
{
  const char * D.24687;
  void * D.24688;
  struct GHashTable * D.24691;
  struct GHashTable * D.24692;
  struct MonoInternalHashTable * D.24693;
  struct FILE * mini_stats_fd.71;
  int D.24697;
  int D.24698;
  unsigned int D.24699;
  _Bool iftmp.72;
  long unsigned int D.24703;
  const char * D.24706;
  int D.24707;
  int D.24709;
  const char * D.24712;
  unsigned int D.24713;
  struct MonoDomain * D.24714;
  double D.24715;
  unsigned int D.24716;
  struct MonoDomain * D.24721;
  void * D.24722;
  unsigned char * D.24726;
  struct MonoDomain * D.24727;
  void * D.24728;
  unsigned int D.24731;
  unsigned int code_size.73;
  unsigned int D.24733;
  double D.24739;
  double D.24740;
  int D.24741;
  int D.24748;
  int D.24749;
  double D.24750;
  double D.24751;
  double D.24752;
  double D.24753;
  double D.24754;
  int D.24755;
  int D.24756;
  int D.24757;
  int D.24758;
  int D.24759;
  int result;
  int expected;
  int failed;
  int cfailed;
  int run;
  int code_size;
  int (*TestMethod) (void) func;
  double elapsed;
  double comp_time;
  double start_time;
  char * n;
  int i;

  mono_set_defaults (verbose, opt_flags);
  n = opt_descr (opt_flags);
  D.24687 = mono_image_get_filename (image);
  monoeg_g_print ("Test run: image=%s, opts=%s\n", D.24687, n);
  monoeg_g_free (n);
  code_size = 0;
  run = code_size;
  failed = run;
  cfailed = failed;
  elapsed = 0.0;
  comp_time = elapsed;
  D.24688 = domain->runtime_info;
  if (D.24688 != 0B) goto <D.24689>; else goto <D.24690>;
  <D.24689>:
  D.24688 = domain->runtime_info;
  D.24691 = MEM[(struct MonoJitDomainInfo *)D.24688].jit_trampoline_hash;
  monoeg_g_hash_table_destroy (D.24691);
  D.24688 = domain->runtime_info;
  D.24692 = monoeg_g_hash_table_new (mono_aligned_addr_hash, 0B);
  MEM[(struct MonoJitDomainInfo *)D.24688].jit_trampoline_hash = D.24692;
  D.24693 = &domain->jit_code_hash;
  mono_internal_hash_table_destroy (D.24693);
  D.24693 = &domain->jit_code_hash;
  mono_jit_code_hash_init (D.24693);
  <D.24690>:
  monoeg_g_timer_start (timer);
  mini_stats_fd.71 = mini_stats_fd;
  if (mini_stats_fd.71 != 0B) goto <D.24695>; else goto <D.24696>;
  <D.24695>:
  mini_stats_fd.71 = mini_stats_fd;
  fprintf (mini_stats_fd.71, "[");
  <D.24696>:
  i = 0;
  goto <D.23496>;
  <D.23495>:
  {
    struct MonoMethod * method;

    D.24697 = i + 1;
    D.24698 = D.24697 | 100663296;
    D.24699 = (unsigned int) D.24698;
    method = mono_get_method (image, D.24699, 0B);
    if (method == 0B) goto <D.24700>; else goto <D.24701>;
    <D.24700>:
    // predicted unlikely by continue predictor.
    goto <D.23493>;
    <D.24701>:
    D.24703 = __strlen_g ("test_");
    if (D.24703 <= 4) goto <D.24704>; else goto <D.24705>;
    <D.24704>:
    D.24706 = method->name;
    D.24707 = strcmp (D.24706, "test_");
    iftmp.72 = D.24707 == 0;
    goto <D.24708>;
    <D.24705>:
    D.24706 = method->name;
    D.24709 = strncmp (D.24706, "test_", 5);
    iftmp.72 = D.24709 == 0;
    <D.24708>:
    if (iftmp.72 != 0) goto <D.24710>; else goto <D.24711>;
    <D.24710>:
    {
      struct MonoCompile * cfg;

      D.24706 = method->name;
      D.24712 = D.24706 + 5;
      expected = atoi (D.24712);
      run = run + 1;
      start_time = monoeg_g_timer_elapsed (timer, 0B);
      comp_time = comp_time - start_time;
      D.24713 = mono_get_optimizations_for_method (method, opt_flags);
      D.24714 = mono_get_root_domain ();
      cfg = mini_method_compile (method, D.24713, D.24714, 1, 0);
      D.24715 = monoeg_g_timer_elapsed (timer, 0B);
      comp_time = D.24715 + comp_time;
      D.24716 = cfg->exception_type;
      if (D.24716 == 0) goto <D.24717>; else goto <D.24718>;
      <D.24717>:
      if (verbose > 1) goto <D.24719>; else goto <D.24720>;
      <D.24719>:
      D.24706 = method->name;
      monoeg_g_print ("Running \'%s\' ...\n", D.24706);
      <D.24720>:
      D.24721 = mono_get_root_domain ();
      D.24722 = mono_aot_get_method (D.24721, method);
      func = (int (*TestMethod) (void)) D.24722;
      if (func != 0B) goto <D.24723>; else goto <D.24724>;
      <D.24723>:
      goto <D.24725>;
      <D.24724>:
      D.24726 = cfg->native_code;
      func = (int (*TestMethod) (void)) D.24726;
      <D.24725>:
      D.24727 = mono_get_root_domain ();
      D.24728 = mono_create_ftnptr (D.24727, func);
      func = (int (*TestMethod) (void)) D.24728;
      result = func ();
      if (result != expected) goto <D.24729>; else goto <D.24730>;
      <D.24729>:
      failed = failed + 1;
      D.24706 = method->name;
      monoeg_g_print ("Test \'%s\' failed result (got %d, expected %d).\n", D.24706, result, expected);
      <D.24730>:
      D.24731 = cfg->code_len;
      code_size.73 = (unsigned int) code_size;
      D.24733 = D.24731 + code_size.73;
      code_size = (int) D.24733;
      mono_destroy_compile (cfg);
      goto <D.24734>;
      <D.24718>:
      cfailed = cfailed + 1;
      if (verbose != 0) goto <D.24735>; else goto <D.24736>;
      <D.24735>:
      D.24706 = method->name;
      monoeg_g_print ("Test \'%s\' failed compilation.\n", D.24706);
      <D.24736>:
      <D.24734>:
      mini_stats_fd.71 = mini_stats_fd;
      if (mini_stats_fd.71 != 0B) goto <D.24737>; else goto <D.24738>;
      <D.24737>:
      mini_stats_fd.71 = mini_stats_fd;
      D.24739 = monoeg_g_timer_elapsed (timer, 0B);
      D.24740 = D.24739 - start_time;
      fprintf (mini_stats_fd.71, "%f, ", D.24740);
      <D.24738>:
    }
    <D.24711>:
  }
  <D.23493>:
  i = i + 1;
  <D.23496>:
  D.24741 = mono_image_get_table_rows (image, 6);
  if (D.24741 > i) goto <D.23495>; else goto <D.23497>;
  <D.23497>:
  mini_stats_fd.71 = mini_stats_fd;
  if (mini_stats_fd.71 != 0B) goto <D.24742>; else goto <D.24743>;
  <D.24742>:
  mini_stats_fd.71 = mini_stats_fd;
  fprintf (mini_stats_fd.71, "],\n");
  <D.24743>:
  monoeg_g_timer_stop (timer);
  elapsed = monoeg_g_timer_elapsed (timer, 0B);
  if (failed > 0) goto <D.24744>; else goto <D.24747>;
  <D.24747>:
  if (cfailed > 0) goto <D.24744>; else goto <D.24745>;
  <D.24744>:
  D.24748 = run - failed;
  D.24749 = D.24748 - cfailed;
  D.24750 = (double) D.24749;
  D.24751 = D.24750 * 1.0e+2;
  D.24752 = (double) run;
  D.24753 = D.24751 / D.24752;
  monoeg_g_print ("Results: total tests: %d, failed: %d, cfailed: %d (pass: %.2f%%)\n", run, failed, cfailed, D.24753);
  goto <D.24746>;
  <D.24745>:
  monoeg_g_print ("Results: total tests: %d, all pass \n", run);
  <D.24746>:
  D.24754 = elapsed - comp_time;
  monoeg_g_print ("Elapsed time: %f secs (%f, %f), Code size: %d\n\n", elapsed, D.24754, comp_time, code_size);
  D.24755 = *total;
  D.24756 = failed + cfailed;
  D.24757 = D.24755 + D.24756;
  *total = D.24757;
  D.24758 = *total_run;
  D.24759 = D.24758 + run;
  *total_run = D.24759;
}


mini_usage ()
{
  struct _IO_FILE * stdout.74;

  stdout.74 = stdout;
  fprintf (stdout.74, "Usage is: mono [options] program [program-options]\n\nDevelopment:\n    --aot[=<options>]      Compiles the assembly to native code\n    --debug[=<options>]    Enable debugging support, use --help-debug for details\n    --debugger-agent=options Enable the debugger agent\n    --profile[=profiler]   Runs in profiling mode with the specified profiler module\n    --trace[=EXPR]         Enable tracing, use --help-trace for details\n    --jitmap               Output a jit method map to /tmp/perf-PID.map\n    --help-devel           Shows more options available to developers\n\nRuntime:\n    --config FILE          Loads FILE as the Mono config\n    --verbose, -v          Increases the verbosity level\n    --help, -h             Show usage information\n    --version, -V          Show version information\n    --runtime=VERSION      Use the VERSION runtime, instead of autodetecting\n    --optimize=OPT         Turns on or off a specific optimization\n                           Use --list-opt to get a list of optimizations\n    --security[=mode]      Turns on the unsupported security manager (off by default)\n                           mode is one of cas, core-clr, verifiable or validil\n    --attach=OPTIONS       Pass OPTIONS to the attach agent in the runtime.\n                           Currently the only supported option is \'disable\'.\n    --llvm, --nollvm       Controls whenever the runtime uses LLVM to compile code.\n    --gc=[sgen,boehm]      Select SGen or Boehm GC (runs mono or mono-sgen)\n");
}


main_thread_handler (void * user_data)
{
  int mono_compile_aot.75;
  struct MonoDomain * D.24764;
  char * * D.24765;
  long unsigned int D.24766;
  long unsigned int D.24767;
  char * * D.24768;
  char * D.24769;
  struct _IO_FILE * stderr.76;
  char * D.24775;
  struct MonoImage * D.24776;
  char * D.24777;
  int D.24778;
  unsigned int D.24781;
  char * D.24782;
  int D.24785;
  const char * D.24787;
  unsigned int D.24790;
  struct MainThreadArgs * main_args;
  struct MonoAssembly * assembly;

  main_args = user_data;
  mono_compile_aot.75 = mono_compile_aot;
  if (mono_compile_aot.75 != 0) goto <D.24762>; else goto <D.24763>;
  <D.24762>:
  {
    int i;
    int res;

    i = 0;
    goto <D.23615>;
    <D.23614>:
    D.24764 = main_args->domain;
    D.24765 = main_args->argv;
    D.24766 = (long unsigned int) i;
    D.24767 = D.24766 * 8;
    D.24768 = D.24765 + D.24767;
    D.24769 = *D.24768;
    assembly = mono_domain_assembly_open (D.24764, D.24769);
    if (assembly == 0B) goto <D.24770>; else goto <D.24771>;
    <D.24770>:
    stderr.76 = stderr;
    D.24765 = main_args->argv;
    D.24766 = (long unsigned int) i;
    D.24767 = D.24766 * 8;
    D.24768 = D.24765 + D.24767;
    D.24769 = *D.24768;
    fprintf (stderr.76, "Can not open image %s\n", D.24769);
    exit (1);
    <D.24771>:
    {
      MonoImageOpenStatus status;
      struct MonoImage * img;

      try
        {
          D.24765 = main_args->argv;
          D.24766 = (long unsigned int) i;
          D.24767 = D.24766 * 8;
          D.24768 = D.24765 + D.24767;
          D.24769 = *D.24768;
          img = mono_image_open (D.24769, &status);
          if (img != 0B) goto <D.24773>; else goto <D.24774>;
          <D.24773>:
          D.24775 = img->name;
          D.24776 = assembly->image;
          D.24777 = D.24776->name;
          D.24778 = strcmp (D.24775, D.24777);
          if (D.24778 != 0) goto <D.24779>; else goto <D.24780>;
          <D.24779>:
          stderr.76 = stderr;
          D.24776 = assembly->image;
          D.24777 = D.24776->name;
          D.24775 = img->name;
          fprintf (stderr.76, "Error: Loaded assembly \'%s\' doesn\'t match original file name \'%s\'. Set MONO_PATH to the assembly\'s location.\n", D.24777, D.24775);
          exit (1);
          <D.24780>:
          <D.24774>:
        }
      finally
        {
          status = {CLOBBER};
        }
    }
    D.24781 = main_args->opts;
    D.24782 = main_args->aot_options;
    res = mono_compile_assembly (assembly, D.24781, D.24782);
    if (res != 0) goto <D.24783>; else goto <D.24784>;
    <D.24783>:
    stderr.76 = stderr;
    D.24765 = main_args->argv;
    D.24766 = (long unsigned int) i;
    D.24767 = D.24766 * 8;
    D.24768 = D.24765 + D.24767;
    D.24769 = *D.24768;
    fprintf (stderr.76, "AOT of image %s failed.\n", D.24769);
    exit (1);
    <D.24784>:
    i = i + 1;
    <D.23615>:
    D.24785 = main_args->argc;
    if (D.24785 > i) goto <D.23614>; else goto <D.23616>;
    <D.23616>:
  }
  goto <D.24786>;
  <D.24763>:
  D.24764 = main_args->domain;
  D.24787 = main_args->file;
  assembly = mono_domain_assembly_open (D.24764, D.24787);
  if (assembly == 0B) goto <D.24788>; else goto <D.24789>;
  <D.24788>:
  stderr.76 = stderr;
  D.24787 = main_args->file;
  fprintf (stderr.76, "Can not open image %s\n", D.24787);
  exit (1);
  <D.24789>:
  D.24781 = main_args->opts;
  D.24790 = D.24781 & 131072;
  if (D.24790 != 0) goto <D.24791>; else goto <D.24792>;
  <D.24791>:
  mono_precompile_assemblies ();
  <D.24792>:
  D.24764 = main_args->domain;
  D.24785 = main_args->argc;
  D.24765 = main_args->argv;
  mono_jit_exec (D.24764, assembly, D.24785, D.24765);
  <D.24786>:
}


compile_all_methods (struct MonoAssembly * ass, int verbose, guint32 opts, guint32 recompilation_times)
{
  struct MonoDomain * D.24793;
  struct CompileAllThreadArgs args;

  try
    {
      args.ass = ass;
      args.verbose = verbose;
      args.opts = opts;
      args.recompilation_times = recompilation_times;
      D.24793 = mono_domain_get ();
      mono_thread_create (D.24793, compile_all_methods_thread_main, &args);
      mono_thread_manage ();
    }
  finally
    {
      args = {CLOBBER};
    }
}


compile_all_methods_thread_main (struct CompileAllThreadArgs * args)
{
  unsigned int D.24794;
  guint32 i;

  i = 0;
  goto <D.23579>;
  <D.23578>:
  compile_all_methods_thread_main_inner (args);
  i = i + 1;
  <D.23579>:
  D.24794 = args->recompilation_times;
  if (D.24794 > i) goto <D.23578>; else goto <D.23580>;
  <D.23580>:
}


compile_all_methods_thread_main_inner (struct CompileAllThreadArgs * args)
{
  int D.24795;
  int D.24796;
  int D.24797;
  short unsigned int D.24804;
  int D.24805;
  int D.24806;
  short unsigned int D.24808;
  int D.24809;
  int D.24810;
  int D.24812;
  int D.24814;
  struct MonoClass * D.24815;
  struct MonoGenericContainer * D.24816;
  long unsigned int D.24821;
  long unsigned int D.24822;
  unsigned int D.24827;
  unsigned int D.24828;
  struct MonoDomain * D.24829;
  unsigned int D.24830;
  struct MonoMethod * D.24833;
  char * D.24834;
  char * D.24835;
  int D.24836;
  struct MonoAssembly * ass;
  int verbose;
  struct MonoImage * image;
  struct MonoMethod * method;
  struct MonoCompile * cfg;
  int i;
  int count;
  int fail_count;

  ass = args->ass;
  verbose = args->verbose;
  image = mono_assembly_get_image (ass);
  count = 0;
  fail_count = 0;
  i = 0;
  goto <D.23572>;
  <D.23571>:
  {
    guint32 token;
    struct MonoMethodSignature * sig;

    D.24795 = i + 1;
    D.24796 = D.24795 | 100663296;
    token = (guint32) D.24796;
    D.24797 = mono_metadata_has_generic_params (image, token);
    if (D.24797 != 0) goto <D.24798>; else goto <D.24799>;
    <D.24798>:
    // predicted unlikely by continue predictor.
    goto <D.23568>;
    <D.24799>:
    method = mono_get_method (image, token, 0B);
    if (method == 0B) goto <D.24800>; else goto <D.24801>;
    <D.24800>:
    // predicted unlikely by continue predictor.
    goto <D.23568>;
    <D.24801>:
    D.24804 = method->iflags;
    D.24805 = (int) D.24804;
    D.24806 = D.24805 & 4096;
    if (D.24806 != 0) goto <D.24802>; else goto <D.24807>;
    <D.24807>:
    D.24808 = method->flags;
    D.24809 = (int) D.24808;
    D.24810 = D.24809 & 8192;
    if (D.24810 != 0) goto <D.24802>; else goto <D.24811>;
    <D.24811>:
    D.24804 = method->iflags;
    D.24805 = (int) D.24804;
    D.24812 = D.24805 & 3;
    if (D.24812 != 0) goto <D.24802>; else goto <D.24813>;
    <D.24813>:
    D.24808 = method->flags;
    D.24809 = (int) D.24808;
    D.24814 = D.24809 & 1024;
    if (D.24814 != 0) goto <D.24802>; else goto <D.24803>;
    <D.24802>:
    // predicted unlikely by continue predictor.
    goto <D.23568>;
    <D.24803>:
    D.24815 = method->klass;
    D.24816 = D.24815->generic_container;
    if (D.24816 != 0B) goto <D.24817>; else goto <D.24818>;
    <D.24817>:
    // predicted unlikely by continue predictor.
    goto <D.23568>;
    <D.24818>:
    sig = mono_method_signature (method);
    if (sig == 0B) goto <D.24819>; else goto <D.24820>;
    <D.24819>:
    {
      char * desc;

      desc = mono_method_full_name (method, 1);
      monoeg_g_print ("Could not retrieve method signature for %s\n", desc);
      monoeg_g_free (desc);
      fail_count = fail_count + 1;
      // predicted unlikely by continue predictor.
      goto <D.23568>;
    }
    <D.24820>:
    D.24821 = BIT_FIELD_REF <*sig, 64, 64>;
    D.24822 = D.24821 & 32;
    if (D.24822 != 0) goto <D.24823>; else goto <D.24824>;
    <D.24823>:
    // predicted unlikely by continue predictor.
    goto <D.23568>;
    <D.24824>:
    count = count + 1;
    if (verbose != 0) goto <D.24825>; else goto <D.24826>;
    <D.24825>:
    {
      char * desc;

      desc = mono_method_full_name (method, 1);
      monoeg_g_print ("Compiling %d %s\n", count, desc);
      monoeg_g_free (desc);
    }
    <D.24826>:
    D.24827 = args->opts;
    D.24828 = mono_get_optimizations_for_method (method, D.24827);
    D.24829 = mono_get_root_domain ();
    cfg = mini_method_compile (method, D.24828, D.24829, 0, 0);
    D.24830 = cfg->exception_type;
    if (D.24830 != 0) goto <D.24831>; else goto <D.24832>;
    <D.24831>:
    D.24833 = cfg->method;
    D.24834 = mono_method_full_name (D.24833, 1);
    D.24835 = cfg->exception_message;
    printf ("Compilation of %s failed with exception \'%s\':\n", D.24834, D.24835);
    fail_count = fail_count + 1;
    <D.24832>:
    mono_destroy_compile (cfg);
  }
  <D.23568>:
  i = i + 1;
  <D.23572>:
  D.24836 = mono_image_get_table_rows (image, 6);
  if (D.24836 > i) goto <D.23571>; else goto <D.23573>;
  <D.23573>:
  if (fail_count != 0) goto <D.24837>; else goto <D.24838>;
  <D.24837>:
  exit (1);
  <D.24838>:
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__))
printf (const char * restrict __fmt)
{
  int D.24839;

  D.24839 = __printf_chk (1, __fmt, __builtin_va_arg_pack ());
  return D.24839;
}


opt_descr (guint32 flags)
{
  int D.24841;
  unsigned int D.24842;
  unsigned int D.24843;
  short int D.24848;
  sizetype D.24849;
  const gchar * D.24850;
  unsigned int i.77;
  char * D.24852;
  struct GString * str;
  int i;
  int need_comma;

  str = monoeg_g_string_new ("");
  need_comma = 0;
  i = 0;
  goto <D.23466>;
  <D.23465>:
  D.24841 = 1 << i;
  D.24842 = (unsigned int) D.24841;
  D.24843 = D.24842 & flags;
  if (D.24843 != 0) goto <D.24844>; else goto <D.24845>;
  <D.24844>:
  if (need_comma != 0) goto <D.24846>; else goto <D.24847>;
  <D.24846>:
  monoeg_g_string_append_c (str, 44);
  <D.24847>:
  D.24848 = opt_names[i];
  D.24849 = (sizetype) D.24848;
  D.24850 = &opstr + D.24849;
  monoeg_g_string_append (str, D.24850);
  need_comma = 1;
  <D.24845>:
  i = i + 1;
  <D.23466>:
  i.77 = (unsigned int) i;
  if (i.77 <= 28) goto <D.23465>; else goto <D.23467>;
  <D.23467>:
  D.24852 = monoeg_g_string_free (str, 0);
  return D.24852;
}


mono_jit_init (const char * file)
{
  struct MonoDomain * D.24854;

  D.24854 = mini_init (file, 0B);
  return D.24854;
}


mono_jit_init_version (const char * domain_name, const char * runtime_version)
{
  struct MonoDomain * D.24856;

  D.24856 = mini_init (domain_name, runtime_version);
  return D.24856;
}


mono_jit_cleanup (struct MonoDomain * domain)
{
  mini_cleanup (domain);
}


mono_jit_set_aot_only (gboolean val)
{
  mono_aot_only = val;
}


mono_jit_set_trace_options (const char * options)
{
  mono_bool D.24860;
  struct MonoTraceSpec * trace_opt;

  trace_opt = mono_trace_parse_options (options);
  if (trace_opt == 0B) goto <D.24858>; else goto <D.24859>;
  <D.24858>:
  D.24860 = 0;
  return D.24860;
  <D.24859>:
  mono_jit_trace_calls = trace_opt;
  D.24860 = 1;
  return D.24860;
}


mono_set_signal_chaining (gboolean chain_signals)
{
  mono_do_signal_chaining = chain_signals;
}


