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

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


parse_optimizations (const char * p)
{
  unsigned int D.26711;
  unsigned int exclude.0;
  unsigned int D.26713;
  guint32 D.26716;
  char D.26717;
  short int D.26721;
  sizetype D.26722;
  unsigned int D.26723;
  unsigned int len.1;
  int D.26725;
  int D.26730;
  int D.26731;
  unsigned int D.26732;
  unsigned int D.26734;
  sizetype len.2;
  void (*<T46f4>) (const char *) D.26740;
  const char * p.3;
  char D.26745;
  unsigned int i.4;
  const char * D.26748;
  int D.26752;
  unsigned int D.26758;
  struct _IO_FILE * stderr.5;
  guint32 opt;
  guint32 exclude;
  const char * n;
  int i;
  int invert;
  int len;

  try
    {
      opt = 370223615;
      exclude = 0;
      mono_hwcap_init ();
      D.26711 = mono_arch_cpu_optimizations (&exclude);
      opt = D.26711 | opt;
      exclude.0 = exclude;
      D.26713 = ~exclude.0;
      opt = D.26713 & opt;
      if (p == 0B) goto <D.26714>; else goto <D.26715>;
      <D.26714>:
      D.26716 = opt;
      return D.26716;
      <D.26715>:
      goto <D.25610>;
      <D.25609>:
      D.26717 = *p;
      if (D.26717 == 45) goto <D.26718>; else goto <D.26719>;
      <D.26718>:
      p = p + 1;
      invert = 1;
      goto <D.26720>;
      <D.26719>:
      invert = 0;
      <D.26720>:
      i = 0;
      goto <D.25599>;
      <D.25598>:
      D.26721 = opt_names[i];
      D.26722 = (sizetype) D.26721;
      n = &opstr + D.26722;
      D.26723 = strlen (n);
      len = (int) D.26723;
      len.1 = (unsigned int) len;
      D.26725 = strncmp (p, n, len.1);
      if (D.26725 == 0) goto <D.26726>; else goto <D.26727>;
      <D.26726>:
      if (invert != 0) goto <D.26728>; else goto <D.26729>;
      <D.26728>:
      D.26730 = 1 << i;
      D.26731 = ~D.26730;
      D.26732 = (unsigned int) D.26731;
      opt = D.26732 & opt;
      goto <D.26733>;
      <D.26729>:
      D.26730 = 1 << i;
      D.26734 = (unsigned int) D.26730;
      opt = D.26734 | opt;
      <D.26733>:
      len.2 = (sizetype) len;
      p = p + len.2;
      D.26717 = *p;
      if (D.26717 == 44) goto <D.26736>; else goto <D.26737>;
      <D.26736>:
      p = p + 1;
      goto <D.25594>;
      <D.26737>:
      D.26717 = *p;
      if (D.26717 == 61) goto <D.26738>; else goto <D.26739>;
      <D.26738>:
      p = p + 1;
      D.26740 = opt_funcs[i];
      if (D.26740 != 0B) goto <D.26741>; else goto <D.26742>;
      <D.26741>:
      D.26740 = opt_funcs[i];
      D.26740 (p);
      <D.26742>:
      goto <D.25596>;
      <D.25595>:
      <D.25596>:
      D.26717 = *p;
      if (D.26717 != 0) goto <D.26743>; else goto <D.25597>;
      <D.26743>:
      p.3 = p;
      p = p.3 + 1;
      D.26745 = *p.3;
      if (D.26745 != 44) goto <D.25595>; else goto <D.25597>;
      <D.25597>:
      goto <D.25594>;
      <D.26739>:
      goto <D.25594>;
      <D.26727>:
      i = i + 1;
      <D.25599>:
      i.4 = (unsigned int) i;
      if (i.4 <= 28) goto <D.26747>; else goto <D.25594>;
      <D.26747>:
      D.26721 = opt_names[i];
      D.26722 = (sizetype) D.26721;
      D.26748 = &opstr + D.26722;
      if (D.26748 != 0B) goto <D.25598>; else goto <D.25594>;
      <D.25594>:
      if (i == 29) goto <D.26749>; else goto <D.26751>;
      <D.26751>:
      D.26721 = opt_names[i];
      D.26722 = (sizetype) D.26721;
      D.26748 = &opstr + D.26722;
      if (D.26748 == 0B) goto <D.26749>; else goto <D.26750>;
      <D.26749>:
      D.26752 = strncmp (p, "all", 3);
      if (D.26752 == 0) goto <D.26753>; else goto <D.26754>;
      <D.26753>:
      if (invert != 0) goto <D.26755>; else goto <D.26756>;
      <D.26755>:
      opt = 0;
      goto <D.26757>;
      <D.26756>:
      exclude.0 = exclude;
      D.26758 = exclude.0 | 151126528;
      opt = ~D.26758;
      <D.26757>:
      p = p + 3;
      D.26717 = *p;
      if (D.26717 == 44) goto <D.26759>; else goto <D.26760>;
      <D.26759>:
      p = p + 1;
      <D.26760>:
      goto <D.26761>;
      <D.26754>:
      stderr.5 = stderr;
      fprintf (stderr.5, "Invalid optimization name `%s\'\n", p);
      exit (1);
      <D.26761>:
      <D.26750>:
      <D.25610>:
      D.26717 = *p;
      if (D.26717 != 0) goto <D.25609>; else goto <D.25611>;
      <D.25611>:
      D.26716 = opt;
      return D.26716;
    }
  finally
    {
      exclude = {CLOBBER};
    }
}


fprintf (struct FILE * restrict __stream, const char * restrict __fmt)
{
  int D.26765;

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


mono_jit_exec (struct MonoDomain * domain, struct MonoAssembly * assembly, int argc, char * * argv)
{
  const char * D.26769;
  int D.26770;
  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.26767>; else goto <D.26768>;
  <D.26767>:
  D.26769 = mono_image_get_filename (image);
  monoeg_g_print ("Assembly \'%s\' doesn\'t have an entry point.\n", D.26769);
  mono_environment_exitcode_set (1);
  D.26770 = 1;
  return D.26770;
  <D.26768>:
  method = mono_get_method (image, entry, 0B);
  if (method == 0B) goto <D.26771>; else goto <D.26772>;
  <D.26771>:
  monoeg_g_print ("The entry point method could not be loaded\n");
  mono_environment_exitcode_set (1);
  D.26770 = 1;
  return D.26770;
  <D.26772>:
  D.26770 = mono_runtime_run_main (method, argc, argv, 0B);
  return D.26770;
}


mono_jit_parse_options (int argc, char * * argv)
{
  unsigned int i.6;
  unsigned int D.26775;
  char * * D.26776;
  char * D.26777;
  char D.26778;
  int D.26780;
  char * D.26783;
  int D.25924;
  int iftmp.7;
  int D.25923;
  const char[19] * D.26788;
  unsigned char D.26789;
  int D.26790;
  unsigned char D.26791;
  int D.26792;
  _Bool D.26793;
  _Bool D.26794;
  _Bool D.26795;
  const unsigned char * D.26798;
  unsigned char D.26799;
  int D.26800;
  const unsigned char * D.26801;
  unsigned char D.26802;
  int D.26803;
  _Bool D.26804;
  _Bool D.26805;
  const unsigned char * D.26808;
  unsigned char D.26809;
  int D.26810;
  const unsigned char * D.26811;
  unsigned char D.26812;
  int D.26813;
  _Bool D.26814;
  _Bool D.26815;
  const unsigned char * D.26818;
  unsigned char D.26819;
  int D.26820;
  const unsigned char * D.26821;
  unsigned char D.26822;
  int D.26823;
  int D.26828;
  const char * D.26831;
  int D.26833;
  const char * D.26836;
  int D.25954;
  int iftmp.8;
  int D.25953;
  const char[8] * D.26841;
  unsigned char D.26842;
  int D.26843;
  unsigned char D.26844;
  int D.26845;
  _Bool D.26846;
  _Bool D.26847;
  _Bool D.26848;
  const unsigned char * D.26851;
  unsigned char D.26852;
  int D.26853;
  const unsigned char * D.26854;
  unsigned char D.26855;
  int D.26856;
  _Bool D.26857;
  _Bool D.26858;
  const unsigned char * D.26861;
  unsigned char D.26862;
  int D.26863;
  const unsigned char * D.26864;
  unsigned char D.26865;
  int D.26866;
  _Bool D.26867;
  _Bool D.26868;
  const unsigned char * D.26871;
  unsigned char D.26872;
  int D.26873;
  const unsigned char * D.26874;
  unsigned char D.26875;
  int D.26876;
  int D.26881;
  int D.25972;
  int iftmp.9;
  int D.25971;
  const char[10] * D.26891;
  unsigned char D.26892;
  int D.26893;
  unsigned char D.26894;
  int D.26895;
  _Bool D.26896;
  _Bool D.26897;
  _Bool D.26898;
  const unsigned char * D.26901;
  unsigned char D.26902;
  int D.26903;
  const unsigned char * D.26904;
  unsigned char D.26905;
  int D.26906;
  _Bool D.26907;
  _Bool D.26908;
  const unsigned char * D.26911;
  unsigned char D.26912;
  int D.26913;
  const unsigned char * D.26914;
  unsigned char D.26915;
  int D.26916;
  _Bool D.26917;
  _Bool D.26918;
  const unsigned char * D.26921;
  unsigned char D.26922;
  int D.26923;
  const unsigned char * D.26924;
  unsigned char D.26925;
  int D.26926;
  int D.25981;
  int iftmp.10;
  int D.25980;
  const char[3] * D.26932;
  unsigned char D.26933;
  int D.26934;
  unsigned char D.26935;
  int D.26936;
  _Bool D.26937;
  _Bool D.26938;
  _Bool D.26939;
  const unsigned char * D.26942;
  unsigned char D.26943;
  int D.26944;
  const unsigned char * D.26945;
  unsigned char D.26946;
  int D.26947;
  _Bool D.26948;
  _Bool D.26949;
  const unsigned char * D.26952;
  unsigned char D.26953;
  int D.26954;
  const unsigned char * D.26955;
  unsigned char D.26956;
  int D.26957;
  _Bool D.26958;
  _Bool D.26959;
  const unsigned char * D.26962;
  unsigned char D.26963;
  int D.26964;
  const unsigned char * D.26965;
  unsigned char D.26966;
  int D.26967;
  int D.25990;
  int iftmp.11;
  int D.25989;
  const char[12] * D.26972;
  unsigned char D.26973;
  int D.26974;
  unsigned char D.26975;
  int D.26976;
  _Bool D.26977;
  _Bool D.26978;
  _Bool D.26979;
  const unsigned char * D.26982;
  unsigned char D.26983;
  int D.26984;
  const unsigned char * D.26985;
  unsigned char D.26986;
  int D.26987;
  _Bool D.26988;
  _Bool D.26989;
  const unsigned char * D.26992;
  unsigned char D.26993;
  int D.26994;
  const unsigned char * D.26995;
  unsigned char D.26996;
  int D.26997;
  _Bool D.26998;
  _Bool D.26999;
  const unsigned char * D.27002;
  unsigned char D.27003;
  int D.27004;
  const unsigned char * D.27005;
  unsigned char D.27006;
  int D.27007;
  int D.26000;
  int iftmp.12;
  int D.25999;
  const char[8] * D.27015;
  unsigned char D.27016;
  int D.27017;
  unsigned char D.27018;
  int D.27019;
  _Bool D.27020;
  _Bool D.27021;
  _Bool D.27022;
  const unsigned char * D.27025;
  unsigned char D.27026;
  int D.27027;
  const unsigned char * D.27028;
  unsigned char D.27029;
  int D.27030;
  _Bool D.27031;
  _Bool D.27032;
  const unsigned char * D.27035;
  unsigned char D.27036;
  int D.27037;
  const unsigned char * D.27038;
  unsigned char D.27039;
  int D.27040;
  _Bool D.27041;
  _Bool D.27042;
  const unsigned char * D.27045;
  unsigned char D.27046;
  int D.27047;
  const unsigned char * D.27048;
  unsigned char D.27049;
  int D.27050;
  int D.26009;
  int iftmp.13;
  int D.26008;
  const char[8] * D.27058;
  unsigned char D.27059;
  int D.27060;
  unsigned char D.27061;
  int D.27062;
  _Bool D.27063;
  _Bool D.27064;
  _Bool D.27065;
  const unsigned char * D.27068;
  unsigned char D.27069;
  int D.27070;
  const unsigned char * D.27071;
  unsigned char D.27072;
  int D.27073;
  _Bool D.27074;
  _Bool D.27075;
  const unsigned char * D.27078;
  unsigned char D.27079;
  int D.27080;
  const unsigned char * D.27081;
  unsigned char D.27082;
  int D.27083;
  _Bool D.27084;
  _Bool D.27085;
  const unsigned char * D.27088;
  unsigned char D.27089;
  int D.27090;
  const unsigned char * D.27091;
  unsigned char D.27092;
  int D.27093;
  int D.27097;
  struct _IO_FILE * stderr.14;
  int D.27101;
  int D.26018;
  int iftmp.15;
  int D.26017;
  const char[7] * D.27108;
  unsigned char D.27109;
  int D.27110;
  unsigned char D.27111;
  int D.27112;
  _Bool D.27113;
  _Bool D.27114;
  _Bool D.27115;
  const unsigned char * D.27118;
  unsigned char D.27119;
  int D.27120;
  const unsigned char * D.27121;
  unsigned char D.27122;
  int D.27123;
  _Bool D.27124;
  _Bool D.27125;
  const unsigned char * D.27128;
  unsigned char D.27129;
  int D.27130;
  const unsigned char * D.27131;
  unsigned char D.27132;
  int D.27133;
  _Bool D.27134;
  _Bool D.27135;
  const unsigned char * D.27138;
  unsigned char D.27139;
  int D.27140;
  const unsigned char * D.27141;
  unsigned char D.27142;
  int D.27143;
  struct MonoTraceSpec * mono_jit_trace_calls.16;
  struct MonoTraceSpec * mono_jit_trace_calls.17;
  unsigned int mini_verbose.18;
  int i;
  char * trace_options;
  int mini_verbose;

  trace_options = 0B;
  mini_verbose = 0;
  i = 0;
  goto <D.26020>;
  <D.26019>:
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  D.26778 = *D.26777;
  if (D.26778 != 45) goto <D.25905>; else goto <D.26779>;
  <D.26779>:
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  D.26780 = strncmp (D.26777, "--debugger-agent=", 17);
  if (D.26780 == 0) goto <D.26781>; else goto <D.26782>;
  <D.26781>:
  {
    struct MonoDebugOptions * opt;

    opt = mini_get_debug_options ();
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    D.26783 = D.26777 + 17;
    mono_debugger_agent_parse_options (D.26783);
    opt->mdb_optimizations = 1;
    enable_debugging = 1;
  }
  goto <D.26784>;
  <D.26782>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 18;
    if (__s2_len <= 3) goto <D.26786>; else goto <D.26787>;
    <D.26786>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.26788 = "--soft-breakpoints";
      D.26789 = MEM[(const unsigned char *)D.26788];
      D.26790 = (int) D.26789;
      D.26791 = *__s2;
      D.26792 = (int) D.26791;
      __result = D.26790 - D.26792;
      {
        D.26793 = __s2_len != 0;
        D.26794 = __result == 0;
        D.26795 = D.26793 & D.26794;
        if (D.26795 != 0) goto <D.26796>; else goto <D.26797>;
        <D.26796>:
        D.26798 = &MEM[(void *)"--soft-breakpoints" + 1B];
        D.26799 = *D.26798;
        D.26800 = (int) D.26799;
        D.26801 = __s2 + 1;
        D.26802 = *D.26801;
        D.26803 = (int) D.26802;
        __result = D.26800 - D.26803;
        D.26804 = __s2_len > 1;
        D.26794 = __result == 0;
        D.26805 = D.26804 & D.26794;
        if (D.26805 != 0) goto <D.26806>; else goto <D.26807>;
        <D.26806>:
        D.26808 = &MEM[(void *)"--soft-breakpoints" + 2B];
        D.26809 = *D.26808;
        D.26810 = (int) D.26809;
        D.26811 = __s2 + 2;
        D.26812 = *D.26811;
        D.26813 = (int) D.26812;
        __result = D.26810 - D.26813;
        D.26814 = __s2_len > 2;
        D.26794 = __result == 0;
        D.26815 = D.26814 & D.26794;
        if (D.26815 != 0) goto <D.26816>; else goto <D.26817>;
        <D.26816>:
        D.26818 = &MEM[(void *)"--soft-breakpoints" + 3B];
        D.26819 = *D.26818;
        D.26820 = (int) D.26819;
        D.26821 = __s2 + 3;
        D.26822 = *D.26821;
        D.26823 = (int) D.26822;
        __result = D.26820 - D.26823;
        <D.26817>:
        <D.26807>:
        <D.26797>:
      }
      D.25923 = __result;
    }
    iftmp.7 = -D.25923;
    goto <D.26824>;
    <D.26787>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.7 = __builtin_strcmp (D.26777, "--soft-breakpoints");
    <D.26824>:
    D.25924 = iftmp.7;
  }
  if (D.25924 == 0) goto <D.26825>; else goto <D.26826>;
  <D.26825>:
  {
    struct MonoDebugOptions * opt;

    opt = mini_get_debug_options ();
    opt->soft_breakpoints = 1;
    opt->explicit_null_checks = 1;
  }
  goto <D.26827>;
  <D.26826>:
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  D.26828 = strncmp (D.26777, "--optimize=", 11);
  if (D.26828 == 0) goto <D.26829>; else goto <D.26830>;
  <D.26829>:
  {
    guint32 opt;

    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    D.26831 = D.26777 + 11;
    opt = parse_optimizations (D.26831);
    mono_set_optimizations (opt);
  }
  goto <D.26832>;
  <D.26830>:
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  D.26833 = strncmp (D.26777, "-O=", 3);
  if (D.26833 == 0) goto <D.26834>; else goto <D.26835>;
  <D.26834>:
  {
    guint32 opt;

    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    D.26836 = D.26777 + 3;
    opt = parse_optimizations (D.26836);
    mono_set_optimizations (opt);
  }
  goto <D.26837>;
  <D.26835>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 7;
    if (__s2_len <= 3) goto <D.26839>; else goto <D.26840>;
    <D.26839>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.26841 = "--trace";
      D.26842 = MEM[(const unsigned char *)D.26841];
      D.26843 = (int) D.26842;
      D.26844 = *__s2;
      D.26845 = (int) D.26844;
      __result = D.26843 - D.26845;
      {
        D.26846 = __s2_len != 0;
        D.26847 = __result == 0;
        D.26848 = D.26846 & D.26847;
        if (D.26848 != 0) goto <D.26849>; else goto <D.26850>;
        <D.26849>:
        D.26851 = &MEM[(void *)"--trace" + 1B];
        D.26852 = *D.26851;
        D.26853 = (int) D.26852;
        D.26854 = __s2 + 1;
        D.26855 = *D.26854;
        D.26856 = (int) D.26855;
        __result = D.26853 - D.26856;
        D.26857 = __s2_len > 1;
        D.26847 = __result == 0;
        D.26858 = D.26857 & D.26847;
        if (D.26858 != 0) goto <D.26859>; else goto <D.26860>;
        <D.26859>:
        D.26861 = &MEM[(void *)"--trace" + 2B];
        D.26862 = *D.26861;
        D.26863 = (int) D.26862;
        D.26864 = __s2 + 2;
        D.26865 = *D.26864;
        D.26866 = (int) D.26865;
        __result = D.26863 - D.26866;
        D.26867 = __s2_len > 2;
        D.26847 = __result == 0;
        D.26868 = D.26867 & D.26847;
        if (D.26868 != 0) goto <D.26869>; else goto <D.26870>;
        <D.26869>:
        D.26871 = &MEM[(void *)"--trace" + 3B];
        D.26872 = *D.26871;
        D.26873 = (int) D.26872;
        D.26874 = __s2 + 3;
        D.26875 = *D.26874;
        D.26876 = (int) D.26875;
        __result = D.26873 - D.26876;
        <D.26870>:
        <D.26860>:
        <D.26850>:
      }
      D.25953 = __result;
    }
    iftmp.8 = -D.25953;
    goto <D.26877>;
    <D.26840>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.8 = __builtin_strcmp (D.26777, "--trace");
    <D.26877>:
    D.25954 = iftmp.8;
  }
  if (D.25954 == 0) goto <D.26878>; else goto <D.26879>;
  <D.26878>:
  trace_options = "";
  goto <D.26880>;
  <D.26879>:
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  D.26881 = strncmp (D.26777, "--trace=", 8);
  if (D.26881 == 0) goto <D.26882>; else goto <D.26883>;
  <D.26882>:
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  trace_options = D.26777 + 8;
  goto <D.26884>;
  <D.26883>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.26889>; else goto <D.26890>;
    <D.26889>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.26891 = "--verbose";
      D.26892 = MEM[(const unsigned char *)D.26891];
      D.26893 = (int) D.26892;
      D.26894 = *__s2;
      D.26895 = (int) D.26894;
      __result = D.26893 - D.26895;
      {
        D.26896 = __s2_len != 0;
        D.26897 = __result == 0;
        D.26898 = D.26896 & D.26897;
        if (D.26898 != 0) goto <D.26899>; else goto <D.26900>;
        <D.26899>:
        D.26901 = &MEM[(void *)"--verbose" + 1B];
        D.26902 = *D.26901;
        D.26903 = (int) D.26902;
        D.26904 = __s2 + 1;
        D.26905 = *D.26904;
        D.26906 = (int) D.26905;
        __result = D.26903 - D.26906;
        D.26907 = __s2_len > 1;
        D.26897 = __result == 0;
        D.26908 = D.26907 & D.26897;
        if (D.26908 != 0) goto <D.26909>; else goto <D.26910>;
        <D.26909>:
        D.26911 = &MEM[(void *)"--verbose" + 2B];
        D.26912 = *D.26911;
        D.26913 = (int) D.26912;
        D.26914 = __s2 + 2;
        D.26915 = *D.26914;
        D.26916 = (int) D.26915;
        __result = D.26913 - D.26916;
        D.26917 = __s2_len > 2;
        D.26897 = __result == 0;
        D.26918 = D.26917 & D.26897;
        if (D.26918 != 0) goto <D.26919>; else goto <D.26920>;
        <D.26919>:
        D.26921 = &MEM[(void *)"--verbose" + 3B];
        D.26922 = *D.26921;
        D.26923 = (int) D.26922;
        D.26924 = __s2 + 3;
        D.26925 = *D.26924;
        D.26926 = (int) D.26925;
        __result = D.26923 - D.26926;
        <D.26920>:
        <D.26910>:
        <D.26900>:
      }
      D.25971 = __result;
    }
    iftmp.9 = -D.25971;
    goto <D.26927>;
    <D.26890>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.9 = __builtin_strcmp (D.26777, "--verbose");
    <D.26927>:
    D.25972 = iftmp.9;
  }
  if (D.25972 == 0) goto <D.26885>; else goto <D.26928>;
  <D.26928>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 2;
    if (__s2_len <= 3) goto <D.26930>; else goto <D.26931>;
    <D.26930>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.26932 = "-v";
      D.26933 = MEM[(const unsigned char *)D.26932];
      D.26934 = (int) D.26933;
      D.26935 = *__s2;
      D.26936 = (int) D.26935;
      __result = D.26934 - D.26936;
      {
        D.26937 = __s2_len != 0;
        D.26938 = __result == 0;
        D.26939 = D.26937 & D.26938;
        if (D.26939 != 0) goto <D.26940>; else goto <D.26941>;
        <D.26940>:
        D.26942 = &MEM[(void *)"-v" + 1B];
        D.26943 = *D.26942;
        D.26944 = (int) D.26943;
        D.26945 = __s2 + 1;
        D.26946 = *D.26945;
        D.26947 = (int) D.26946;
        __result = D.26944 - D.26947;
        D.26948 = __s2_len > 1;
        D.26938 = __result == 0;
        D.26949 = D.26948 & D.26938;
        if (D.26949 != 0) goto <D.26950>; else goto <D.26951>;
        <D.26950>:
        D.26952 = &MEM[(void *)"-v" + 2B];
        D.26953 = *D.26952;
        D.26954 = (int) D.26953;
        D.26955 = __s2 + 2;
        D.26956 = *D.26955;
        D.26957 = (int) D.26956;
        __result = D.26954 - D.26957;
        D.26958 = __s2_len > 2;
        D.26938 = __result == 0;
        D.26959 = D.26958 & D.26938;
        if (D.26959 != 0) goto <D.26960>; else goto <D.26961>;
        <D.26960>:
        D.26962 = &MEM[(void *)"-v" + 3B];
        D.26963 = *D.26962;
        D.26964 = (int) D.26963;
        D.26965 = __s2 + 3;
        D.26966 = *D.26965;
        D.26967 = (int) D.26966;
        __result = D.26964 - D.26967;
        <D.26961>:
        <D.26951>:
        <D.26941>:
      }
      D.25980 = __result;
    }
    iftmp.10 = -D.25980;
    goto <D.26968>;
    <D.26931>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.10 = __builtin_strcmp (D.26777, "-v");
    <D.26968>:
    D.25981 = iftmp.10;
  }
  if (D.25981 == 0) goto <D.26885>; else goto <D.26886>;
  <D.26885>:
  mini_verbose = mini_verbose + 1;
  goto <D.26887>;
  <D.26886>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 11;
    if (__s2_len <= 3) goto <D.26970>; else goto <D.26971>;
    <D.26970>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.26972 = "--breakonex";
      D.26973 = MEM[(const unsigned char *)D.26972];
      D.26974 = (int) D.26973;
      D.26975 = *__s2;
      D.26976 = (int) D.26975;
      __result = D.26974 - D.26976;
      {
        D.26977 = __s2_len != 0;
        D.26978 = __result == 0;
        D.26979 = D.26977 & D.26978;
        if (D.26979 != 0) goto <D.26980>; else goto <D.26981>;
        <D.26980>:
        D.26982 = &MEM[(void *)"--breakonex" + 1B];
        D.26983 = *D.26982;
        D.26984 = (int) D.26983;
        D.26985 = __s2 + 1;
        D.26986 = *D.26985;
        D.26987 = (int) D.26986;
        __result = D.26984 - D.26987;
        D.26988 = __s2_len > 1;
        D.26978 = __result == 0;
        D.26989 = D.26988 & D.26978;
        if (D.26989 != 0) goto <D.26990>; else goto <D.26991>;
        <D.26990>:
        D.26992 = &MEM[(void *)"--breakonex" + 2B];
        D.26993 = *D.26992;
        D.26994 = (int) D.26993;
        D.26995 = __s2 + 2;
        D.26996 = *D.26995;
        D.26997 = (int) D.26996;
        __result = D.26994 - D.26997;
        D.26998 = __s2_len > 2;
        D.26978 = __result == 0;
        D.26999 = D.26998 & D.26978;
        if (D.26999 != 0) goto <D.27000>; else goto <D.27001>;
        <D.27000>:
        D.27002 = &MEM[(void *)"--breakonex" + 3B];
        D.27003 = *D.27002;
        D.27004 = (int) D.27003;
        D.27005 = __s2 + 3;
        D.27006 = *D.27005;
        D.27007 = (int) D.27006;
        __result = D.27004 - D.27007;
        <D.27001>:
        <D.26991>:
        <D.26981>:
      }
      D.25989 = __result;
    }
    iftmp.11 = -D.25989;
    goto <D.27008>;
    <D.26971>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.11 = __builtin_strcmp (D.26777, "--breakonex");
    <D.27008>:
    D.25990 = iftmp.11;
  }
  if (D.25990 == 0) goto <D.27009>; else goto <D.27010>;
  <D.27009>:
  {
    struct MonoDebugOptions * opt;

    opt = mini_get_debug_options ();
    opt->break_on_exc = 1;
  }
  goto <D.27011>;
  <D.27010>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 7;
    if (__s2_len <= 3) goto <D.27013>; else goto <D.27014>;
    <D.27013>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.27015 = "--stats";
      D.27016 = MEM[(const unsigned char *)D.27015];
      D.27017 = (int) D.27016;
      D.27018 = *__s2;
      D.27019 = (int) D.27018;
      __result = D.27017 - D.27019;
      {
        D.27020 = __s2_len != 0;
        D.27021 = __result == 0;
        D.27022 = D.27020 & D.27021;
        if (D.27022 != 0) goto <D.27023>; else goto <D.27024>;
        <D.27023>:
        D.27025 = &MEM[(void *)"--stats" + 1B];
        D.27026 = *D.27025;
        D.27027 = (int) D.27026;
        D.27028 = __s2 + 1;
        D.27029 = *D.27028;
        D.27030 = (int) D.27029;
        __result = D.27027 - D.27030;
        D.27031 = __s2_len > 1;
        D.27021 = __result == 0;
        D.27032 = D.27031 & D.27021;
        if (D.27032 != 0) goto <D.27033>; else goto <D.27034>;
        <D.27033>:
        D.27035 = &MEM[(void *)"--stats" + 2B];
        D.27036 = *D.27035;
        D.27037 = (int) D.27036;
        D.27038 = __s2 + 2;
        D.27039 = *D.27038;
        D.27040 = (int) D.27039;
        __result = D.27037 - D.27040;
        D.27041 = __s2_len > 2;
        D.27021 = __result == 0;
        D.27042 = D.27041 & D.27021;
        if (D.27042 != 0) goto <D.27043>; else goto <D.27044>;
        <D.27043>:
        D.27045 = &MEM[(void *)"--stats" + 3B];
        D.27046 = *D.27045;
        D.27047 = (int) D.27046;
        D.27048 = __s2 + 3;
        D.27049 = *D.27048;
        D.27050 = (int) D.27049;
        __result = D.27047 - D.27050;
        <D.27044>:
        <D.27034>:
        <D.27024>:
      }
      D.25999 = __result;
    }
    iftmp.12 = -D.25999;
    goto <D.27051>;
    <D.27014>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.12 = __builtin_strcmp (D.26777, "--stats");
    <D.27051>:
    D.26000 = iftmp.12;
  }
  if (D.26000 == 0) goto <D.27052>; else goto <D.27053>;
  <D.27052>:
  mono_counters_enable (-1);
  mono_stats.enabled = 1;
  mono_jit_stats.enabled = 1;
  goto <D.27054>;
  <D.27053>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 7;
    if (__s2_len <= 3) goto <D.27056>; else goto <D.27057>;
    <D.27056>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.27058 = "--break";
      D.27059 = MEM[(const unsigned char *)D.27058];
      D.27060 = (int) D.27059;
      D.27061 = *__s2;
      D.27062 = (int) D.27061;
      __result = D.27060 - D.27062;
      {
        D.27063 = __s2_len != 0;
        D.27064 = __result == 0;
        D.27065 = D.27063 & D.27064;
        if (D.27065 != 0) goto <D.27066>; else goto <D.27067>;
        <D.27066>:
        D.27068 = &MEM[(void *)"--break" + 1B];
        D.27069 = *D.27068;
        D.27070 = (int) D.27069;
        D.27071 = __s2 + 1;
        D.27072 = *D.27071;
        D.27073 = (int) D.27072;
        __result = D.27070 - D.27073;
        D.27074 = __s2_len > 1;
        D.27064 = __result == 0;
        D.27075 = D.27074 & D.27064;
        if (D.27075 != 0) goto <D.27076>; else goto <D.27077>;
        <D.27076>:
        D.27078 = &MEM[(void *)"--break" + 2B];
        D.27079 = *D.27078;
        D.27080 = (int) D.27079;
        D.27081 = __s2 + 2;
        D.27082 = *D.27081;
        D.27083 = (int) D.27082;
        __result = D.27080 - D.27083;
        D.27084 = __s2_len > 2;
        D.27064 = __result == 0;
        D.27085 = D.27084 & D.27064;
        if (D.27085 != 0) goto <D.27086>; else goto <D.27087>;
        <D.27086>:
        D.27088 = &MEM[(void *)"--break" + 3B];
        D.27089 = *D.27088;
        D.27090 = (int) D.27089;
        D.27091 = __s2 + 3;
        D.27092 = *D.27091;
        D.27093 = (int) D.27092;
        __result = D.27090 - D.27093;
        <D.27087>:
        <D.27077>:
        <D.27067>:
      }
      D.26008 = __result;
    }
    iftmp.13 = -D.26008;
    goto <D.27094>;
    <D.27057>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.13 = __builtin_strcmp (D.26777, "--break");
    <D.27094>:
    D.26009 = iftmp.13;
  }
  if (D.26009 == 0) goto <D.27095>; else goto <D.27096>;
  <D.27095>:
  D.27097 = i + 1;
  if (D.27097 >= argc) goto <D.27098>; else goto <D.27099>;
  <D.27098>:
  stderr.14 = stderr;
  fprintf (stderr.14, "Missing method name in --break command line option\n");
  exit (1);
  <D.27099>:
  i = i + 1;
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  D.27101 = mono_debugger_insert_breakpoint (D.26777, 0);
  if (D.27101 == 0) goto <D.27102>; else goto <D.27103>;
  <D.27102>:
  stderr.14 = stderr;
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  fprintf (stderr.14, "Error: invalid method name \'%s\'\n", D.26777);
  <D.27103>:
  goto <D.27104>;
  <D.27096>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 6;
    if (__s2_len <= 3) goto <D.27106>; else goto <D.27107>;
    <D.27106>:
    {
      const unsigned char * __s2;
      int __result;

      i.6 = (unsigned int) i;
      D.26775 = i.6 * 4;
      D.26776 = argv + D.26775;
      __s2 = *D.26776;
      D.27108 = "--llvm";
      D.27109 = MEM[(const unsigned char *)D.27108];
      D.27110 = (int) D.27109;
      D.27111 = *__s2;
      D.27112 = (int) D.27111;
      __result = D.27110 - D.27112;
      {
        D.27113 = __s2_len != 0;
        D.27114 = __result == 0;
        D.27115 = D.27113 & D.27114;
        if (D.27115 != 0) goto <D.27116>; else goto <D.27117>;
        <D.27116>:
        D.27118 = &MEM[(void *)"--llvm" + 1B];
        D.27119 = *D.27118;
        D.27120 = (int) D.27119;
        D.27121 = __s2 + 1;
        D.27122 = *D.27121;
        D.27123 = (int) D.27122;
        __result = D.27120 - D.27123;
        D.27124 = __s2_len > 1;
        D.27114 = __result == 0;
        D.27125 = D.27124 & D.27114;
        if (D.27125 != 0) goto <D.27126>; else goto <D.27127>;
        <D.27126>:
        D.27128 = &MEM[(void *)"--llvm" + 2B];
        D.27129 = *D.27128;
        D.27130 = (int) D.27129;
        D.27131 = __s2 + 2;
        D.27132 = *D.27131;
        D.27133 = (int) D.27132;
        __result = D.27130 - D.27133;
        D.27134 = __s2_len > 2;
        D.27114 = __result == 0;
        D.27135 = D.27134 & D.27114;
        if (D.27135 != 0) goto <D.27136>; else goto <D.27137>;
        <D.27136>:
        D.27138 = &MEM[(void *)"--llvm" + 3B];
        D.27139 = *D.27138;
        D.27140 = (int) D.27139;
        D.27141 = __s2 + 3;
        D.27142 = *D.27141;
        D.27143 = (int) D.27142;
        __result = D.27140 - D.27143;
        <D.27137>:
        <D.27127>:
        <D.27117>:
      }
      D.26017 = __result;
    }
    iftmp.15 = -D.26017;
    goto <D.27144>;
    <D.27107>:
    i.6 = (unsigned int) i;
    D.26775 = i.6 * 4;
    D.26776 = argv + D.26775;
    D.26777 = *D.26776;
    iftmp.15 = __builtin_strcmp (D.26777, "--llvm");
    <D.27144>:
    D.26018 = iftmp.15;
  }
  if (D.26018 == 0) goto <D.27145>; else goto <D.27146>;
  <D.27145>:
  stderr.14 = stderr;
  fprintf (stderr.14, "Mono Warning: --llvm not enabled in this runtime.\n");
  goto <D.27147>;
  <D.27146>:
  stderr.14 = stderr;
  i.6 = (unsigned int) i;
  D.26775 = i.6 * 4;
  D.26776 = argv + D.26775;
  D.26777 = *D.26776;
  fprintf (stderr.14, "Unsupported command line option: \'%s\'\n", D.26777);
  exit (1);
  <D.27147>:
  <D.27104>:
  <D.27054>:
  <D.27011>:
  <D.26887>:
  <D.26884>:
  <D.26880>:
  <D.26837>:
  <D.26832>:
  <D.26827>:
  <D.26784>:
  i = i + 1;
  <D.26020>:
  if (i < argc) goto <D.26019>; else goto <D.25905>;
  <D.25905>:
  if (trace_options != 0B) goto <D.27148>; else goto <D.27149>;
  <D.27148>:
  mono_jit_trace_calls.16 = mono_trace_parse_options (trace_options);
  mono_jit_trace_calls = mono_jit_trace_calls.16;
  mono_jit_trace_calls.17 = mono_jit_trace_calls;
  if (mono_jit_trace_calls.17 == 0B) goto <D.27152>; else goto <D.27153>;
  <D.27152>:
  exit (1);
  <D.27153>:
  <D.27149>:
  if (mini_verbose != 0) goto <D.27154>; else goto <D.27155>;
  <D.27154>:
  mini_verbose.18 = (unsigned int) mini_verbose;
  mono_set_verbose_level (mini_verbose.18);
  <D.27155>:
}


mono_main (int argc, char * * argv)
{
  const gchar * D.27157;
  unsigned int i.19;
  unsigned int D.27165;
  char * * D.27166;
  char * D.27167;
  char D.27168;
  int D.26077;
  int iftmp.20;
  int D.26076;
  const char[13] * D.27173;
  unsigned char D.27174;
  int D.27175;
  unsigned char D.27176;
  int D.27177;
  _Bool D.27178;
  _Bool D.27179;
  _Bool D.27180;
  const unsigned char * D.27183;
  unsigned char D.27184;
  int D.27185;
  const unsigned char * D.27186;
  unsigned char D.27187;
  int D.27188;
  _Bool D.27189;
  _Bool D.27190;
  const unsigned char * D.27193;
  unsigned char D.27194;
  int D.27195;
  const unsigned char * D.27196;
  unsigned char D.27197;
  int D.27198;
  _Bool D.27199;
  _Bool D.27200;
  const unsigned char * D.27203;
  unsigned char D.27204;
  int D.27205;
  const unsigned char * D.27206;
  unsigned char D.27207;
  int D.27208;
  int D.27213;
  char * D.27216;
  unsigned int mono_single_method_regression_opt.21;
  int D.26096;
  int iftmp.22;
  int D.26095;
  const char[10] * D.27225;
  unsigned char D.27226;
  int D.27227;
  unsigned char D.27228;
  int D.27229;
  _Bool D.27230;
  _Bool D.27231;
  _Bool D.27232;
  const unsigned char * D.27235;
  unsigned char D.27236;
  int D.27237;
  const unsigned char * D.27238;
  unsigned char D.27239;
  int D.27240;
  _Bool D.27241;
  _Bool D.27242;
  const unsigned char * D.27245;
  unsigned char D.27246;
  int D.27247;
  const unsigned char * D.27248;
  unsigned char D.27249;
  int D.27250;
  _Bool D.27251;
  _Bool D.27252;
  const unsigned char * D.27255;
  unsigned char D.27256;
  int D.27257;
  const unsigned char * D.27258;
  unsigned char D.27259;
  int D.27260;
  int D.26105;
  int iftmp.23;
  int D.26104;
  const char[3] * D.27266;
  unsigned char D.27267;
  int D.27268;
  unsigned char D.27269;
  int D.27270;
  _Bool D.27271;
  _Bool D.27272;
  _Bool D.27273;
  const unsigned char * D.27276;
  unsigned char D.27277;
  int D.27278;
  const unsigned char * D.27279;
  unsigned char D.27280;
  int D.27281;
  _Bool D.27282;
  _Bool D.27283;
  const unsigned char * D.27286;
  unsigned char D.27287;
  int D.27288;
  const unsigned char * D.27289;
  unsigned char D.27290;
  int D.27291;
  _Bool D.27292;
  _Bool D.27293;
  const unsigned char * D.27296;
  unsigned char D.27297;
  int D.27298;
  const unsigned char * D.27299;
  unsigned char D.27300;
  int D.27301;
  int D.26114;
  int iftmp.24;
  int D.26113;
  const char[10] * D.27308;
  unsigned char D.27309;
  int D.27310;
  unsigned char D.27311;
  int D.27312;
  _Bool D.27313;
  _Bool D.27314;
  _Bool D.27315;
  const unsigned char * D.27318;
  unsigned char D.27319;
  int D.27320;
  const unsigned char * D.27321;
  unsigned char D.27322;
  int D.27323;
  _Bool D.27324;
  _Bool D.27325;
  const unsigned char * D.27328;
  unsigned char D.27329;
  int D.27330;
  const unsigned char * D.27331;
  unsigned char D.27332;
  int D.27333;
  _Bool D.27334;
  _Bool D.27335;
  const unsigned char * D.27338;
  unsigned char D.27339;
  int D.27340;
  const unsigned char * D.27341;
  unsigned char D.27342;
  int D.27343;
  int D.26123;
  int iftmp.25;
  int D.26122;
  const char[3] * D.27349;
  unsigned char D.27350;
  int D.27351;
  unsigned char D.27352;
  int D.27353;
  _Bool D.27354;
  _Bool D.27355;
  _Bool D.27356;
  const unsigned char * D.27359;
  unsigned char D.27360;
  int D.27361;
  const unsigned char * D.27362;
  unsigned char D.27363;
  int D.27364;
  _Bool D.27365;
  _Bool D.27366;
  const unsigned char * D.27369;
  unsigned char D.27370;
  int D.27371;
  const unsigned char * D.27372;
  unsigned char D.27373;
  int D.27374;
  _Bool D.27375;
  _Bool D.27376;
  const unsigned char * D.27379;
  unsigned char D.27380;
  int D.27381;
  const unsigned char * D.27382;
  unsigned char D.27383;
  int D.27384;
  const char * iftmp.26;
  struct MonoImage * D.27389;
  int D.27395;
  int D.26136;
  int iftmp.27;
  int D.26135;
  const char[7] * D.27401;
  unsigned char D.27402;
  int D.27403;
  unsigned char D.27404;
  int D.27405;
  _Bool D.27406;
  _Bool D.27407;
  _Bool D.27408;
  const unsigned char * D.27411;
  unsigned char D.27412;
  int D.27413;
  const unsigned char * D.27414;
  unsigned char D.27415;
  int D.27416;
  _Bool D.27417;
  _Bool D.27418;
  const unsigned char * D.27421;
  unsigned char D.27422;
  int D.27423;
  const unsigned char * D.27424;
  unsigned char D.27425;
  int D.27426;
  _Bool D.27427;
  _Bool D.27428;
  const unsigned char * D.27431;
  unsigned char D.27432;
  int D.27433;
  const unsigned char * D.27434;
  unsigned char D.27435;
  int D.27436;
  int D.26145;
  int iftmp.28;
  int D.26144;
  const char[3] * D.27442;
  unsigned char D.27443;
  int D.27444;
  unsigned char D.27445;
  int D.27446;
  _Bool D.27447;
  _Bool D.27448;
  _Bool D.27449;
  const unsigned char * D.27452;
  unsigned char D.27453;
  int D.27454;
  const unsigned char * D.27455;
  unsigned char D.27456;
  int D.27457;
  _Bool D.27458;
  _Bool D.27459;
  const unsigned char * D.27462;
  unsigned char D.27463;
  int D.27464;
  const unsigned char * D.27465;
  unsigned char D.27466;
  int D.27467;
  _Bool D.27468;
  _Bool D.27469;
  const unsigned char * D.27472;
  unsigned char D.27473;
  int D.27474;
  const unsigned char * D.27475;
  unsigned char D.27476;
  int D.27477;
  int D.26154;
  int iftmp.29;
  int D.26153;
  const char[13] * D.27482;
  unsigned char D.27483;
  int D.27484;
  unsigned char D.27485;
  int D.27486;
  _Bool D.27487;
  _Bool D.27488;
  _Bool D.27489;
  const unsigned char * D.27492;
  unsigned char D.27493;
  int D.27494;
  const unsigned char * D.27495;
  unsigned char D.27496;
  int D.27497;
  _Bool D.27498;
  _Bool D.27499;
  const unsigned char * D.27502;
  unsigned char D.27503;
  int D.27504;
  const unsigned char * D.27505;
  unsigned char D.27506;
  int D.27507;
  _Bool D.27508;
  _Bool D.27509;
  const unsigned char * D.27512;
  unsigned char D.27513;
  int D.27514;
  const unsigned char * D.27515;
  unsigned char D.27516;
  int D.27517;
  int D.26163;
  int iftmp.30;
  int D.26162;
  const char[13] * D.27524;
  unsigned char D.27525;
  int D.27526;
  unsigned char D.27527;
  int D.27528;
  _Bool D.27529;
  _Bool D.27530;
  _Bool D.27531;
  const unsigned char * D.27534;
  unsigned char D.27535;
  int D.27536;
  const unsigned char * D.27537;
  unsigned char D.27538;
  int D.27539;
  _Bool D.27540;
  _Bool D.27541;
  const unsigned char * D.27544;
  unsigned char D.27545;
  int D.27546;
  const unsigned char * D.27547;
  unsigned char D.27548;
  int D.27549;
  _Bool D.27550;
  _Bool D.27551;
  const unsigned char * D.27554;
  unsigned char D.27555;
  int D.27556;
  const unsigned char * D.27557;
  unsigned char D.27558;
  int D.27559;
  int D.26172;
  int iftmp.31;
  int D.26171;
  const char[13] * D.27566;
  unsigned char D.27567;
  int D.27568;
  unsigned char D.27569;
  int D.27570;
  _Bool D.27571;
  _Bool D.27572;
  _Bool D.27573;
  const unsigned char * D.27576;
  unsigned char D.27577;
  int D.27578;
  const unsigned char * D.27579;
  unsigned char D.27580;
  int D.27581;
  _Bool D.27582;
  _Bool D.27583;
  const unsigned char * D.27586;
  unsigned char D.27587;
  int D.27588;
  const unsigned char * D.27589;
  unsigned char D.27590;
  int D.27591;
  _Bool D.27592;
  _Bool D.27593;
  const unsigned char * D.27596;
  unsigned char D.27597;
  int D.27598;
  const unsigned char * D.27599;
  unsigned char D.27600;
  int D.27601;
  int D.26181;
  int iftmp.32;
  int D.26180;
  const char[11] * D.27608;
  unsigned char D.27609;
  int D.27610;
  unsigned char D.27611;
  int D.27612;
  _Bool D.27613;
  _Bool D.27614;
  _Bool D.27615;
  const unsigned char * D.27618;
  unsigned char D.27619;
  int D.27620;
  const unsigned char * D.27621;
  unsigned char D.27622;
  int D.27623;
  _Bool D.27624;
  _Bool D.27625;
  const unsigned char * D.27628;
  unsigned char D.27629;
  int D.27630;
  const unsigned char * D.27631;
  unsigned char D.27632;
  int D.27633;
  _Bool D.27634;
  _Bool D.27635;
  const unsigned char * D.27638;
  unsigned char D.27639;
  int D.27640;
  const unsigned char * D.27641;
  unsigned char D.27642;
  int D.27643;
  int D.27647;
  int D.27650;
  struct _IO_FILE * stderr.33;
  struct FILE * mini_stats_fd.34;
  int D.27656;
  const char * D.27659;
  int D.27661;
  const char * D.27664;
  int D.26217;
  int iftmp.35;
  int D.26216;
  const char[10] * D.27669;
  unsigned char D.27670;
  int D.27671;
  unsigned char D.27672;
  int D.27673;
  _Bool D.27674;
  _Bool D.27675;
  _Bool D.27676;
  const unsigned char * D.27679;
  unsigned char D.27680;
  int D.27681;
  const unsigned char * D.27682;
  unsigned char D.27683;
  int D.27684;
  _Bool D.27685;
  _Bool D.27686;
  const unsigned char * D.27689;
  unsigned char D.27690;
  int D.27691;
  const unsigned char * D.27692;
  unsigned char D.27693;
  int D.27694;
  _Bool D.27695;
  _Bool D.27696;
  const unsigned char * D.27699;
  unsigned char D.27700;
  int D.27701;
  const unsigned char * D.27702;
  unsigned char D.27703;
  int D.27704;
  int D.26226;
  int iftmp.36;
  int D.26225;
  const char[11] * D.27712;
  unsigned char D.27713;
  int D.27714;
  unsigned char D.27715;
  int D.27716;
  _Bool D.27717;
  _Bool D.27718;
  _Bool D.27719;
  const unsigned char * D.27722;
  unsigned char D.27723;
  int D.27724;
  const unsigned char * D.27725;
  unsigned char D.27726;
  int D.27727;
  _Bool D.27728;
  _Bool D.27729;
  const unsigned char * D.27732;
  unsigned char D.27733;
  int D.27734;
  const unsigned char * D.27735;
  unsigned char D.27736;
  int D.27737;
  _Bool D.27738;
  _Bool D.27739;
  const unsigned char * D.27742;
  unsigned char D.27743;
  int D.27744;
  const unsigned char * D.27745;
  unsigned char D.27746;
  int D.27747;
  int D.26235;
  int iftmp.37;
  int D.26234;
  const char[9] * D.27755;
  unsigned char D.27756;
  int D.27757;
  unsigned char D.27758;
  int D.27759;
  _Bool D.27760;
  _Bool D.27761;
  _Bool D.27762;
  const unsigned char * D.27765;
  unsigned char D.27766;
  int D.27767;
  const unsigned char * D.27768;
  unsigned char D.27769;
  int D.27770;
  _Bool D.27771;
  _Bool D.27772;
  const unsigned char * D.27775;
  unsigned char D.27776;
  int D.27777;
  const unsigned char * D.27778;
  unsigned char D.27779;
  int D.27780;
  _Bool D.27781;
  _Bool D.27782;
  const unsigned char * D.27785;
  unsigned char D.27786;
  int D.27787;
  const unsigned char * D.27788;
  unsigned char D.27789;
  int D.27790;
  int D.26244;
  int iftmp.38;
  int D.26243;
  const char[11] * D.27800;
  unsigned char D.27801;
  int D.27802;
  unsigned char D.27803;
  int D.27804;
  _Bool D.27805;
  _Bool D.27806;
  _Bool D.27807;
  const unsigned char * D.27810;
  unsigned char D.27811;
  int D.27812;
  const unsigned char * D.27813;
  unsigned char D.27814;
  int D.27815;
  _Bool D.27816;
  _Bool D.27817;
  const unsigned char * D.27820;
  unsigned char D.27821;
  int D.27822;
  const unsigned char * D.27823;
  unsigned char D.27824;
  int D.27825;
  _Bool D.27826;
  _Bool D.27827;
  const unsigned char * D.27830;
  unsigned char D.27831;
  int D.27832;
  const unsigned char * D.27833;
  unsigned char D.27834;
  int D.27835;
  int D.26253;
  int iftmp.39;
  int D.26252;
  const char[8] * D.27845;
  unsigned char D.27846;
  int D.27847;
  unsigned char D.27848;
  int D.27849;
  _Bool D.27850;
  _Bool D.27851;
  _Bool D.27852;
  const unsigned char * D.27855;
  unsigned char D.27856;
  int D.27857;
  const unsigned char * D.27858;
  unsigned char D.27859;
  int D.27860;
  _Bool D.27861;
  _Bool D.27862;
  const unsigned char * D.27865;
  unsigned char D.27866;
  int D.27867;
  const unsigned char * D.27868;
  unsigned char D.27869;
  int D.27870;
  _Bool D.27871;
  _Bool D.27872;
  const unsigned char * D.27875;
  unsigned char D.27876;
  int D.27877;
  const unsigned char * D.27878;
  unsigned char D.27879;
  int D.27880;
  int D.27885;
  int D.26271;
  int iftmp.40;
  int D.26270;
  const char[12] * D.27892;
  unsigned char D.27893;
  int D.27894;
  unsigned char D.27895;
  int D.27896;
  _Bool D.27897;
  _Bool D.27898;
  _Bool D.27899;
  const unsigned char * D.27902;
  unsigned char D.27903;
  int D.27904;
  const unsigned char * D.27905;
  unsigned char D.27906;
  int D.27907;
  _Bool D.27908;
  _Bool D.27909;
  const unsigned char * D.27912;
  unsigned char D.27913;
  int D.27914;
  const unsigned char * D.27915;
  unsigned char D.27916;
  int D.27917;
  _Bool D.27918;
  _Bool D.27919;
  const unsigned char * D.27922;
  unsigned char D.27923;
  int D.27924;
  const unsigned char * D.27925;
  unsigned char D.27926;
  int D.27927;
  int D.26281;
  int iftmp.41;
  int D.26280;
  const char[8] * D.27935;
  unsigned char D.27936;
  int D.27937;
  unsigned char D.27938;
  int D.27939;
  _Bool D.27940;
  _Bool D.27941;
  _Bool D.27942;
  const unsigned char * D.27945;
  unsigned char D.27946;
  int D.27947;
  const unsigned char * D.27948;
  unsigned char D.27949;
  int D.27950;
  _Bool D.27951;
  _Bool D.27952;
  const unsigned char * D.27955;
  unsigned char D.27956;
  int D.27957;
  const unsigned char * D.27958;
  unsigned char D.27959;
  int D.27960;
  _Bool D.27961;
  _Bool D.27962;
  const unsigned char * D.27965;
  unsigned char D.27966;
  int D.27967;
  const unsigned char * D.27968;
  unsigned char D.27969;
  int D.27970;
  int D.27976;
  int D.26290;
  int iftmp.42;
  int D.26289;
  const char[14] * D.27983;
  unsigned char D.27984;
  int D.27985;
  unsigned char D.27986;
  int D.27987;
  _Bool D.27988;
  _Bool D.27989;
  _Bool D.27990;
  const unsigned char * D.27993;
  unsigned char D.27994;
  int D.27995;
  const unsigned char * D.27996;
  unsigned char D.27997;
  int D.27998;
  _Bool D.27999;
  _Bool D.28000;
  const unsigned char * D.28003;
  unsigned char D.28004;
  int D.28005;
  const unsigned char * D.28006;
  unsigned char D.28007;
  int D.28008;
  _Bool D.28009;
  _Bool D.28010;
  const unsigned char * D.28013;
  unsigned char D.28014;
  int D.28015;
  const unsigned char * D.28016;
  unsigned char D.28017;
  int D.28018;
  int D.28022;
  struct MonoMethodDesc * mono_break_at_bb_method.43;
  struct MonoMethodDesc * mono_break_at_bb_method.44;
  int mono_break_at_bb_bb_num.45;
  int D.26299;
  int iftmp.46;
  int D.26298;
  const char[19] * D.28034;
  unsigned char D.28035;
  int D.28036;
  unsigned char D.28037;
  int D.28038;
  _Bool D.28039;
  _Bool D.28040;
  _Bool D.28041;
  const unsigned char * D.28044;
  unsigned char D.28045;
  int D.28046;
  const unsigned char * D.28047;
  unsigned char D.28048;
  int D.28049;
  _Bool D.28050;
  _Bool D.28051;
  const unsigned char * D.28054;
  unsigned char D.28055;
  int D.28056;
  const unsigned char * D.28057;
  unsigned char D.28058;
  int D.28059;
  _Bool D.28060;
  _Bool D.28061;
  const unsigned char * D.28064;
  unsigned char D.28065;
  int D.28066;
  const unsigned char * D.28067;
  unsigned char D.28068;
  int D.28069;
  struct MonoMethodDesc * mono_inject_async_exc_method.47;
  struct MonoMethodDesc * mono_inject_async_exc_method.48;
  int mono_inject_async_exc_pos.49;
  int D.26308;
  int iftmp.50;
  int D.26307;
  const char[13] * D.28084;
  unsigned char D.28085;
  int D.28086;
  unsigned char D.28087;
  int D.28088;
  _Bool D.28089;
  _Bool D.28090;
  _Bool D.28091;
  const unsigned char * D.28094;
  unsigned char D.28095;
  int D.28096;
  const unsigned char * D.28097;
  unsigned char D.28098;
  int D.28099;
  _Bool D.28100;
  _Bool D.28101;
  const unsigned char * D.28104;
  unsigned char D.28105;
  int D.28106;
  const unsigned char * D.28107;
  unsigned char D.28108;
  int D.28109;
  _Bool D.28110;
  _Bool D.28111;
  const unsigned char * D.28114;
  unsigned char D.28115;
  int D.28116;
  const unsigned char * D.28117;
  unsigned char D.28118;
  int D.28119;
  int D.26317;
  int iftmp.51;
  int D.26316;
  const char[11] * D.28127;
  unsigned char D.28128;
  int D.28129;
  unsigned char D.28130;
  int D.28131;
  _Bool D.28132;
  _Bool D.28133;
  _Bool D.28134;
  const unsigned char * D.28137;
  unsigned char D.28138;
  int D.28139;
  const unsigned char * D.28140;
  unsigned char D.28141;
  int D.28142;
  _Bool D.28143;
  _Bool D.28144;
  const unsigned char * D.28147;
  unsigned char D.28148;
  int D.28149;
  const unsigned char * D.28150;
  unsigned char D.28151;
  int D.28152;
  _Bool D.28153;
  _Bool D.28154;
  const unsigned char * D.28157;
  unsigned char D.28158;
  int D.28159;
  const unsigned char * D.28160;
  unsigned char D.28161;
  int D.28162;
  int D.26326;
  int iftmp.52;
  int D.26325;
  const char[15] * D.28170;
  unsigned char D.28171;
  int D.28172;
  unsigned char D.28173;
  int D.28174;
  _Bool D.28175;
  _Bool D.28176;
  _Bool D.28177;
  const unsigned char * D.28180;
  unsigned char D.28181;
  int D.28182;
  const unsigned char * D.28183;
  unsigned char D.28184;
  int D.28185;
  _Bool D.28186;
  _Bool D.28187;
  const unsigned char * D.28190;
  unsigned char D.28191;
  int D.28192;
  const unsigned char * D.28193;
  unsigned char D.28194;
  int D.28195;
  _Bool D.28196;
  _Bool D.28197;
  const unsigned char * D.28200;
  unsigned char D.28201;
  int D.28202;
  const unsigned char * D.28203;
  unsigned char D.28204;
  int D.28205;
  int D.26335;
  int iftmp.53;
  int D.26334;
  const char[8] * D.28213;
  unsigned char D.28214;
  int D.28215;
  unsigned char D.28216;
  int D.28217;
  _Bool D.28218;
  _Bool D.28219;
  _Bool D.28220;
  const unsigned char * D.28223;
  unsigned char D.28224;
  int D.28225;
  const unsigned char * D.28226;
  unsigned char D.28227;
  int D.28228;
  _Bool D.28229;
  _Bool D.28230;
  const unsigned char * D.28233;
  unsigned char D.28234;
  int D.28235;
  const unsigned char * D.28236;
  unsigned char D.28237;
  int D.28238;
  _Bool D.28239;
  _Bool D.28240;
  const unsigned char * D.28243;
  unsigned char D.28244;
  int D.28245;
  const unsigned char * D.28246;
  unsigned char D.28247;
  int D.28248;
  int D.26344;
  int iftmp.54;
  int D.26343;
  const char[6] * D.28256;
  unsigned char D.28257;
  int D.28258;
  unsigned char D.28259;
  int D.28260;
  _Bool D.28261;
  _Bool D.28262;
  _Bool D.28263;
  const unsigned char * D.28266;
  unsigned char D.28267;
  int D.28268;
  const unsigned char * D.28269;
  unsigned char D.28270;
  int D.28271;
  _Bool D.28272;
  _Bool D.28273;
  const unsigned char * D.28276;
  unsigned char D.28277;
  int D.28278;
  const unsigned char * D.28279;
  unsigned char D.28280;
  int D.28281;
  _Bool D.28282;
  _Bool D.28283;
  const unsigned char * D.28286;
  unsigned char D.28287;
  int D.28288;
  const unsigned char * D.28289;
  unsigned char D.28290;
  int D.28291;
  int D.28296;
  int D.28300;
  const char * D.28303;
  int D.28304;
  int D.26371;
  int iftmp.55;
  int D.26370;
  const char[14] * D.28309;
  unsigned char D.28310;
  int D.28311;
  unsigned char D.28312;
  int D.28313;
  _Bool D.28314;
  _Bool D.28315;
  _Bool D.28316;
  const unsigned char * D.28319;
  unsigned char D.28320;
  int D.28321;
  const unsigned char * D.28322;
  unsigned char D.28323;
  int D.28324;
  _Bool D.28325;
  _Bool D.28326;
  const unsigned char * D.28329;
  unsigned char D.28330;
  int D.28331;
  const unsigned char * D.28332;
  unsigned char D.28333;
  int D.28334;
  _Bool D.28335;
  _Bool D.28336;
  const unsigned char * D.28339;
  unsigned char D.28340;
  int D.28341;
  const unsigned char * D.28342;
  unsigned char D.28343;
  int D.28344;
  int D.28349;
  int D.26389;
  int iftmp.56;
  int D.26388;
  const char[9] * D.28356;
  unsigned char D.28357;
  int D.28358;
  unsigned char D.28359;
  int D.28360;
  _Bool D.28361;
  _Bool D.28362;
  _Bool D.28363;
  const unsigned char * D.28366;
  unsigned char D.28367;
  int D.28368;
  const unsigned char * D.28369;
  unsigned char D.28370;
  int D.28371;
  _Bool D.28372;
  _Bool D.28373;
  const unsigned char * D.28376;
  unsigned char D.28377;
  int D.28378;
  const unsigned char * D.28379;
  unsigned char D.28380;
  int D.28381;
  _Bool D.28382;
  _Bool D.28383;
  const unsigned char * D.28386;
  unsigned char D.28387;
  int D.28388;
  const unsigned char * D.28389;
  unsigned char D.28390;
  int D.28391;
  int D.26398;
  int iftmp.57;
  int D.26397;
  const char[10] * D.28399;
  unsigned char D.28400;
  int D.28401;
  unsigned char D.28402;
  int D.28403;
  _Bool D.28404;
  _Bool D.28405;
  _Bool D.28406;
  const unsigned char * D.28409;
  unsigned char D.28410;
  int D.28411;
  const unsigned char * D.28412;
  unsigned char D.28413;
  int D.28414;
  _Bool D.28415;
  _Bool D.28416;
  const unsigned char * D.28419;
  unsigned char D.28420;
  int D.28421;
  const unsigned char * D.28422;
  unsigned char D.28423;
  int D.28424;
  _Bool D.28425;
  _Bool D.28426;
  const unsigned char * D.28429;
  unsigned char D.28430;
  int D.28431;
  const unsigned char * D.28432;
  unsigned char D.28433;
  int D.28434;
  int D.28439;
  int D.28443;
  void * D.28448;
  int D.28450;
  int D.26434;
  int iftmp.58;
  int D.26433;
  const char[10] * D.28457;
  unsigned char D.28458;
  int D.28459;
  unsigned char D.28460;
  int D.28461;
  _Bool D.28462;
  _Bool D.28463;
  _Bool D.28464;
  const unsigned char * D.28467;
  unsigned char D.28468;
  int D.28469;
  const unsigned char * D.28470;
  unsigned char D.28471;
  int D.28472;
  _Bool D.28473;
  _Bool D.28474;
  const unsigned char * D.28477;
  unsigned char D.28478;
  int D.28479;
  const unsigned char * D.28480;
  unsigned char D.28481;
  int D.28482;
  _Bool D.28483;
  _Bool D.28484;
  const unsigned char * D.28487;
  unsigned char D.28488;
  int D.28489;
  const unsigned char * D.28490;
  unsigned char D.28491;
  int D.28492;
  int D.28499;
  const char * D.28504;
  int D.26452;
  int iftmp.59;
  int D.26451;
  const char[8] * D.28509;
  unsigned char D.28510;
  int D.28511;
  unsigned char D.28512;
  int D.28513;
  _Bool D.28514;
  _Bool D.28515;
  _Bool D.28516;
  const unsigned char * D.28519;
  unsigned char D.28520;
  int D.28521;
  const unsigned char * D.28522;
  unsigned char D.28523;
  int D.28524;
  _Bool D.28525;
  _Bool D.28526;
  const unsigned char * D.28529;
  unsigned char D.28530;
  int D.28531;
  const unsigned char * D.28532;
  unsigned char D.28533;
  int D.28534;
  _Bool D.28535;
  _Bool D.28536;
  const unsigned char * D.28539;
  unsigned char D.28540;
  int D.28541;
  const unsigned char * D.28542;
  unsigned char D.28543;
  int D.28544;
  int D.26461;
  int iftmp.60;
  int D.26460;
  const char[8] * D.28554;
  unsigned char D.28555;
  int D.28556;
  unsigned char D.28557;
  int D.28558;
  _Bool D.28559;
  _Bool D.28560;
  _Bool D.28561;
  const unsigned char * D.28564;
  unsigned char D.28565;
  int D.28566;
  const unsigned char * D.28567;
  unsigned char D.28568;
  int D.28569;
  _Bool D.28570;
  _Bool D.28571;
  const unsigned char * D.28574;
  unsigned char D.28575;
  int D.28576;
  const unsigned char * D.28577;
  unsigned char D.28578;
  int D.28579;
  _Bool D.28580;
  _Bool D.28581;
  const unsigned char * D.28584;
  unsigned char D.28585;
  int D.28586;
  const unsigned char * D.28587;
  unsigned char D.28588;
  int D.28589;
  int D.28594;
  int D.28597;
  int D.28601;
  char * D.28604;
  int D.26489;
  int iftmp.61;
  int D.26488;
  const char[11] * D.28609;
  unsigned char D.28610;
  int D.28611;
  unsigned char D.28612;
  int D.28613;
  _Bool D.28614;
  _Bool D.28615;
  _Bool D.28616;
  const unsigned char * D.28619;
  unsigned char D.28620;
  int D.28621;
  const unsigned char * D.28622;
  unsigned char D.28623;
  int D.28624;
  _Bool D.28625;
  _Bool D.28626;
  const unsigned char * D.28629;
  unsigned char D.28630;
  int D.28631;
  const unsigned char * D.28632;
  unsigned char D.28633;
  int D.28634;
  _Bool D.28635;
  _Bool D.28636;
  const unsigned char * D.28639;
  unsigned char D.28640;
  int D.28641;
  const unsigned char * D.28642;
  unsigned char D.28643;
  int D.28644;
  int D.28649;
  int D.26507;
  int iftmp.62;
  int D.26506;
  const char[20] * D.28655;
  unsigned char D.28656;
  int D.28657;
  unsigned char D.28658;
  int D.28659;
  _Bool D.28660;
  _Bool D.28661;
  _Bool D.28662;
  const unsigned char * D.28665;
  unsigned char D.28666;
  int D.28667;
  const unsigned char * D.28668;
  unsigned char D.28669;
  int D.28670;
  _Bool D.28671;
  _Bool D.28672;
  const unsigned char * D.28675;
  unsigned char D.28676;
  int D.28677;
  const unsigned char * D.28678;
  unsigned char D.28679;
  int D.28680;
  _Bool D.28681;
  _Bool D.28682;
  const unsigned char * D.28685;
  unsigned char D.28686;
  int D.28687;
  const unsigned char * D.28688;
  unsigned char D.28689;
  int D.28690;
  int D.26516;
  int iftmp.63;
  int D.26515;
  const char[9] * D.28698;
  unsigned char D.28699;
  int D.28700;
  unsigned char D.28701;
  int D.28702;
  _Bool D.28703;
  _Bool D.28704;
  _Bool D.28705;
  const unsigned char * D.28708;
  unsigned char D.28709;
  int D.28710;
  const unsigned char * D.28711;
  unsigned char D.28712;
  int D.28713;
  _Bool D.28714;
  _Bool D.28715;
  const unsigned char * D.28718;
  unsigned char D.28719;
  int D.28720;
  const unsigned char * D.28721;
  unsigned char D.28722;
  int D.28723;
  _Bool D.28724;
  _Bool D.28725;
  const unsigned char * D.28728;
  unsigned char D.28729;
  int D.28730;
  const unsigned char * D.28731;
  unsigned char D.28732;
  int D.28733;
  int D.26525;
  int iftmp.64;
  int D.26524;
  const char[14] * D.28741;
  unsigned char D.28742;
  int D.28743;
  unsigned char D.28744;
  int D.28745;
  _Bool D.28746;
  _Bool D.28747;
  _Bool D.28748;
  const unsigned char * D.28751;
  unsigned char D.28752;
  int D.28753;
  const unsigned char * D.28754;
  unsigned char D.28755;
  int D.28756;
  _Bool D.28757;
  _Bool D.28758;
  const unsigned char * D.28761;
  unsigned char D.28762;
  int D.28763;
  const unsigned char * D.28764;
  unsigned char D.28765;
  int D.28766;
  _Bool D.28767;
  _Bool D.28768;
  const unsigned char * D.28771;
  unsigned char D.28772;
  int D.28773;
  const unsigned char * D.28774;
  unsigned char D.28775;
  int D.28776;
  int D.26534;
  int iftmp.65;
  int D.26533;
  const char[4] * D.28784;
  unsigned char D.28785;
  int D.28786;
  unsigned char D.28787;
  int D.28788;
  _Bool D.28789;
  _Bool D.28790;
  _Bool D.28791;
  const unsigned char * D.28794;
  unsigned char D.28795;
  int D.28796;
  const unsigned char * D.28797;
  unsigned char D.28798;
  int D.28799;
  _Bool D.28800;
  _Bool D.28801;
  const unsigned char * D.28804;
  unsigned char D.28805;
  int D.28806;
  const unsigned char * D.28807;
  unsigned char D.28808;
  int D.28809;
  _Bool D.28810;
  _Bool D.28811;
  const unsigned char * D.28814;
  unsigned char D.28815;
  int D.28816;
  const unsigned char * D.28817;
  unsigned char D.28818;
  int D.28819;
  int D.26543;
  int iftmp.66;
  int D.26542;
  const char[8] * D.28827;
  unsigned char D.28828;
  int D.28829;
  unsigned char D.28830;
  int D.28831;
  _Bool D.28832;
  _Bool D.28833;
  _Bool D.28834;
  const unsigned char * D.28837;
  unsigned char D.28838;
  int D.28839;
  const unsigned char * D.28840;
  unsigned char D.28841;
  int D.28842;
  _Bool D.28843;
  _Bool D.28844;
  const unsigned char * D.28847;
  unsigned char D.28848;
  int D.28849;
  const unsigned char * D.28850;
  unsigned char D.28851;
  int D.28852;
  _Bool D.28853;
  _Bool D.28854;
  const unsigned char * D.28857;
  unsigned char D.28858;
  int D.28859;
  const unsigned char * D.28860;
  unsigned char D.28861;
  int D.28862;
  int D.26552;
  int iftmp.67;
  int D.26551;
  const char[11] * D.28870;
  unsigned char D.28871;
  int D.28872;
  unsigned char D.28873;
  int D.28874;
  _Bool D.28875;
  _Bool D.28876;
  _Bool D.28877;
  const unsigned char * D.28880;
  unsigned char D.28881;
  int D.28882;
  const unsigned char * D.28883;
  unsigned char D.28884;
  int D.28885;
  _Bool D.28886;
  _Bool D.28887;
  const unsigned char * D.28890;
  unsigned char D.28891;
  int D.28892;
  const unsigned char * D.28893;
  unsigned char D.28894;
  int D.28895;
  _Bool D.28896;
  _Bool D.28897;
  const unsigned char * D.28900;
  unsigned char D.28901;
  int D.28902;
  const unsigned char * D.28903;
  unsigned char D.28904;
  int D.28905;
  int D.26561;
  int iftmp.68;
  int D.26560;
  const char[10] * D.28914;
  unsigned char D.28915;
  int D.28916;
  unsigned char D.28917;
  int D.28918;
  _Bool D.28919;
  _Bool D.28920;
  _Bool D.28921;
  const unsigned char * D.28924;
  unsigned char D.28925;
  int D.28926;
  const unsigned char * D.28927;
  unsigned char D.28928;
  int D.28929;
  _Bool D.28930;
  _Bool D.28931;
  const unsigned char * D.28934;
  unsigned char D.28935;
  int D.28936;
  const unsigned char * D.28937;
  unsigned char D.28938;
  int D.28939;
  _Bool D.28940;
  _Bool D.28941;
  const unsigned char * D.28944;
  unsigned char D.28945;
  int D.28946;
  const unsigned char * D.28947;
  unsigned char D.28948;
  int D.28949;
  int D.26570;
  int iftmp.69;
  int D.26569;
  const char[9] * D.28957;
  unsigned char D.28958;
  int D.28959;
  unsigned char D.28960;
  int D.28961;
  _Bool D.28962;
  _Bool D.28963;
  _Bool D.28964;
  const unsigned char * D.28967;
  unsigned char D.28968;
  int D.28969;
  const unsigned char * D.28970;
  unsigned char D.28971;
  int D.28972;
  _Bool D.28973;
  _Bool D.28974;
  const unsigned char * D.28977;
  unsigned char D.28978;
  int D.28979;
  const unsigned char * D.28980;
  unsigned char D.28981;
  int D.28982;
  _Bool D.28983;
  _Bool D.28984;
  const unsigned char * D.28987;
  unsigned char D.28988;
  int D.28989;
  const unsigned char * D.28990;
  unsigned char D.28991;
  int D.28992;
  int D.26579;
  int iftmp.70;
  int D.26578;
  const char[13] * D.29000;
  unsigned char D.29001;
  int D.29002;
  unsigned char D.29003;
  int D.29004;
  _Bool D.29005;
  _Bool D.29006;
  _Bool D.29007;
  const unsigned char * D.29010;
  unsigned char D.29011;
  int D.29012;
  const unsigned char * D.29013;
  unsigned char D.29014;
  int D.29015;
  _Bool D.29016;
  _Bool D.29017;
  const unsigned char * D.29020;
  unsigned char D.29021;
  int D.29022;
  const unsigned char * D.29023;
  unsigned char D.29024;
  int D.29025;
  _Bool D.29026;
  _Bool D.29027;
  const unsigned char * D.29030;
  unsigned char D.29031;
  int D.29032;
  const unsigned char * D.29033;
  unsigned char D.29034;
  int D.29035;
  int D.29040;
  int D.26597;
  int iftmp.71;
  int D.26596;
  const char[4] * D.29046;
  unsigned char D.29047;
  int D.29048;
  unsigned char D.29049;
  int D.29050;
  _Bool D.29051;
  _Bool D.29052;
  _Bool D.29053;
  const unsigned char * D.29056;
  unsigned char D.29057;
  int D.29058;
  const unsigned char * D.29059;
  unsigned char D.29060;
  int D.29061;
  _Bool D.29062;
  _Bool D.29063;
  const unsigned char * D.29066;
  unsigned char D.29067;
  int D.29068;
  const unsigned char * D.29069;
  unsigned char D.29070;
  int D.29071;
  _Bool D.29072;
  _Bool D.29073;
  const unsigned char * D.29076;
  unsigned char D.29077;
  int D.29078;
  const unsigned char * D.29079;
  unsigned char D.29080;
  int D.29081;
  const char * D.29083;
  int D.29086;
  int D.26606;
  int iftmp.72;
  int D.26605;
  const char[7] * D.29090;
  unsigned char D.29091;
  int D.29092;
  unsigned char D.29093;
  int D.29094;
  _Bool D.29095;
  _Bool D.29096;
  _Bool D.29097;
  const unsigned char * D.29100;
  unsigned char D.29101;
  int D.29102;
  const unsigned char * D.29103;
  unsigned char D.29104;
  int D.29105;
  _Bool D.29106;
  _Bool D.29107;
  const unsigned char * D.29110;
  unsigned char D.29111;
  int D.29112;
  const unsigned char * D.29113;
  unsigned char D.29114;
  int D.29115;
  _Bool D.29116;
  _Bool D.29117;
  const unsigned char * D.29120;
  unsigned char D.29121;
  int D.29122;
  const unsigned char * D.29123;
  unsigned char D.29124;
  int D.29125;
  int D.26615;
  int iftmp.73;
  int D.26614;
  const char[8] * D.29132;
  unsigned char D.29133;
  int D.29134;
  unsigned char D.29135;
  int D.29136;
  _Bool D.29137;
  _Bool D.29138;
  _Bool D.29139;
  const unsigned char * D.29142;
  unsigned char D.29143;
  int D.29144;
  const unsigned char * D.29145;
  unsigned char D.29146;
  int D.29147;
  _Bool D.29148;
  _Bool D.29149;
  const unsigned char * D.29152;
  unsigned char D.29153;
  int D.29154;
  const unsigned char * D.29155;
  unsigned char D.29156;
  int D.29157;
  _Bool D.29158;
  _Bool D.29159;
  const unsigned char * D.29162;
  unsigned char D.29163;
  int D.29164;
  const unsigned char * D.29165;
  unsigned char D.29166;
  int D.29167;
  int D.26624;
  int iftmp.74;
  int D.26623;
  const char[21] * D.29174;
  unsigned char D.29175;
  int D.29176;
  unsigned char D.29177;
  int D.29178;
  _Bool D.29179;
  _Bool D.29180;
  _Bool D.29181;
  const unsigned char * D.29184;
  unsigned char D.29185;
  int D.29186;
  const unsigned char * D.29187;
  unsigned char D.29188;
  int D.29189;
  _Bool D.29190;
  _Bool D.29191;
  const unsigned char * D.29194;
  unsigned char D.29195;
  int D.29196;
  const unsigned char * D.29197;
  unsigned char D.29198;
  int D.29199;
  _Bool D.29200;
  _Bool D.29201;
  const unsigned char * D.29204;
  unsigned char D.29205;
  int D.29206;
  const unsigned char * D.29207;
  unsigned char D.29208;
  int D.29209;
  int D.26633;
  int iftmp.75;
  int D.26632;
  const char[7] * D.29217;
  unsigned char D.29218;
  int D.29219;
  unsigned char D.29220;
  int D.29221;
  _Bool D.29222;
  _Bool D.29223;
  _Bool D.29224;
  const unsigned char * D.29227;
  unsigned char D.29228;
  int D.29229;
  const unsigned char * D.29230;
  unsigned char D.29231;
  int D.29232;
  _Bool D.29233;
  _Bool D.29234;
  const unsigned char * D.29237;
  unsigned char D.29238;
  int D.29239;
  const unsigned char * D.29240;
  unsigned char D.29241;
  int D.29242;
  _Bool D.29243;
  _Bool D.29244;
  const unsigned char * D.29247;
  unsigned char D.29248;
  int D.29249;
  const unsigned char * D.29250;
  unsigned char D.29251;
  int D.29252;
  int D.26642;
  int iftmp.76;
  int D.26641;
  const char[9] * D.29260;
  unsigned char D.29261;
  int D.29262;
  unsigned char D.29263;
  int D.29264;
  _Bool D.29265;
  _Bool D.29266;
  _Bool D.29267;
  const unsigned char * D.29270;
  unsigned char D.29271;
  int D.29272;
  const unsigned char * D.29273;
  unsigned char D.29274;
  int D.29275;
  _Bool D.29276;
  _Bool D.29277;
  const unsigned char * D.29280;
  unsigned char D.29281;
  int D.29282;
  const unsigned char * D.29283;
  unsigned char D.29284;
  int D.29285;
  _Bool D.29286;
  _Bool D.29287;
  const unsigned char * D.29290;
  unsigned char D.29291;
  int D.29292;
  const unsigned char * D.29293;
  unsigned char D.29294;
  int D.29295;
  const gchar * D.29302;
  int mono_compile_aot.77;
  _Bool D.29309;
  _Bool D.29310;
  _Bool D.29311;
  struct MonoTraceSpec * mono_jit_trace_calls.78;
  struct MonoTraceSpec * mono_jit_trace_calls.79;
  int enable_debugging.80;
  struct MonoDomain * domain.81;
  struct MonoDomain * domain.82;
  void * * D.29329;
  unsigned int i.83;
  unsigned int D.29331;
  void * * D.29332;
  void * D.29333;
  unsigned int i.84;
  unsigned int D.29337;
  int D.29338;
  <unnamed type> open_status.85;
  const char * D.29357;
  const char * iftmp.86;
  struct MonoImage * D.29375;
  short unsigned int D.29383;
  int D.29384;
  int D.29385;
  short unsigned int D.29387;
  int D.29388;
  int D.29389;
  struct MonoDomain * D.29390;
  struct MonoDomain * D.29391;
  unsigned int D.29392;
  unsigned int D.29395;
  unsigned int D.29396;
  struct FILE * mini_stats_fd.87;
  char * D.29405;
  char D.29406;
  struct MonoDomain * D.29409;
  struct MonoDomain * D.29418;
  struct MonoDomain * D.29420;
  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.27157 = monoeg_g_getenv ("MONO_NO_SMP");
      if (D.27157 != 0B) goto <D.27158>; else goto <D.27159>;
      <D.27158>:
      mono_set_use_smp (0);
      <D.27159>:
      if (0 != 0) goto <D.27160>; else goto <D.27161>;
      <D.27160>:
      if (0 != 0) goto <D.27162>; else goto <D.27163>;
      <D.27162>:
      monoeg_g_log (0B, 4, "No vtable supported in g_thread_init");
      <D.26067>:
      goto <D.26067>;
      <D.27163>:
      <D.27161>:
      monoeg_g_log_set_always_fatal (4);
      monoeg_g_log_set_fatal_mask (0B, 4);
      opt = parse_optimizations (0B);
      i = 1;
      goto <D.26644>;
      <D.26643>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27168 = *D.27167;
      if (D.27168 != 45) goto <D.26068>; else goto <D.27169>;
      <D.27169>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 12;
        if (__s2_len <= 3) goto <D.27171>; else goto <D.27172>;
        <D.27171>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27173 = "--regression";
          D.27174 = MEM[(const unsigned char *)D.27173];
          D.27175 = (int) D.27174;
          D.27176 = *__s2;
          D.27177 = (int) D.27176;
          __result = D.27175 - D.27177;
          {
            D.27178 = __s2_len != 0;
            D.27179 = __result == 0;
            D.27180 = D.27178 & D.27179;
            if (D.27180 != 0) goto <D.27181>; else goto <D.27182>;
            <D.27181>:
            D.27183 = &MEM[(void *)"--regression" + 1B];
            D.27184 = *D.27183;
            D.27185 = (int) D.27184;
            D.27186 = __s2 + 1;
            D.27187 = *D.27186;
            D.27188 = (int) D.27187;
            __result = D.27185 - D.27188;
            D.27189 = __s2_len > 1;
            D.27179 = __result == 0;
            D.27190 = D.27189 & D.27179;
            if (D.27190 != 0) goto <D.27191>; else goto <D.27192>;
            <D.27191>:
            D.27193 = &MEM[(void *)"--regression" + 2B];
            D.27194 = *D.27193;
            D.27195 = (int) D.27194;
            D.27196 = __s2 + 2;
            D.27197 = *D.27196;
            D.27198 = (int) D.27197;
            __result = D.27195 - D.27198;
            D.27199 = __s2_len > 2;
            D.27179 = __result == 0;
            D.27200 = D.27199 & D.27179;
            if (D.27200 != 0) goto <D.27201>; else goto <D.27202>;
            <D.27201>:
            D.27203 = &MEM[(void *)"--regression" + 3B];
            D.27204 = *D.27203;
            D.27205 = (int) D.27204;
            D.27206 = __s2 + 3;
            D.27207 = *D.27206;
            D.27208 = (int) D.27207;
            __result = D.27205 - D.27208;
            <D.27202>:
            <D.27192>:
            <D.27182>:
          }
          D.26076 = __result;
        }
        iftmp.20 = -D.26076;
        goto <D.27209>;
        <D.27172>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.20 = __builtin_strcmp (D.27167, "--regression");
        <D.27209>:
        D.26077 = iftmp.20;
      }
      if (D.26077 == 0) goto <D.27210>; else goto <D.27211>;
      <D.27210>:
      action = 1;
      goto <D.27212>;
      <D.27211>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27213 = strncmp (D.27167, "--single-method=", 16);
      if (D.27213 == 0) goto <D.27214>; else goto <D.27215>;
      <D.27214>:
      {
        char * full_opts;

        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27216 = D.27167 + 16;
        full_opts = monoeg_g_strdup_printf ("-all,%s", D.27216);
        action = 2;
        mono_single_method_regression_opt.21 = parse_optimizations (full_opts);
        mono_single_method_regression_opt = mono_single_method_regression_opt.21;
        monoeg_g_free (full_opts);
      }
      goto <D.27218>;
      <D.27215>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 9;
        if (__s2_len <= 3) goto <D.27223>; else goto <D.27224>;
        <D.27223>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27225 = "--verbose";
          D.27226 = MEM[(const unsigned char *)D.27225];
          D.27227 = (int) D.27226;
          D.27228 = *__s2;
          D.27229 = (int) D.27228;
          __result = D.27227 - D.27229;
          {
            D.27230 = __s2_len != 0;
            D.27231 = __result == 0;
            D.27232 = D.27230 & D.27231;
            if (D.27232 != 0) goto <D.27233>; else goto <D.27234>;
            <D.27233>:
            D.27235 = &MEM[(void *)"--verbose" + 1B];
            D.27236 = *D.27235;
            D.27237 = (int) D.27236;
            D.27238 = __s2 + 1;
            D.27239 = *D.27238;
            D.27240 = (int) D.27239;
            __result = D.27237 - D.27240;
            D.27241 = __s2_len > 1;
            D.27231 = __result == 0;
            D.27242 = D.27241 & D.27231;
            if (D.27242 != 0) goto <D.27243>; else goto <D.27244>;
            <D.27243>:
            D.27245 = &MEM[(void *)"--verbose" + 2B];
            D.27246 = *D.27245;
            D.27247 = (int) D.27246;
            D.27248 = __s2 + 2;
            D.27249 = *D.27248;
            D.27250 = (int) D.27249;
            __result = D.27247 - D.27250;
            D.27251 = __s2_len > 2;
            D.27231 = __result == 0;
            D.27252 = D.27251 & D.27231;
            if (D.27252 != 0) goto <D.27253>; else goto <D.27254>;
            <D.27253>:
            D.27255 = &MEM[(void *)"--verbose" + 3B];
            D.27256 = *D.27255;
            D.27257 = (int) D.27256;
            D.27258 = __s2 + 3;
            D.27259 = *D.27258;
            D.27260 = (int) D.27259;
            __result = D.27257 - D.27260;
            <D.27254>:
            <D.27244>:
            <D.27234>:
          }
          D.26095 = __result;
        }
        iftmp.22 = -D.26095;
        goto <D.27261>;
        <D.27224>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.22 = __builtin_strcmp (D.27167, "--verbose");
        <D.27261>:
        D.26096 = iftmp.22;
      }
      if (D.26096 == 0) goto <D.27219>; else goto <D.27262>;
      <D.27262>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 2;
        if (__s2_len <= 3) goto <D.27264>; else goto <D.27265>;
        <D.27264>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27266 = "-v";
          D.27267 = MEM[(const unsigned char *)D.27266];
          D.27268 = (int) D.27267;
          D.27269 = *__s2;
          D.27270 = (int) D.27269;
          __result = D.27268 - D.27270;
          {
            D.27271 = __s2_len != 0;
            D.27272 = __result == 0;
            D.27273 = D.27271 & D.27272;
            if (D.27273 != 0) goto <D.27274>; else goto <D.27275>;
            <D.27274>:
            D.27276 = &MEM[(void *)"-v" + 1B];
            D.27277 = *D.27276;
            D.27278 = (int) D.27277;
            D.27279 = __s2 + 1;
            D.27280 = *D.27279;
            D.27281 = (int) D.27280;
            __result = D.27278 - D.27281;
            D.27282 = __s2_len > 1;
            D.27272 = __result == 0;
            D.27283 = D.27282 & D.27272;
            if (D.27283 != 0) goto <D.27284>; else goto <D.27285>;
            <D.27284>:
            D.27286 = &MEM[(void *)"-v" + 2B];
            D.27287 = *D.27286;
            D.27288 = (int) D.27287;
            D.27289 = __s2 + 2;
            D.27290 = *D.27289;
            D.27291 = (int) D.27290;
            __result = D.27288 - D.27291;
            D.27292 = __s2_len > 2;
            D.27272 = __result == 0;
            D.27293 = D.27292 & D.27272;
            if (D.27293 != 0) goto <D.27294>; else goto <D.27295>;
            <D.27294>:
            D.27296 = &MEM[(void *)"-v" + 3B];
            D.27297 = *D.27296;
            D.27298 = (int) D.27297;
            D.27299 = __s2 + 3;
            D.27300 = *D.27299;
            D.27301 = (int) D.27300;
            __result = D.27298 - D.27301;
            <D.27295>:
            <D.27285>:
            <D.27275>:
          }
          D.26104 = __result;
        }
        iftmp.23 = -D.26104;
        goto <D.27302>;
        <D.27265>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.23 = __builtin_strcmp (D.27167, "-v");
        <D.27302>:
        D.26105 = iftmp.23;
      }
      if (D.26105 == 0) goto <D.27219>; else goto <D.27220>;
      <D.27219>:
      mini_verbose = mini_verbose + 1;
      goto <D.27221>;
      <D.27220>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 9;
        if (__s2_len <= 3) goto <D.27306>; else goto <D.27307>;
        <D.27306>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27308 = "--version";
          D.27309 = MEM[(const unsigned char *)D.27308];
          D.27310 = (int) D.27309;
          D.27311 = *__s2;
          D.27312 = (int) D.27311;
          __result = D.27310 - D.27312;
          {
            D.27313 = __s2_len != 0;
            D.27314 = __result == 0;
            D.27315 = D.27313 & D.27314;
            if (D.27315 != 0) goto <D.27316>; else goto <D.27317>;
            <D.27316>:
            D.27318 = &MEM[(void *)"--version" + 1B];
            D.27319 = *D.27318;
            D.27320 = (int) D.27319;
            D.27321 = __s2 + 1;
            D.27322 = *D.27321;
            D.27323 = (int) D.27322;
            __result = D.27320 - D.27323;
            D.27324 = __s2_len > 1;
            D.27314 = __result == 0;
            D.27325 = D.27324 & D.27314;
            if (D.27325 != 0) goto <D.27326>; else goto <D.27327>;
            <D.27326>:
            D.27328 = &MEM[(void *)"--version" + 2B];
            D.27329 = *D.27328;
            D.27330 = (int) D.27329;
            D.27331 = __s2 + 2;
            D.27332 = *D.27331;
            D.27333 = (int) D.27332;
            __result = D.27330 - D.27333;
            D.27334 = __s2_len > 2;
            D.27314 = __result == 0;
            D.27335 = D.27334 & D.27314;
            if (D.27335 != 0) goto <D.27336>; else goto <D.27337>;
            <D.27336>:
            D.27338 = &MEM[(void *)"--version" + 3B];
            D.27339 = *D.27338;
            D.27340 = (int) D.27339;
            D.27341 = __s2 + 3;
            D.27342 = *D.27341;
            D.27343 = (int) D.27342;
            __result = D.27340 - D.27343;
            <D.27337>:
            <D.27327>:
            <D.27317>:
          }
          D.26113 = __result;
        }
        iftmp.24 = -D.26113;
        goto <D.27344>;
        <D.27307>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.24 = __builtin_strcmp (D.27167, "--version");
        <D.27344>:
        D.26114 = iftmp.24;
      }
      if (D.26114 == 0) goto <D.27303>; else goto <D.27345>;
      <D.27345>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 2;
        if (__s2_len <= 3) goto <D.27347>; else goto <D.27348>;
        <D.27347>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27349 = "-V";
          D.27350 = MEM[(const unsigned char *)D.27349];
          D.27351 = (int) D.27350;
          D.27352 = *__s2;
          D.27353 = (int) D.27352;
          __result = D.27351 - D.27353;
          {
            D.27354 = __s2_len != 0;
            D.27355 = __result == 0;
            D.27356 = D.27354 & D.27355;
            if (D.27356 != 0) goto <D.27357>; else goto <D.27358>;
            <D.27357>:
            D.27359 = &MEM[(void *)"-V" + 1B];
            D.27360 = *D.27359;
            D.27361 = (int) D.27360;
            D.27362 = __s2 + 1;
            D.27363 = *D.27362;
            D.27364 = (int) D.27363;
            __result = D.27361 - D.27364;
            D.27365 = __s2_len > 1;
            D.27355 = __result == 0;
            D.27366 = D.27365 & D.27355;
            if (D.27366 != 0) goto <D.27367>; else goto <D.27368>;
            <D.27367>:
            D.27369 = &MEM[(void *)"-V" + 2B];
            D.27370 = *D.27369;
            D.27371 = (int) D.27370;
            D.27372 = __s2 + 2;
            D.27373 = *D.27372;
            D.27374 = (int) D.27373;
            __result = D.27371 - D.27374;
            D.27375 = __s2_len > 2;
            D.27355 = __result == 0;
            D.27376 = D.27375 & D.27355;
            if (D.27376 != 0) goto <D.27377>; else goto <D.27378>;
            <D.27377>:
            D.27379 = &MEM[(void *)"-V" + 3B];
            D.27380 = *D.27379;
            D.27381 = (int) D.27380;
            D.27382 = __s2 + 3;
            D.27383 = *D.27382;
            D.27384 = (int) D.27383;
            __result = D.27381 - D.27384;
            <D.27378>:
            <D.27368>:
            <D.27358>:
          }
          D.26122 = __result;
        }
        iftmp.25 = -D.26122;
        goto <D.27385>;
        <D.27348>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.25 = __builtin_strcmp (D.27167, "-V");
        <D.27385>:
        D.26123 = iftmp.25;
      }
      if (D.26123 == 0) goto <D.27303>; else goto <D.27304>;
      <D.27303>:
      {
        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.27386>; else goto <D.27387>;
        <D.27386>:
        {
          const char * cerror;
          const char * clibpath;

          mono_init ("mono");
          cerror = mono_check_corlib_version ();
          D.27389 = mono_defaults.corlib;
          if (D.27389 != 0B) goto <D.27390>; else goto <D.27391>;
          <D.27390>:
          D.27389 = mono_defaults.corlib;
          iftmp.26 = mono_image_get_filename (D.27389);
          goto <D.27392>;
          <D.27391>:
          iftmp.26 = "unknown";
          <D.27392>:
          clibpath = iftmp.26;
          if (cerror != 0B) goto <D.27393>; else goto <D.27394>;
          <D.27393>:
          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.27395 = 1;
          return D.27395;
          <D.27394>:
        }
        <D.27387>:
        D.27395 = 0;
        return D.27395;
      }
      <D.27304>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 6;
        if (__s2_len <= 3) goto <D.27399>; else goto <D.27400>;
        <D.27399>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27401 = "--help";
          D.27402 = MEM[(const unsigned char *)D.27401];
          D.27403 = (int) D.27402;
          D.27404 = *__s2;
          D.27405 = (int) D.27404;
          __result = D.27403 - D.27405;
          {
            D.27406 = __s2_len != 0;
            D.27407 = __result == 0;
            D.27408 = D.27406 & D.27407;
            if (D.27408 != 0) goto <D.27409>; else goto <D.27410>;
            <D.27409>:
            D.27411 = &MEM[(void *)"--help" + 1B];
            D.27412 = *D.27411;
            D.27413 = (int) D.27412;
            D.27414 = __s2 + 1;
            D.27415 = *D.27414;
            D.27416 = (int) D.27415;
            __result = D.27413 - D.27416;
            D.27417 = __s2_len > 1;
            D.27407 = __result == 0;
            D.27418 = D.27417 & D.27407;
            if (D.27418 != 0) goto <D.27419>; else goto <D.27420>;
            <D.27419>:
            D.27421 = &MEM[(void *)"--help" + 2B];
            D.27422 = *D.27421;
            D.27423 = (int) D.27422;
            D.27424 = __s2 + 2;
            D.27425 = *D.27424;
            D.27426 = (int) D.27425;
            __result = D.27423 - D.27426;
            D.27427 = __s2_len > 2;
            D.27407 = __result == 0;
            D.27428 = D.27427 & D.27407;
            if (D.27428 != 0) goto <D.27429>; else goto <D.27430>;
            <D.27429>:
            D.27431 = &MEM[(void *)"--help" + 3B];
            D.27432 = *D.27431;
            D.27433 = (int) D.27432;
            D.27434 = __s2 + 3;
            D.27435 = *D.27434;
            D.27436 = (int) D.27435;
            __result = D.27433 - D.27436;
            <D.27430>:
            <D.27420>:
            <D.27410>:
          }
          D.26135 = __result;
        }
        iftmp.27 = -D.26135;
        goto <D.27437>;
        <D.27400>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.27 = __builtin_strcmp (D.27167, "--help");
        <D.27437>:
        D.26136 = iftmp.27;
      }
      if (D.26136 == 0) goto <D.27396>; else goto <D.27438>;
      <D.27438>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 2;
        if (__s2_len <= 3) goto <D.27440>; else goto <D.27441>;
        <D.27440>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27442 = "-h";
          D.27443 = MEM[(const unsigned char *)D.27442];
          D.27444 = (int) D.27443;
          D.27445 = *__s2;
          D.27446 = (int) D.27445;
          __result = D.27444 - D.27446;
          {
            D.27447 = __s2_len != 0;
            D.27448 = __result == 0;
            D.27449 = D.27447 & D.27448;
            if (D.27449 != 0) goto <D.27450>; else goto <D.27451>;
            <D.27450>:
            D.27452 = &MEM[(void *)"-h" + 1B];
            D.27453 = *D.27452;
            D.27454 = (int) D.27453;
            D.27455 = __s2 + 1;
            D.27456 = *D.27455;
            D.27457 = (int) D.27456;
            __result = D.27454 - D.27457;
            D.27458 = __s2_len > 1;
            D.27448 = __result == 0;
            D.27459 = D.27458 & D.27448;
            if (D.27459 != 0) goto <D.27460>; else goto <D.27461>;
            <D.27460>:
            D.27462 = &MEM[(void *)"-h" + 2B];
            D.27463 = *D.27462;
            D.27464 = (int) D.27463;
            D.27465 = __s2 + 2;
            D.27466 = *D.27465;
            D.27467 = (int) D.27466;
            __result = D.27464 - D.27467;
            D.27468 = __s2_len > 2;
            D.27448 = __result == 0;
            D.27469 = D.27468 & D.27448;
            if (D.27469 != 0) goto <D.27470>; else goto <D.27471>;
            <D.27470>:
            D.27472 = &MEM[(void *)"-h" + 3B];
            D.27473 = *D.27472;
            D.27474 = (int) D.27473;
            D.27475 = __s2 + 3;
            D.27476 = *D.27475;
            D.27477 = (int) D.27476;
            __result = D.27474 - D.27477;
            <D.27471>:
            <D.27461>:
            <D.27451>:
          }
          D.26144 = __result;
        }
        iftmp.28 = -D.26144;
        goto <D.27478>;
        <D.27441>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.28 = __builtin_strcmp (D.27167, "-h");
        <D.27478>:
        D.26145 = iftmp.28;
      }
      if (D.26145 == 0) goto <D.27396>; else goto <D.27397>;
      <D.27396>:
      mini_usage ();
      D.27395 = 0;
      return D.27395;
      <D.27397>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 12;
        if (__s2_len <= 3) goto <D.27480>; else goto <D.27481>;
        <D.27480>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27482 = "--help-trace";
          D.27483 = MEM[(const unsigned char *)D.27482];
          D.27484 = (int) D.27483;
          D.27485 = *__s2;
          D.27486 = (int) D.27485;
          __result = D.27484 - D.27486;
          {
            D.27487 = __s2_len != 0;
            D.27488 = __result == 0;
            D.27489 = D.27487 & D.27488;
            if (D.27489 != 0) goto <D.27490>; else goto <D.27491>;
            <D.27490>:
            D.27492 = &MEM[(void *)"--help-trace" + 1B];
            D.27493 = *D.27492;
            D.27494 = (int) D.27493;
            D.27495 = __s2 + 1;
            D.27496 = *D.27495;
            D.27497 = (int) D.27496;
            __result = D.27494 - D.27497;
            D.27498 = __s2_len > 1;
            D.27488 = __result == 0;
            D.27499 = D.27498 & D.27488;
            if (D.27499 != 0) goto <D.27500>; else goto <D.27501>;
            <D.27500>:
            D.27502 = &MEM[(void *)"--help-trace" + 2B];
            D.27503 = *D.27502;
            D.27504 = (int) D.27503;
            D.27505 = __s2 + 2;
            D.27506 = *D.27505;
            D.27507 = (int) D.27506;
            __result = D.27504 - D.27507;
            D.27508 = __s2_len > 2;
            D.27488 = __result == 0;
            D.27509 = D.27508 & D.27488;
            if (D.27509 != 0) goto <D.27510>; else goto <D.27511>;
            <D.27510>:
            D.27512 = &MEM[(void *)"--help-trace" + 3B];
            D.27513 = *D.27512;
            D.27514 = (int) D.27513;
            D.27515 = __s2 + 3;
            D.27516 = *D.27515;
            D.27517 = (int) D.27516;
            __result = D.27514 - D.27517;
            <D.27511>:
            <D.27501>:
            <D.27491>:
          }
          D.26153 = __result;
        }
        iftmp.29 = -D.26153;
        goto <D.27518>;
        <D.27481>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.29 = __builtin_strcmp (D.27167, "--help-trace");
        <D.27518>:
        D.26154 = iftmp.29;
      }
      if (D.26154 == 0) goto <D.27519>; else goto <D.27520>;
      <D.27519>:
      mini_trace_usage ();
      D.27395 = 0;
      return D.27395;
      <D.27520>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 12;
        if (__s2_len <= 3) goto <D.27522>; else goto <D.27523>;
        <D.27522>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27524 = "--help-devel";
          D.27525 = MEM[(const unsigned char *)D.27524];
          D.27526 = (int) D.27525;
          D.27527 = *__s2;
          D.27528 = (int) D.27527;
          __result = D.27526 - D.27528;
          {
            D.27529 = __s2_len != 0;
            D.27530 = __result == 0;
            D.27531 = D.27529 & D.27530;
            if (D.27531 != 0) goto <D.27532>; else goto <D.27533>;
            <D.27532>:
            D.27534 = &MEM[(void *)"--help-devel" + 1B];
            D.27535 = *D.27534;
            D.27536 = (int) D.27535;
            D.27537 = __s2 + 1;
            D.27538 = *D.27537;
            D.27539 = (int) D.27538;
            __result = D.27536 - D.27539;
            D.27540 = __s2_len > 1;
            D.27530 = __result == 0;
            D.27541 = D.27540 & D.27530;
            if (D.27541 != 0) goto <D.27542>; else goto <D.27543>;
            <D.27542>:
            D.27544 = &MEM[(void *)"--help-devel" + 2B];
            D.27545 = *D.27544;
            D.27546 = (int) D.27545;
            D.27547 = __s2 + 2;
            D.27548 = *D.27547;
            D.27549 = (int) D.27548;
            __result = D.27546 - D.27549;
            D.27550 = __s2_len > 2;
            D.27530 = __result == 0;
            D.27551 = D.27550 & D.27530;
            if (D.27551 != 0) goto <D.27552>; else goto <D.27553>;
            <D.27552>:
            D.27554 = &MEM[(void *)"--help-devel" + 3B];
            D.27555 = *D.27554;
            D.27556 = (int) D.27555;
            D.27557 = __s2 + 3;
            D.27558 = *D.27557;
            D.27559 = (int) D.27558;
            __result = D.27556 - D.27559;
            <D.27553>:
            <D.27543>:
            <D.27533>:
          }
          D.26162 = __result;
        }
        iftmp.30 = -D.26162;
        goto <D.27560>;
        <D.27523>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.30 = __builtin_strcmp (D.27167, "--help-devel");
        <D.27560>:
        D.26163 = iftmp.30;
      }
      if (D.26163 == 0) goto <D.27561>; else goto <D.27562>;
      <D.27561>:
      mini_usage_jitdeveloper ();
      D.27395 = 0;
      return D.27395;
      <D.27562>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 12;
        if (__s2_len <= 3) goto <D.27564>; else goto <D.27565>;
        <D.27564>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27566 = "--help-debug";
          D.27567 = MEM[(const unsigned char *)D.27566];
          D.27568 = (int) D.27567;
          D.27569 = *__s2;
          D.27570 = (int) D.27569;
          __result = D.27568 - D.27570;
          {
            D.27571 = __s2_len != 0;
            D.27572 = __result == 0;
            D.27573 = D.27571 & D.27572;
            if (D.27573 != 0) goto <D.27574>; else goto <D.27575>;
            <D.27574>:
            D.27576 = &MEM[(void *)"--help-debug" + 1B];
            D.27577 = *D.27576;
            D.27578 = (int) D.27577;
            D.27579 = __s2 + 1;
            D.27580 = *D.27579;
            D.27581 = (int) D.27580;
            __result = D.27578 - D.27581;
            D.27582 = __s2_len > 1;
            D.27572 = __result == 0;
            D.27583 = D.27582 & D.27572;
            if (D.27583 != 0) goto <D.27584>; else goto <D.27585>;
            <D.27584>:
            D.27586 = &MEM[(void *)"--help-debug" + 2B];
            D.27587 = *D.27586;
            D.27588 = (int) D.27587;
            D.27589 = __s2 + 2;
            D.27590 = *D.27589;
            D.27591 = (int) D.27590;
            __result = D.27588 - D.27591;
            D.27592 = __s2_len > 2;
            D.27572 = __result == 0;
            D.27593 = D.27592 & D.27572;
            if (D.27593 != 0) goto <D.27594>; else goto <D.27595>;
            <D.27594>:
            D.27596 = &MEM[(void *)"--help-debug" + 3B];
            D.27597 = *D.27596;
            D.27598 = (int) D.27597;
            D.27599 = __s2 + 3;
            D.27600 = *D.27599;
            D.27601 = (int) D.27600;
            __result = D.27598 - D.27601;
            <D.27595>:
            <D.27585>:
            <D.27575>:
          }
          D.26171 = __result;
        }
        iftmp.31 = -D.26171;
        goto <D.27602>;
        <D.27565>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.31 = __builtin_strcmp (D.27167, "--help-debug");
        <D.27602>:
        D.26172 = iftmp.31;
      }
      if (D.26172 == 0) goto <D.27603>; else goto <D.27604>;
      <D.27603>:
      mini_debug_usage ();
      D.27395 = 0;
      return D.27395;
      <D.27604>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 10;
        if (__s2_len <= 3) goto <D.27606>; else goto <D.27607>;
        <D.27606>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27608 = "--list-opt";
          D.27609 = MEM[(const unsigned char *)D.27608];
          D.27610 = (int) D.27609;
          D.27611 = *__s2;
          D.27612 = (int) D.27611;
          __result = D.27610 - D.27612;
          {
            D.27613 = __s2_len != 0;
            D.27614 = __result == 0;
            D.27615 = D.27613 & D.27614;
            if (D.27615 != 0) goto <D.27616>; else goto <D.27617>;
            <D.27616>:
            D.27618 = &MEM[(void *)"--list-opt" + 1B];
            D.27619 = *D.27618;
            D.27620 = (int) D.27619;
            D.27621 = __s2 + 1;
            D.27622 = *D.27621;
            D.27623 = (int) D.27622;
            __result = D.27620 - D.27623;
            D.27624 = __s2_len > 1;
            D.27614 = __result == 0;
            D.27625 = D.27624 & D.27614;
            if (D.27625 != 0) goto <D.27626>; else goto <D.27627>;
            <D.27626>:
            D.27628 = &MEM[(void *)"--list-opt" + 2B];
            D.27629 = *D.27628;
            D.27630 = (int) D.27629;
            D.27631 = __s2 + 2;
            D.27632 = *D.27631;
            D.27633 = (int) D.27632;
            __result = D.27630 - D.27633;
            D.27634 = __s2_len > 2;
            D.27614 = __result == 0;
            D.27635 = D.27634 & D.27614;
            if (D.27635 != 0) goto <D.27636>; else goto <D.27637>;
            <D.27636>:
            D.27638 = &MEM[(void *)"--list-opt" + 3B];
            D.27639 = *D.27638;
            D.27640 = (int) D.27639;
            D.27641 = __s2 + 3;
            D.27642 = *D.27641;
            D.27643 = (int) D.27642;
            __result = D.27640 - D.27643;
            <D.27637>:
            <D.27627>:
            <D.27617>:
          }
          D.26180 = __result;
        }
        iftmp.32 = -D.26180;
        goto <D.27644>;
        <D.27607>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.32 = __builtin_strcmp (D.27167, "--list-opt");
        <D.27644>:
        D.26181 = iftmp.32;
      }
      if (D.26181 == 0) goto <D.27645>; else goto <D.27646>;
      <D.27645>:
      mini_usage_list_opt ();
      D.27395 = 0;
      return D.27395;
      <D.27646>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27647 = strncmp (D.27167, "--statfile", 10);
      if (D.27647 == 0) goto <D.27648>; else goto <D.27649>;
      <D.27648>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.27651>; else goto <D.27652>;
      <D.27651>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --statfile requires a filename argument\n");
      D.27395 = 1;
      return D.27395;
      <D.27652>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      mini_stats_fd.34 = fopen (D.27167, "w+");
      mini_stats_fd = mini_stats_fd.34;
      goto <D.27655>;
      <D.27649>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27656 = strncmp (D.27167, "--optimize=", 11);
      if (D.27656 == 0) goto <D.27657>; else goto <D.27658>;
      <D.27657>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27659 = D.27167 + 11;
      opt = parse_optimizations (D.27659);
      goto <D.27660>;
      <D.27658>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27661 = strncmp (D.27167, "-O=", 3);
      if (D.27661 == 0) goto <D.27662>; else goto <D.27663>;
      <D.27662>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27664 = D.27167 + 3;
      opt = parse_optimizations (D.27664);
      goto <D.27665>;
      <D.27663>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 9;
        if (__s2_len <= 3) goto <D.27667>; else goto <D.27668>;
        <D.27667>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27669 = "--gc=sgen";
          D.27670 = MEM[(const unsigned char *)D.27669];
          D.27671 = (int) D.27670;
          D.27672 = *__s2;
          D.27673 = (int) D.27672;
          __result = D.27671 - D.27673;
          {
            D.27674 = __s2_len != 0;
            D.27675 = __result == 0;
            D.27676 = D.27674 & D.27675;
            if (D.27676 != 0) goto <D.27677>; else goto <D.27678>;
            <D.27677>:
            D.27679 = &MEM[(void *)"--gc=sgen" + 1B];
            D.27680 = *D.27679;
            D.27681 = (int) D.27680;
            D.27682 = __s2 + 1;
            D.27683 = *D.27682;
            D.27684 = (int) D.27683;
            __result = D.27681 - D.27684;
            D.27685 = __s2_len > 1;
            D.27675 = __result == 0;
            D.27686 = D.27685 & D.27675;
            if (D.27686 != 0) goto <D.27687>; else goto <D.27688>;
            <D.27687>:
            D.27689 = &MEM[(void *)"--gc=sgen" + 2B];
            D.27690 = *D.27689;
            D.27691 = (int) D.27690;
            D.27692 = __s2 + 2;
            D.27693 = *D.27692;
            D.27694 = (int) D.27693;
            __result = D.27691 - D.27694;
            D.27695 = __s2_len > 2;
            D.27675 = __result == 0;
            D.27696 = D.27695 & D.27675;
            if (D.27696 != 0) goto <D.27697>; else goto <D.27698>;
            <D.27697>:
            D.27699 = &MEM[(void *)"--gc=sgen" + 3B];
            D.27700 = *D.27699;
            D.27701 = (int) D.27700;
            D.27702 = __s2 + 3;
            D.27703 = *D.27702;
            D.27704 = (int) D.27703;
            __result = D.27701 - D.27704;
            <D.27698>:
            <D.27688>:
            <D.27678>:
          }
          D.26216 = __result;
        }
        iftmp.35 = -D.26216;
        goto <D.27705>;
        <D.27668>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.35 = __builtin_strcmp (D.27167, "--gc=sgen");
        <D.27705>:
        D.26217 = iftmp.35;
      }
      if (D.26217 == 0) goto <D.27706>; else goto <D.27707>;
      <D.27706>:
      switch_gc (argv, "sgen");
      goto <D.27708>;
      <D.27707>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 10;
        if (__s2_len <= 3) goto <D.27710>; else goto <D.27711>;
        <D.27710>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27712 = "--gc=boehm";
          D.27713 = MEM[(const unsigned char *)D.27712];
          D.27714 = (int) D.27713;
          D.27715 = *__s2;
          D.27716 = (int) D.27715;
          __result = D.27714 - D.27716;
          {
            D.27717 = __s2_len != 0;
            D.27718 = __result == 0;
            D.27719 = D.27717 & D.27718;
            if (D.27719 != 0) goto <D.27720>; else goto <D.27721>;
            <D.27720>:
            D.27722 = &MEM[(void *)"--gc=boehm" + 1B];
            D.27723 = *D.27722;
            D.27724 = (int) D.27723;
            D.27725 = __s2 + 1;
            D.27726 = *D.27725;
            D.27727 = (int) D.27726;
            __result = D.27724 - D.27727;
            D.27728 = __s2_len > 1;
            D.27718 = __result == 0;
            D.27729 = D.27728 & D.27718;
            if (D.27729 != 0) goto <D.27730>; else goto <D.27731>;
            <D.27730>:
            D.27732 = &MEM[(void *)"--gc=boehm" + 2B];
            D.27733 = *D.27732;
            D.27734 = (int) D.27733;
            D.27735 = __s2 + 2;
            D.27736 = *D.27735;
            D.27737 = (int) D.27736;
            __result = D.27734 - D.27737;
            D.27738 = __s2_len > 2;
            D.27718 = __result == 0;
            D.27739 = D.27738 & D.27718;
            if (D.27739 != 0) goto <D.27740>; else goto <D.27741>;
            <D.27740>:
            D.27742 = &MEM[(void *)"--gc=boehm" + 3B];
            D.27743 = *D.27742;
            D.27744 = (int) D.27743;
            D.27745 = __s2 + 3;
            D.27746 = *D.27745;
            D.27747 = (int) D.27746;
            __result = D.27744 - D.27747;
            <D.27741>:
            <D.27731>:
            <D.27721>:
          }
          D.26225 = __result;
        }
        iftmp.36 = -D.26225;
        goto <D.27748>;
        <D.27711>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.36 = __builtin_strcmp (D.27167, "--gc=boehm");
        <D.27748>:
        D.26226 = iftmp.36;
      }
      if (D.26226 == 0) goto <D.27749>; else goto <D.27750>;
      <D.27749>:
      switch_gc (argv, "boehm");
      goto <D.27751>;
      <D.27750>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 8;
        if (__s2_len <= 3) goto <D.27753>; else goto <D.27754>;
        <D.27753>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27755 = "--config";
          D.27756 = MEM[(const unsigned char *)D.27755];
          D.27757 = (int) D.27756;
          D.27758 = *__s2;
          D.27759 = (int) D.27758;
          __result = D.27757 - D.27759;
          {
            D.27760 = __s2_len != 0;
            D.27761 = __result == 0;
            D.27762 = D.27760 & D.27761;
            if (D.27762 != 0) goto <D.27763>; else goto <D.27764>;
            <D.27763>:
            D.27765 = &MEM[(void *)"--config" + 1B];
            D.27766 = *D.27765;
            D.27767 = (int) D.27766;
            D.27768 = __s2 + 1;
            D.27769 = *D.27768;
            D.27770 = (int) D.27769;
            __result = D.27767 - D.27770;
            D.27771 = __s2_len > 1;
            D.27761 = __result == 0;
            D.27772 = D.27771 & D.27761;
            if (D.27772 != 0) goto <D.27773>; else goto <D.27774>;
            <D.27773>:
            D.27775 = &MEM[(void *)"--config" + 2B];
            D.27776 = *D.27775;
            D.27777 = (int) D.27776;
            D.27778 = __s2 + 2;
            D.27779 = *D.27778;
            D.27780 = (int) D.27779;
            __result = D.27777 - D.27780;
            D.27781 = __s2_len > 2;
            D.27761 = __result == 0;
            D.27782 = D.27781 & D.27761;
            if (D.27782 != 0) goto <D.27783>; else goto <D.27784>;
            <D.27783>:
            D.27785 = &MEM[(void *)"--config" + 3B];
            D.27786 = *D.27785;
            D.27787 = (int) D.27786;
            D.27788 = __s2 + 3;
            D.27789 = *D.27788;
            D.27790 = (int) D.27789;
            __result = D.27787 - D.27790;
            <D.27784>:
            <D.27774>:
            <D.27764>:
          }
          D.26234 = __result;
        }
        iftmp.37 = -D.26234;
        goto <D.27791>;
        <D.27754>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.37 = __builtin_strcmp (D.27167, "--config");
        <D.27791>:
        D.26235 = iftmp.37;
      }
      if (D.26235 == 0) goto <D.27792>; else goto <D.27793>;
      <D.27792>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.27794>; else goto <D.27795>;
      <D.27794>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --config requires a filename argument\n");
      D.27395 = 1;
      return D.27395;
      <D.27795>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      config_file = *D.27166;
      goto <D.27796>;
      <D.27793>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 10;
        if (__s2_len <= 3) goto <D.27798>; else goto <D.27799>;
        <D.27798>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27800 = "--ncompile";
          D.27801 = MEM[(const unsigned char *)D.27800];
          D.27802 = (int) D.27801;
          D.27803 = *__s2;
          D.27804 = (int) D.27803;
          __result = D.27802 - D.27804;
          {
            D.27805 = __s2_len != 0;
            D.27806 = __result == 0;
            D.27807 = D.27805 & D.27806;
            if (D.27807 != 0) goto <D.27808>; else goto <D.27809>;
            <D.27808>:
            D.27810 = &MEM[(void *)"--ncompile" + 1B];
            D.27811 = *D.27810;
            D.27812 = (int) D.27811;
            D.27813 = __s2 + 1;
            D.27814 = *D.27813;
            D.27815 = (int) D.27814;
            __result = D.27812 - D.27815;
            D.27816 = __s2_len > 1;
            D.27806 = __result == 0;
            D.27817 = D.27816 & D.27806;
            if (D.27817 != 0) goto <D.27818>; else goto <D.27819>;
            <D.27818>:
            D.27820 = &MEM[(void *)"--ncompile" + 2B];
            D.27821 = *D.27820;
            D.27822 = (int) D.27821;
            D.27823 = __s2 + 2;
            D.27824 = *D.27823;
            D.27825 = (int) D.27824;
            __result = D.27822 - D.27825;
            D.27826 = __s2_len > 2;
            D.27806 = __result == 0;
            D.27827 = D.27826 & D.27806;
            if (D.27827 != 0) goto <D.27828>; else goto <D.27829>;
            <D.27828>:
            D.27830 = &MEM[(void *)"--ncompile" + 3B];
            D.27831 = *D.27830;
            D.27832 = (int) D.27831;
            D.27833 = __s2 + 3;
            D.27834 = *D.27833;
            D.27835 = (int) D.27834;
            __result = D.27832 - D.27835;
            <D.27829>:
            <D.27819>:
            <D.27809>:
          }
          D.26243 = __result;
        }
        iftmp.38 = -D.26243;
        goto <D.27836>;
        <D.27799>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.38 = __builtin_strcmp (D.27167, "--ncompile");
        <D.27836>:
        D.26244 = iftmp.38;
      }
      if (D.26244 == 0) goto <D.27837>; else goto <D.27838>;
      <D.27837>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.27839>; else goto <D.27840>;
      <D.27839>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --ncompile requires an argument\n");
      D.27395 = 1;
      return D.27395;
      <D.27840>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      count = atoi (D.27167);
      action = 0;
      goto <D.27841>;
      <D.27838>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.27843>; else goto <D.27844>;
        <D.27843>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27845 = "--trace";
          D.27846 = MEM[(const unsigned char *)D.27845];
          D.27847 = (int) D.27846;
          D.27848 = *__s2;
          D.27849 = (int) D.27848;
          __result = D.27847 - D.27849;
          {
            D.27850 = __s2_len != 0;
            D.27851 = __result == 0;
            D.27852 = D.27850 & D.27851;
            if (D.27852 != 0) goto <D.27853>; else goto <D.27854>;
            <D.27853>:
            D.27855 = &MEM[(void *)"--trace" + 1B];
            D.27856 = *D.27855;
            D.27857 = (int) D.27856;
            D.27858 = __s2 + 1;
            D.27859 = *D.27858;
            D.27860 = (int) D.27859;
            __result = D.27857 - D.27860;
            D.27861 = __s2_len > 1;
            D.27851 = __result == 0;
            D.27862 = D.27861 & D.27851;
            if (D.27862 != 0) goto <D.27863>; else goto <D.27864>;
            <D.27863>:
            D.27865 = &MEM[(void *)"--trace" + 2B];
            D.27866 = *D.27865;
            D.27867 = (int) D.27866;
            D.27868 = __s2 + 2;
            D.27869 = *D.27868;
            D.27870 = (int) D.27869;
            __result = D.27867 - D.27870;
            D.27871 = __s2_len > 2;
            D.27851 = __result == 0;
            D.27872 = D.27871 & D.27851;
            if (D.27872 != 0) goto <D.27873>; else goto <D.27874>;
            <D.27873>:
            D.27875 = &MEM[(void *)"--trace" + 3B];
            D.27876 = *D.27875;
            D.27877 = (int) D.27876;
            D.27878 = __s2 + 3;
            D.27879 = *D.27878;
            D.27880 = (int) D.27879;
            __result = D.27877 - D.27880;
            <D.27874>:
            <D.27864>:
            <D.27854>:
          }
          D.26252 = __result;
        }
        iftmp.39 = -D.26252;
        goto <D.27881>;
        <D.27844>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.39 = __builtin_strcmp (D.27167, "--trace");
        <D.27881>:
        D.26253 = iftmp.39;
      }
      if (D.26253 == 0) goto <D.27882>; else goto <D.27883>;
      <D.27882>:
      trace_options = "";
      goto <D.27884>;
      <D.27883>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27885 = strncmp (D.27167, "--trace=", 8);
      if (D.27885 == 0) goto <D.27886>; else goto <D.27887>;
      <D.27886>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      trace_options = D.27167 + 8;
      goto <D.27888>;
      <D.27887>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 11;
        if (__s2_len <= 3) goto <D.27890>; else goto <D.27891>;
        <D.27890>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27892 = "--breakonex";
          D.27893 = MEM[(const unsigned char *)D.27892];
          D.27894 = (int) D.27893;
          D.27895 = *__s2;
          D.27896 = (int) D.27895;
          __result = D.27894 - D.27896;
          {
            D.27897 = __s2_len != 0;
            D.27898 = __result == 0;
            D.27899 = D.27897 & D.27898;
            if (D.27899 != 0) goto <D.27900>; else goto <D.27901>;
            <D.27900>:
            D.27902 = &MEM[(void *)"--breakonex" + 1B];
            D.27903 = *D.27902;
            D.27904 = (int) D.27903;
            D.27905 = __s2 + 1;
            D.27906 = *D.27905;
            D.27907 = (int) D.27906;
            __result = D.27904 - D.27907;
            D.27908 = __s2_len > 1;
            D.27898 = __result == 0;
            D.27909 = D.27908 & D.27898;
            if (D.27909 != 0) goto <D.27910>; else goto <D.27911>;
            <D.27910>:
            D.27912 = &MEM[(void *)"--breakonex" + 2B];
            D.27913 = *D.27912;
            D.27914 = (int) D.27913;
            D.27915 = __s2 + 2;
            D.27916 = *D.27915;
            D.27917 = (int) D.27916;
            __result = D.27914 - D.27917;
            D.27918 = __s2_len > 2;
            D.27898 = __result == 0;
            D.27919 = D.27918 & D.27898;
            if (D.27919 != 0) goto <D.27920>; else goto <D.27921>;
            <D.27920>:
            D.27922 = &MEM[(void *)"--breakonex" + 3B];
            D.27923 = *D.27922;
            D.27924 = (int) D.27923;
            D.27925 = __s2 + 3;
            D.27926 = *D.27925;
            D.27927 = (int) D.27926;
            __result = D.27924 - D.27927;
            <D.27921>:
            <D.27911>:
            <D.27901>:
          }
          D.26270 = __result;
        }
        iftmp.40 = -D.26270;
        goto <D.27928>;
        <D.27891>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.40 = __builtin_strcmp (D.27167, "--breakonex");
        <D.27928>:
        D.26271 = iftmp.40;
      }
      if (D.26271 == 0) goto <D.27929>; else goto <D.27930>;
      <D.27929>:
      {
        struct MonoDebugOptions * opt;

        opt = mini_get_debug_options ();
        opt->break_on_exc = 1;
      }
      goto <D.27931>;
      <D.27930>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.27933>; else goto <D.27934>;
        <D.27933>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27935 = "--break";
          D.27936 = MEM[(const unsigned char *)D.27935];
          D.27937 = (int) D.27936;
          D.27938 = *__s2;
          D.27939 = (int) D.27938;
          __result = D.27937 - D.27939;
          {
            D.27940 = __s2_len != 0;
            D.27941 = __result == 0;
            D.27942 = D.27940 & D.27941;
            if (D.27942 != 0) goto <D.27943>; else goto <D.27944>;
            <D.27943>:
            D.27945 = &MEM[(void *)"--break" + 1B];
            D.27946 = *D.27945;
            D.27947 = (int) D.27946;
            D.27948 = __s2 + 1;
            D.27949 = *D.27948;
            D.27950 = (int) D.27949;
            __result = D.27947 - D.27950;
            D.27951 = __s2_len > 1;
            D.27941 = __result == 0;
            D.27952 = D.27951 & D.27941;
            if (D.27952 != 0) goto <D.27953>; else goto <D.27954>;
            <D.27953>:
            D.27955 = &MEM[(void *)"--break" + 2B];
            D.27956 = *D.27955;
            D.27957 = (int) D.27956;
            D.27958 = __s2 + 2;
            D.27959 = *D.27958;
            D.27960 = (int) D.27959;
            __result = D.27957 - D.27960;
            D.27961 = __s2_len > 2;
            D.27941 = __result == 0;
            D.27962 = D.27961 & D.27941;
            if (D.27962 != 0) goto <D.27963>; else goto <D.27964>;
            <D.27963>:
            D.27965 = &MEM[(void *)"--break" + 3B];
            D.27966 = *D.27965;
            D.27967 = (int) D.27966;
            D.27968 = __s2 + 3;
            D.27969 = *D.27968;
            D.27970 = (int) D.27969;
            __result = D.27967 - D.27970;
            <D.27964>:
            <D.27954>:
            <D.27944>:
          }
          D.26280 = __result;
        }
        iftmp.41 = -D.26280;
        goto <D.27971>;
        <D.27934>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.41 = __builtin_strcmp (D.27167, "--break");
        <D.27971>:
        D.26281 = iftmp.41;
      }
      if (D.26281 == 0) goto <D.27972>; else goto <D.27973>;
      <D.27972>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.27974>; else goto <D.27975>;
      <D.27974>:
      stderr.33 = stderr;
      fprintf (stderr.33, "Missing method name in --break command line option\n");
      D.27395 = 1;
      return D.27395;
      <D.27975>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.27976 = mono_debugger_insert_breakpoint (D.27167, 0);
      if (D.27976 == 0) goto <D.27977>; else goto <D.27978>;
      <D.27977>:
      stderr.33 = stderr;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      fprintf (stderr.33, "Error: invalid method name \'%s\'\n", D.27167);
      <D.27978>:
      goto <D.27979>;
      <D.27973>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 13;
        if (__s2_len <= 3) goto <D.27981>; else goto <D.27982>;
        <D.27981>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.27983 = "--break-at-bb";
          D.27984 = MEM[(const unsigned char *)D.27983];
          D.27985 = (int) D.27984;
          D.27986 = *__s2;
          D.27987 = (int) D.27986;
          __result = D.27985 - D.27987;
          {
            D.27988 = __s2_len != 0;
            D.27989 = __result == 0;
            D.27990 = D.27988 & D.27989;
            if (D.27990 != 0) goto <D.27991>; else goto <D.27992>;
            <D.27991>:
            D.27993 = &MEM[(void *)"--break-at-bb" + 1B];
            D.27994 = *D.27993;
            D.27995 = (int) D.27994;
            D.27996 = __s2 + 1;
            D.27997 = *D.27996;
            D.27998 = (int) D.27997;
            __result = D.27995 - D.27998;
            D.27999 = __s2_len > 1;
            D.27989 = __result == 0;
            D.28000 = D.27999 & D.27989;
            if (D.28000 != 0) goto <D.28001>; else goto <D.28002>;
            <D.28001>:
            D.28003 = &MEM[(void *)"--break-at-bb" + 2B];
            D.28004 = *D.28003;
            D.28005 = (int) D.28004;
            D.28006 = __s2 + 2;
            D.28007 = *D.28006;
            D.28008 = (int) D.28007;
            __result = D.28005 - D.28008;
            D.28009 = __s2_len > 2;
            D.27989 = __result == 0;
            D.28010 = D.28009 & D.27989;
            if (D.28010 != 0) goto <D.28011>; else goto <D.28012>;
            <D.28011>:
            D.28013 = &MEM[(void *)"--break-at-bb" + 3B];
            D.28014 = *D.28013;
            D.28015 = (int) D.28014;
            D.28016 = __s2 + 3;
            D.28017 = *D.28016;
            D.28018 = (int) D.28017;
            __result = D.28015 - D.28018;
            <D.28012>:
            <D.28002>:
            <D.27992>:
          }
          D.26289 = __result;
        }
        iftmp.42 = -D.26289;
        goto <D.28019>;
        <D.27982>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.42 = __builtin_strcmp (D.27167, "--break-at-bb");
        <D.28019>:
        D.26290 = iftmp.42;
      }
      if (D.26290 == 0) goto <D.28020>; else goto <D.28021>;
      <D.28020>:
      D.28022 = i + 2;
      if (D.28022 >= argc) goto <D.28023>; else goto <D.28024>;
      <D.28023>:
      stderr.33 = stderr;
      fprintf (stderr.33, "Missing method name or bb num in --break-at-bb command line option.");
      D.27395 = 1;
      return D.27395;
      <D.28024>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      mono_break_at_bb_method.43 = mono_method_desc_new (D.27167, 1);
      mono_break_at_bb_method = mono_break_at_bb_method.43;
      mono_break_at_bb_method.44 = mono_break_at_bb_method;
      if (mono_break_at_bb_method.44 == 0B) goto <D.28027>; else goto <D.28028>;
      <D.28027>:
      stderr.33 = stderr;
      fprintf (stderr.33, "Method name is in a bad format in --break-at-bb command line option.");
      D.27395 = 1;
      return D.27395;
      <D.28028>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      mono_break_at_bb_bb_num.45 = atoi (D.27167);
      mono_break_at_bb_bb_num = mono_break_at_bb_bb_num.45;
      goto <D.28030>;
      <D.28021>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 18;
        if (__s2_len <= 3) goto <D.28032>; else goto <D.28033>;
        <D.28032>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28034 = "--inject-async-exc";
          D.28035 = MEM[(const unsigned char *)D.28034];
          D.28036 = (int) D.28035;
          D.28037 = *__s2;
          D.28038 = (int) D.28037;
          __result = D.28036 - D.28038;
          {
            D.28039 = __s2_len != 0;
            D.28040 = __result == 0;
            D.28041 = D.28039 & D.28040;
            if (D.28041 != 0) goto <D.28042>; else goto <D.28043>;
            <D.28042>:
            D.28044 = &MEM[(void *)"--inject-async-exc" + 1B];
            D.28045 = *D.28044;
            D.28046 = (int) D.28045;
            D.28047 = __s2 + 1;
            D.28048 = *D.28047;
            D.28049 = (int) D.28048;
            __result = D.28046 - D.28049;
            D.28050 = __s2_len > 1;
            D.28040 = __result == 0;
            D.28051 = D.28050 & D.28040;
            if (D.28051 != 0) goto <D.28052>; else goto <D.28053>;
            <D.28052>:
            D.28054 = &MEM[(void *)"--inject-async-exc" + 2B];
            D.28055 = *D.28054;
            D.28056 = (int) D.28055;
            D.28057 = __s2 + 2;
            D.28058 = *D.28057;
            D.28059 = (int) D.28058;
            __result = D.28056 - D.28059;
            D.28060 = __s2_len > 2;
            D.28040 = __result == 0;
            D.28061 = D.28060 & D.28040;
            if (D.28061 != 0) goto <D.28062>; else goto <D.28063>;
            <D.28062>:
            D.28064 = &MEM[(void *)"--inject-async-exc" + 3B];
            D.28065 = *D.28064;
            D.28066 = (int) D.28065;
            D.28067 = __s2 + 3;
            D.28068 = *D.28067;
            D.28069 = (int) D.28068;
            __result = D.28066 - D.28069;
            <D.28063>:
            <D.28053>:
            <D.28043>:
          }
          D.26298 = __result;
        }
        iftmp.46 = -D.26298;
        goto <D.28070>;
        <D.28033>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.46 = __builtin_strcmp (D.27167, "--inject-async-exc");
        <D.28070>:
        D.26299 = iftmp.46;
      }
      if (D.26299 == 0) goto <D.28071>; else goto <D.28072>;
      <D.28071>:
      D.28022 = i + 2;
      if (D.28022 >= argc) goto <D.28073>; else goto <D.28074>;
      <D.28073>:
      stderr.33 = stderr;
      fprintf (stderr.33, "Missing method name or position in --inject-async-exc command line option\n");
      D.27395 = 1;
      return D.27395;
      <D.28074>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      mono_inject_async_exc_method.47 = mono_method_desc_new (D.27167, 1);
      mono_inject_async_exc_method = mono_inject_async_exc_method.47;
      mono_inject_async_exc_method.48 = mono_inject_async_exc_method;
      if (mono_inject_async_exc_method.48 == 0B) goto <D.28077>; else goto <D.28078>;
      <D.28077>:
      stderr.33 = stderr;
      fprintf (stderr.33, "Method name is in a bad format in --inject-async-exc command line option\n");
      D.27395 = 1;
      return D.27395;
      <D.28078>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      mono_inject_async_exc_pos.49 = atoi (D.27167);
      mono_inject_async_exc_pos = mono_inject_async_exc_pos.49;
      goto <D.28080>;
      <D.28072>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 12;
        if (__s2_len <= 3) goto <D.28082>; else goto <D.28083>;
        <D.28082>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28084 = "--verify-all";
          D.28085 = MEM[(const unsigned char *)D.28084];
          D.28086 = (int) D.28085;
          D.28087 = *__s2;
          D.28088 = (int) D.28087;
          __result = D.28086 - D.28088;
          {
            D.28089 = __s2_len != 0;
            D.28090 = __result == 0;
            D.28091 = D.28089 & D.28090;
            if (D.28091 != 0) goto <D.28092>; else goto <D.28093>;
            <D.28092>:
            D.28094 = &MEM[(void *)"--verify-all" + 1B];
            D.28095 = *D.28094;
            D.28096 = (int) D.28095;
            D.28097 = __s2 + 1;
            D.28098 = *D.28097;
            D.28099 = (int) D.28098;
            __result = D.28096 - D.28099;
            D.28100 = __s2_len > 1;
            D.28090 = __result == 0;
            D.28101 = D.28100 & D.28090;
            if (D.28101 != 0) goto <D.28102>; else goto <D.28103>;
            <D.28102>:
            D.28104 = &MEM[(void *)"--verify-all" + 2B];
            D.28105 = *D.28104;
            D.28106 = (int) D.28105;
            D.28107 = __s2 + 2;
            D.28108 = *D.28107;
            D.28109 = (int) D.28108;
            __result = D.28106 - D.28109;
            D.28110 = __s2_len > 2;
            D.28090 = __result == 0;
            D.28111 = D.28110 & D.28090;
            if (D.28111 != 0) goto <D.28112>; else goto <D.28113>;
            <D.28112>:
            D.28114 = &MEM[(void *)"--verify-all" + 3B];
            D.28115 = *D.28114;
            D.28116 = (int) D.28115;
            D.28117 = __s2 + 3;
            D.28118 = *D.28117;
            D.28119 = (int) D.28118;
            __result = D.28116 - D.28119;
            <D.28113>:
            <D.28103>:
            <D.28093>:
          }
          D.26307 = __result;
        }
        iftmp.50 = -D.26307;
        goto <D.28120>;
        <D.28083>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.50 = __builtin_strcmp (D.27167, "--verify-all");
        <D.28120>:
        D.26308 = iftmp.50;
      }
      if (D.26308 == 0) goto <D.28121>; else goto <D.28122>;
      <D.28121>:
      mono_verifier_enable_verify_all ();
      goto <D.28123>;
      <D.28122>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 10;
        if (__s2_len <= 3) goto <D.28125>; else goto <D.28126>;
        <D.28125>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28127 = "--full-aot";
          D.28128 = MEM[(const unsigned char *)D.28127];
          D.28129 = (int) D.28128;
          D.28130 = *__s2;
          D.28131 = (int) D.28130;
          __result = D.28129 - D.28131;
          {
            D.28132 = __s2_len != 0;
            D.28133 = __result == 0;
            D.28134 = D.28132 & D.28133;
            if (D.28134 != 0) goto <D.28135>; else goto <D.28136>;
            <D.28135>:
            D.28137 = &MEM[(void *)"--full-aot" + 1B];
            D.28138 = *D.28137;
            D.28139 = (int) D.28138;
            D.28140 = __s2 + 1;
            D.28141 = *D.28140;
            D.28142 = (int) D.28141;
            __result = D.28139 - D.28142;
            D.28143 = __s2_len > 1;
            D.28133 = __result == 0;
            D.28144 = D.28143 & D.28133;
            if (D.28144 != 0) goto <D.28145>; else goto <D.28146>;
            <D.28145>:
            D.28147 = &MEM[(void *)"--full-aot" + 2B];
            D.28148 = *D.28147;
            D.28149 = (int) D.28148;
            D.28150 = __s2 + 2;
            D.28151 = *D.28150;
            D.28152 = (int) D.28151;
            __result = D.28149 - D.28152;
            D.28153 = __s2_len > 2;
            D.28133 = __result == 0;
            D.28154 = D.28153 & D.28133;
            if (D.28154 != 0) goto <D.28155>; else goto <D.28156>;
            <D.28155>:
            D.28157 = &MEM[(void *)"--full-aot" + 3B];
            D.28158 = *D.28157;
            D.28159 = (int) D.28158;
            D.28160 = __s2 + 3;
            D.28161 = *D.28160;
            D.28162 = (int) D.28161;
            __result = D.28159 - D.28162;
            <D.28156>:
            <D.28146>:
            <D.28136>:
          }
          D.26316 = __result;
        }
        iftmp.51 = -D.26316;
        goto <D.28163>;
        <D.28126>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.51 = __builtin_strcmp (D.27167, "--full-aot");
        <D.28163>:
        D.26317 = iftmp.51;
      }
      if (D.26317 == 0) goto <D.28164>; else goto <D.28165>;
      <D.28164>:
      mono_aot_only = 1;
      goto <D.28166>;
      <D.28165>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 14;
        if (__s2_len <= 3) goto <D.28168>; else goto <D.28169>;
        <D.28168>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28170 = "--print-vtable";
          D.28171 = MEM[(const unsigned char *)D.28170];
          D.28172 = (int) D.28171;
          D.28173 = *__s2;
          D.28174 = (int) D.28173;
          __result = D.28172 - D.28174;
          {
            D.28175 = __s2_len != 0;
            D.28176 = __result == 0;
            D.28177 = D.28175 & D.28176;
            if (D.28177 != 0) goto <D.28178>; else goto <D.28179>;
            <D.28178>:
            D.28180 = &MEM[(void *)"--print-vtable" + 1B];
            D.28181 = *D.28180;
            D.28182 = (int) D.28181;
            D.28183 = __s2 + 1;
            D.28184 = *D.28183;
            D.28185 = (int) D.28184;
            __result = D.28182 - D.28185;
            D.28186 = __s2_len > 1;
            D.28176 = __result == 0;
            D.28187 = D.28186 & D.28176;
            if (D.28187 != 0) goto <D.28188>; else goto <D.28189>;
            <D.28188>:
            D.28190 = &MEM[(void *)"--print-vtable" + 2B];
            D.28191 = *D.28190;
            D.28192 = (int) D.28191;
            D.28193 = __s2 + 2;
            D.28194 = *D.28193;
            D.28195 = (int) D.28194;
            __result = D.28192 - D.28195;
            D.28196 = __s2_len > 2;
            D.28176 = __result == 0;
            D.28197 = D.28196 & D.28176;
            if (D.28197 != 0) goto <D.28198>; else goto <D.28199>;
            <D.28198>:
            D.28200 = &MEM[(void *)"--print-vtable" + 3B];
            D.28201 = *D.28200;
            D.28202 = (int) D.28201;
            D.28203 = __s2 + 3;
            D.28204 = *D.28203;
            D.28205 = (int) D.28204;
            __result = D.28202 - D.28205;
            <D.28199>:
            <D.28189>:
            <D.28179>:
          }
          D.26325 = __result;
        }
        iftmp.52 = -D.26325;
        goto <D.28206>;
        <D.28169>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.52 = __builtin_strcmp (D.27167, "--print-vtable");
        <D.28206>:
        D.26326 = iftmp.52;
      }
      if (D.26326 == 0) goto <D.28207>; else goto <D.28208>;
      <D.28207>:
      mono_print_vtable = 1;
      goto <D.28209>;
      <D.28208>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.28211>; else goto <D.28212>;
        <D.28211>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28213 = "--stats";
          D.28214 = MEM[(const unsigned char *)D.28213];
          D.28215 = (int) D.28214;
          D.28216 = *__s2;
          D.28217 = (int) D.28216;
          __result = D.28215 - D.28217;
          {
            D.28218 = __s2_len != 0;
            D.28219 = __result == 0;
            D.28220 = D.28218 & D.28219;
            if (D.28220 != 0) goto <D.28221>; else goto <D.28222>;
            <D.28221>:
            D.28223 = &MEM[(void *)"--stats" + 1B];
            D.28224 = *D.28223;
            D.28225 = (int) D.28224;
            D.28226 = __s2 + 1;
            D.28227 = *D.28226;
            D.28228 = (int) D.28227;
            __result = D.28225 - D.28228;
            D.28229 = __s2_len > 1;
            D.28219 = __result == 0;
            D.28230 = D.28229 & D.28219;
            if (D.28230 != 0) goto <D.28231>; else goto <D.28232>;
            <D.28231>:
            D.28233 = &MEM[(void *)"--stats" + 2B];
            D.28234 = *D.28233;
            D.28235 = (int) D.28234;
            D.28236 = __s2 + 2;
            D.28237 = *D.28236;
            D.28238 = (int) D.28237;
            __result = D.28235 - D.28238;
            D.28239 = __s2_len > 2;
            D.28219 = __result == 0;
            D.28240 = D.28239 & D.28219;
            if (D.28240 != 0) goto <D.28241>; else goto <D.28242>;
            <D.28241>:
            D.28243 = &MEM[(void *)"--stats" + 3B];
            D.28244 = *D.28243;
            D.28245 = (int) D.28244;
            D.28246 = __s2 + 3;
            D.28247 = *D.28246;
            D.28248 = (int) D.28247;
            __result = D.28245 - D.28248;
            <D.28242>:
            <D.28232>:
            <D.28222>:
          }
          D.26334 = __result;
        }
        iftmp.53 = -D.26334;
        goto <D.28249>;
        <D.28212>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.53 = __builtin_strcmp (D.27167, "--stats");
        <D.28249>:
        D.26335 = iftmp.53;
      }
      if (D.26335 == 0) goto <D.28250>; else goto <D.28251>;
      <D.28250>:
      mono_counters_enable (-1);
      mono_stats.enabled = 1;
      mono_jit_stats.enabled = 1;
      goto <D.28252>;
      <D.28251>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 5;
        if (__s2_len <= 3) goto <D.28254>; else goto <D.28255>;
        <D.28254>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28256 = "--aot";
          D.28257 = MEM[(const unsigned char *)D.28256];
          D.28258 = (int) D.28257;
          D.28259 = *__s2;
          D.28260 = (int) D.28259;
          __result = D.28258 - D.28260;
          {
            D.28261 = __s2_len != 0;
            D.28262 = __result == 0;
            D.28263 = D.28261 & D.28262;
            if (D.28263 != 0) goto <D.28264>; else goto <D.28265>;
            <D.28264>:
            D.28266 = &MEM[(void *)"--aot" + 1B];
            D.28267 = *D.28266;
            D.28268 = (int) D.28267;
            D.28269 = __s2 + 1;
            D.28270 = *D.28269;
            D.28271 = (int) D.28270;
            __result = D.28268 - D.28271;
            D.28272 = __s2_len > 1;
            D.28262 = __result == 0;
            D.28273 = D.28272 & D.28262;
            if (D.28273 != 0) goto <D.28274>; else goto <D.28275>;
            <D.28274>:
            D.28276 = &MEM[(void *)"--aot" + 2B];
            D.28277 = *D.28276;
            D.28278 = (int) D.28277;
            D.28279 = __s2 + 2;
            D.28280 = *D.28279;
            D.28281 = (int) D.28280;
            __result = D.28278 - D.28281;
            D.28282 = __s2_len > 2;
            D.28262 = __result == 0;
            D.28283 = D.28282 & D.28262;
            if (D.28283 != 0) goto <D.28284>; else goto <D.28285>;
            <D.28284>:
            D.28286 = &MEM[(void *)"--aot" + 3B];
            D.28287 = *D.28286;
            D.28288 = (int) D.28287;
            D.28289 = __s2 + 3;
            D.28290 = *D.28289;
            D.28291 = (int) D.28290;
            __result = D.28288 - D.28291;
            <D.28285>:
            <D.28275>:
            <D.28265>:
          }
          D.26343 = __result;
        }
        iftmp.54 = -D.26343;
        goto <D.28292>;
        <D.28255>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.54 = __builtin_strcmp (D.27167, "--aot");
        <D.28292>:
        D.26344 = iftmp.54;
      }
      if (D.26344 == 0) goto <D.28293>; else goto <D.28294>;
      <D.28293>:
      mono_compile_aot = 1;
      goto <D.28295>;
      <D.28294>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28296 = strncmp (D.27167, "--aot=", 6);
      if (D.28296 == 0) goto <D.28297>; else goto <D.28298>;
      <D.28297>:
      mono_compile_aot = 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      aot_options = D.27167 + 6;
      goto <D.28299>;
      <D.28298>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28300 = strncmp (D.27167, "--compile-all=", 14);
      if (D.28300 == 0) goto <D.28301>; else goto <D.28302>;
      <D.28301>:
      action = 3;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28303 = D.27167 + 14;
      D.28304 = atoi (D.28303);
      recompilation_times = (guint32) D.28304;
      goto <D.28305>;
      <D.28302>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 13;
        if (__s2_len <= 3) goto <D.28307>; else goto <D.28308>;
        <D.28307>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28309 = "--compile-all";
          D.28310 = MEM[(const unsigned char *)D.28309];
          D.28311 = (int) D.28310;
          D.28312 = *__s2;
          D.28313 = (int) D.28312;
          __result = D.28311 - D.28313;
          {
            D.28314 = __s2_len != 0;
            D.28315 = __result == 0;
            D.28316 = D.28314 & D.28315;
            if (D.28316 != 0) goto <D.28317>; else goto <D.28318>;
            <D.28317>:
            D.28319 = &MEM[(void *)"--compile-all" + 1B];
            D.28320 = *D.28319;
            D.28321 = (int) D.28320;
            D.28322 = __s2 + 1;
            D.28323 = *D.28322;
            D.28324 = (int) D.28323;
            __result = D.28321 - D.28324;
            D.28325 = __s2_len > 1;
            D.28315 = __result == 0;
            D.28326 = D.28325 & D.28315;
            if (D.28326 != 0) goto <D.28327>; else goto <D.28328>;
            <D.28327>:
            D.28329 = &MEM[(void *)"--compile-all" + 2B];
            D.28330 = *D.28329;
            D.28331 = (int) D.28330;
            D.28332 = __s2 + 2;
            D.28333 = *D.28332;
            D.28334 = (int) D.28333;
            __result = D.28331 - D.28334;
            D.28335 = __s2_len > 2;
            D.28315 = __result == 0;
            D.28336 = D.28335 & D.28315;
            if (D.28336 != 0) goto <D.28337>; else goto <D.28338>;
            <D.28337>:
            D.28339 = &MEM[(void *)"--compile-all" + 3B];
            D.28340 = *D.28339;
            D.28341 = (int) D.28340;
            D.28342 = __s2 + 3;
            D.28343 = *D.28342;
            D.28344 = (int) D.28343;
            __result = D.28341 - D.28344;
            <D.28338>:
            <D.28328>:
            <D.28318>:
          }
          D.26370 = __result;
        }
        iftmp.55 = -D.26370;
        goto <D.28345>;
        <D.28308>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.55 = __builtin_strcmp (D.27167, "--compile-all");
        <D.28345>:
        D.26371 = iftmp.55;
      }
      if (D.26371 == 0) goto <D.28346>; else goto <D.28347>;
      <D.28346>:
      action = 3;
      goto <D.28348>;
      <D.28347>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28349 = strncmp (D.27167, "--runtime=", 10);
      if (D.28349 == 0) goto <D.28350>; else goto <D.28351>;
      <D.28350>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      forced_version = D.27167 + 10;
      goto <D.28352>;
      <D.28351>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 8;
        if (__s2_len <= 3) goto <D.28354>; else goto <D.28355>;
        <D.28354>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28356 = "--jitmap";
          D.28357 = MEM[(const unsigned char *)D.28356];
          D.28358 = (int) D.28357;
          D.28359 = *__s2;
          D.28360 = (int) D.28359;
          __result = D.28358 - D.28360;
          {
            D.28361 = __s2_len != 0;
            D.28362 = __result == 0;
            D.28363 = D.28361 & D.28362;
            if (D.28363 != 0) goto <D.28364>; else goto <D.28365>;
            <D.28364>:
            D.28366 = &MEM[(void *)"--jitmap" + 1B];
            D.28367 = *D.28366;
            D.28368 = (int) D.28367;
            D.28369 = __s2 + 1;
            D.28370 = *D.28369;
            D.28371 = (int) D.28370;
            __result = D.28368 - D.28371;
            D.28372 = __s2_len > 1;
            D.28362 = __result == 0;
            D.28373 = D.28372 & D.28362;
            if (D.28373 != 0) goto <D.28374>; else goto <D.28375>;
            <D.28374>:
            D.28376 = &MEM[(void *)"--jitmap" + 2B];
            D.28377 = *D.28376;
            D.28378 = (int) D.28377;
            D.28379 = __s2 + 2;
            D.28380 = *D.28379;
            D.28381 = (int) D.28380;
            __result = D.28378 - D.28381;
            D.28382 = __s2_len > 2;
            D.28362 = __result == 0;
            D.28383 = D.28382 & D.28362;
            if (D.28383 != 0) goto <D.28384>; else goto <D.28385>;
            <D.28384>:
            D.28386 = &MEM[(void *)"--jitmap" + 3B];
            D.28387 = *D.28386;
            D.28388 = (int) D.28387;
            D.28389 = __s2 + 3;
            D.28390 = *D.28389;
            D.28391 = (int) D.28390;
            __result = D.28388 - D.28391;
            <D.28385>:
            <D.28375>:
            <D.28365>:
          }
          D.26388 = __result;
        }
        iftmp.56 = -D.26388;
        goto <D.28392>;
        <D.28355>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.56 = __builtin_strcmp (D.27167, "--jitmap");
        <D.28392>:
        D.26389 = iftmp.56;
      }
      if (D.26389 == 0) goto <D.28393>; else goto <D.28394>;
      <D.28393>:
      mono_enable_jit_map ();
      goto <D.28395>;
      <D.28394>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 9;
        if (__s2_len <= 3) goto <D.28397>; else goto <D.28398>;
        <D.28397>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28399 = "--profile";
          D.28400 = MEM[(const unsigned char *)D.28399];
          D.28401 = (int) D.28400;
          D.28402 = *__s2;
          D.28403 = (int) D.28402;
          __result = D.28401 - D.28403;
          {
            D.28404 = __s2_len != 0;
            D.28405 = __result == 0;
            D.28406 = D.28404 & D.28405;
            if (D.28406 != 0) goto <D.28407>; else goto <D.28408>;
            <D.28407>:
            D.28409 = &MEM[(void *)"--profile" + 1B];
            D.28410 = *D.28409;
            D.28411 = (int) D.28410;
            D.28412 = __s2 + 1;
            D.28413 = *D.28412;
            D.28414 = (int) D.28413;
            __result = D.28411 - D.28414;
            D.28415 = __s2_len > 1;
            D.28405 = __result == 0;
            D.28416 = D.28415 & D.28405;
            if (D.28416 != 0) goto <D.28417>; else goto <D.28418>;
            <D.28417>:
            D.28419 = &MEM[(void *)"--profile" + 2B];
            D.28420 = *D.28419;
            D.28421 = (int) D.28420;
            D.28422 = __s2 + 2;
            D.28423 = *D.28422;
            D.28424 = (int) D.28423;
            __result = D.28421 - D.28424;
            D.28425 = __s2_len > 2;
            D.28405 = __result == 0;
            D.28426 = D.28425 & D.28405;
            if (D.28426 != 0) goto <D.28427>; else goto <D.28428>;
            <D.28427>:
            D.28429 = &MEM[(void *)"--profile" + 3B];
            D.28430 = *D.28429;
            D.28431 = (int) D.28430;
            D.28432 = __s2 + 3;
            D.28433 = *D.28432;
            D.28434 = (int) D.28433;
            __result = D.28431 - D.28434;
            <D.28428>:
            <D.28418>:
            <D.28408>:
          }
          D.26397 = __result;
        }
        iftmp.57 = -D.26397;
        goto <D.28435>;
        <D.28398>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.57 = __builtin_strcmp (D.27167, "--profile");
        <D.28435>:
        D.26398 = iftmp.57;
      }
      if (D.26398 == 0) goto <D.28436>; else goto <D.28437>;
      <D.28436>:
      enable_profile = 1;
      profile_options = 0B;
      goto <D.28438>;
      <D.28437>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28439 = strncmp (D.27167, "--profile=", 10);
      if (D.28439 == 0) goto <D.28440>; else goto <D.28441>;
      <D.28440>:
      enable_profile = 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      profile_options = D.27167 + 10;
      goto <D.28442>;
      <D.28441>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28443 = strncmp (D.27167, "--agent=", 8);
      if (D.28443 == 0) goto <D.28444>; else goto <D.28445>;
      <D.28444>:
      if (agents == 0B) goto <D.28446>; else goto <D.28447>;
      <D.28446>:
      agents = monoeg_g_ptr_array_new ();
      <D.28447>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28448 = D.27167 + 8;
      monoeg_g_ptr_array_add (agents, D.28448);
      goto <D.28449>;
      <D.28445>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28450 = strncmp (D.27167, "--attach=", 9);
      if (D.28450 == 0) goto <D.28451>; else goto <D.28452>;
      <D.28451>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      attach_options = D.27167 + 9;
      goto <D.28453>;
      <D.28452>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 9;
        if (__s2_len <= 3) goto <D.28455>; else goto <D.28456>;
        <D.28455>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28457 = "--compile";
          D.28458 = MEM[(const unsigned char *)D.28457];
          D.28459 = (int) D.28458;
          D.28460 = *__s2;
          D.28461 = (int) D.28460;
          __result = D.28459 - D.28461;
          {
            D.28462 = __s2_len != 0;
            D.28463 = __result == 0;
            D.28464 = D.28462 & D.28463;
            if (D.28464 != 0) goto <D.28465>; else goto <D.28466>;
            <D.28465>:
            D.28467 = &MEM[(void *)"--compile" + 1B];
            D.28468 = *D.28467;
            D.28469 = (int) D.28468;
            D.28470 = __s2 + 1;
            D.28471 = *D.28470;
            D.28472 = (int) D.28471;
            __result = D.28469 - D.28472;
            D.28473 = __s2_len > 1;
            D.28463 = __result == 0;
            D.28474 = D.28473 & D.28463;
            if (D.28474 != 0) goto <D.28475>; else goto <D.28476>;
            <D.28475>:
            D.28477 = &MEM[(void *)"--compile" + 2B];
            D.28478 = *D.28477;
            D.28479 = (int) D.28478;
            D.28480 = __s2 + 2;
            D.28481 = *D.28480;
            D.28482 = (int) D.28481;
            __result = D.28479 - D.28482;
            D.28483 = __s2_len > 2;
            D.28463 = __result == 0;
            D.28484 = D.28483 & D.28463;
            if (D.28484 != 0) goto <D.28485>; else goto <D.28486>;
            <D.28485>:
            D.28487 = &MEM[(void *)"--compile" + 3B];
            D.28488 = *D.28487;
            D.28489 = (int) D.28488;
            D.28490 = __s2 + 3;
            D.28491 = *D.28490;
            D.28492 = (int) D.28491;
            __result = D.28489 - D.28492;
            <D.28486>:
            <D.28476>:
            <D.28466>:
          }
          D.26433 = __result;
        }
        iftmp.58 = -D.26433;
        goto <D.28493>;
        <D.28456>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.58 = __builtin_strcmp (D.27167, "--compile");
        <D.28493>:
        D.26434 = iftmp.58;
      }
      if (D.26434 == 0) goto <D.28494>; else goto <D.28495>;
      <D.28494>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.28496>; else goto <D.28497>;
      <D.28496>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --compile option requires a method name argument\n");
      D.27395 = 1;
      return D.27395;
      <D.28497>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      mname = *D.27166;
      action = 0;
      goto <D.28498>;
      <D.28495>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28499 = strncmp (D.27167, "--graph=", 8);
      if (D.28499 == 0) goto <D.28500>; else goto <D.28501>;
      <D.28500>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.28502>; else goto <D.28503>;
      <D.28502>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --graph option requires a method name argument\n");
      D.27395 = 1;
      return D.27395;
      <D.28503>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28504 = D.27167 + 8;
      mono_graph_options = mono_parse_graph_options (D.28504);
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      mname = *D.27166;
      action = 5;
      goto <D.28505>;
      <D.28501>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.28507>; else goto <D.28508>;
        <D.28507>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28509 = "--graph";
          D.28510 = MEM[(const unsigned char *)D.28509];
          D.28511 = (int) D.28510;
          D.28512 = *__s2;
          D.28513 = (int) D.28512;
          __result = D.28511 - D.28513;
          {
            D.28514 = __s2_len != 0;
            D.28515 = __result == 0;
            D.28516 = D.28514 & D.28515;
            if (D.28516 != 0) goto <D.28517>; else goto <D.28518>;
            <D.28517>:
            D.28519 = &MEM[(void *)"--graph" + 1B];
            D.28520 = *D.28519;
            D.28521 = (int) D.28520;
            D.28522 = __s2 + 1;
            D.28523 = *D.28522;
            D.28524 = (int) D.28523;
            __result = D.28521 - D.28524;
            D.28525 = __s2_len > 1;
            D.28515 = __result == 0;
            D.28526 = D.28525 & D.28515;
            if (D.28526 != 0) goto <D.28527>; else goto <D.28528>;
            <D.28527>:
            D.28529 = &MEM[(void *)"--graph" + 2B];
            D.28530 = *D.28529;
            D.28531 = (int) D.28530;
            D.28532 = __s2 + 2;
            D.28533 = *D.28532;
            D.28534 = (int) D.28533;
            __result = D.28531 - D.28534;
            D.28535 = __s2_len > 2;
            D.28515 = __result == 0;
            D.28536 = D.28535 & D.28515;
            if (D.28536 != 0) goto <D.28537>; else goto <D.28538>;
            <D.28537>:
            D.28539 = &MEM[(void *)"--graph" + 3B];
            D.28540 = *D.28539;
            D.28541 = (int) D.28540;
            D.28542 = __s2 + 3;
            D.28543 = *D.28542;
            D.28544 = (int) D.28543;
            __result = D.28541 - D.28544;
            <D.28538>:
            <D.28528>:
            <D.28518>:
          }
          D.26451 = __result;
        }
        iftmp.59 = -D.26451;
        goto <D.28545>;
        <D.28508>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.59 = __builtin_strcmp (D.27167, "--graph");
        <D.28545>:
        D.26452 = iftmp.59;
      }
      if (D.26452 == 0) goto <D.28546>; else goto <D.28547>;
      <D.28546>:
      D.27650 = i + 1;
      if (D.27650 >= argc) goto <D.28548>; else goto <D.28549>;
      <D.28548>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --graph option requires a method name argument\n");
      D.27395 = 1;
      return D.27395;
      <D.28549>:
      i = i + 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      mname = *D.27166;
      mono_graph_options = 1;
      action = 5;
      goto <D.28550>;
      <D.28547>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.28552>; else goto <D.28553>;
        <D.28552>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28554 = "--debug";
          D.28555 = MEM[(const unsigned char *)D.28554];
          D.28556 = (int) D.28555;
          D.28557 = *__s2;
          D.28558 = (int) D.28557;
          __result = D.28556 - D.28558;
          {
            D.28559 = __s2_len != 0;
            D.28560 = __result == 0;
            D.28561 = D.28559 & D.28560;
            if (D.28561 != 0) goto <D.28562>; else goto <D.28563>;
            <D.28562>:
            D.28564 = &MEM[(void *)"--debug" + 1B];
            D.28565 = *D.28564;
            D.28566 = (int) D.28565;
            D.28567 = __s2 + 1;
            D.28568 = *D.28567;
            D.28569 = (int) D.28568;
            __result = D.28566 - D.28569;
            D.28570 = __s2_len > 1;
            D.28560 = __result == 0;
            D.28571 = D.28570 & D.28560;
            if (D.28571 != 0) goto <D.28572>; else goto <D.28573>;
            <D.28572>:
            D.28574 = &MEM[(void *)"--debug" + 2B];
            D.28575 = *D.28574;
            D.28576 = (int) D.28575;
            D.28577 = __s2 + 2;
            D.28578 = *D.28577;
            D.28579 = (int) D.28578;
            __result = D.28576 - D.28579;
            D.28580 = __s2_len > 2;
            D.28560 = __result == 0;
            D.28581 = D.28580 & D.28560;
            if (D.28581 != 0) goto <D.28582>; else goto <D.28583>;
            <D.28582>:
            D.28584 = &MEM[(void *)"--debug" + 3B];
            D.28585 = *D.28584;
            D.28586 = (int) D.28585;
            D.28587 = __s2 + 3;
            D.28588 = *D.28587;
            D.28589 = (int) D.28588;
            __result = D.28586 - D.28589;
            <D.28583>:
            <D.28573>:
            <D.28563>:
          }
          D.26460 = __result;
        }
        iftmp.60 = -D.26460;
        goto <D.28590>;
        <D.28553>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.60 = __builtin_strcmp (D.27167, "--debug");
        <D.28590>:
        D.26461 = iftmp.60;
      }
      if (D.26461 == 0) goto <D.28591>; else goto <D.28592>;
      <D.28591>:
      enable_debugging = 1;
      goto <D.28593>;
      <D.28592>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28594 = strncmp (D.27167, "--debug=", 8);
      if (D.28594 == 0) goto <D.28595>; else goto <D.28596>;
      <D.28595>:
      enable_debugging = 1;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28504 = D.27167 + 8;
      D.28597 = parse_debug_options (D.28504);
      if (D.28597 == 0) goto <D.28598>; else goto <D.28599>;
      <D.28598>:
      D.27395 = 1;
      return D.27395;
      <D.28599>:
      goto <D.28600>;
      <D.28596>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28601 = strncmp (D.27167, "--debugger-agent=", 17);
      if (D.28601 == 0) goto <D.28602>; else goto <D.28603>;
      <D.28602>:
      {
        struct MonoDebugOptions * opt;

        opt = mini_get_debug_options ();
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.28604 = D.27167 + 17;
        mono_debugger_agent_parse_options (D.28604);
        opt->mdb_optimizations = 1;
        enable_debugging = 1;
      }
      goto <D.28605>;
      <D.28603>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 10;
        if (__s2_len <= 3) goto <D.28607>; else goto <D.28608>;
        <D.28607>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28609 = "--security";
          D.28610 = MEM[(const unsigned char *)D.28609];
          D.28611 = (int) D.28610;
          D.28612 = *__s2;
          D.28613 = (int) D.28612;
          __result = D.28611 - D.28613;
          {
            D.28614 = __s2_len != 0;
            D.28615 = __result == 0;
            D.28616 = D.28614 & D.28615;
            if (D.28616 != 0) goto <D.28617>; else goto <D.28618>;
            <D.28617>:
            D.28619 = &MEM[(void *)"--security" + 1B];
            D.28620 = *D.28619;
            D.28621 = (int) D.28620;
            D.28622 = __s2 + 1;
            D.28623 = *D.28622;
            D.28624 = (int) D.28623;
            __result = D.28621 - D.28624;
            D.28625 = __s2_len > 1;
            D.28615 = __result == 0;
            D.28626 = D.28625 & D.28615;
            if (D.28626 != 0) goto <D.28627>; else goto <D.28628>;
            <D.28627>:
            D.28629 = &MEM[(void *)"--security" + 2B];
            D.28630 = *D.28629;
            D.28631 = (int) D.28630;
            D.28632 = __s2 + 2;
            D.28633 = *D.28632;
            D.28634 = (int) D.28633;
            __result = D.28631 - D.28634;
            D.28635 = __s2_len > 2;
            D.28615 = __result == 0;
            D.28636 = D.28635 & D.28615;
            if (D.28636 != 0) goto <D.28637>; else goto <D.28638>;
            <D.28637>:
            D.28639 = &MEM[(void *)"--security" + 3B];
            D.28640 = *D.28639;
            D.28641 = (int) D.28640;
            D.28642 = __s2 + 3;
            D.28643 = *D.28642;
            D.28644 = (int) D.28643;
            __result = D.28641 - D.28644;
            <D.28638>:
            <D.28628>:
            <D.28618>:
          }
          D.26488 = __result;
        }
        iftmp.61 = -D.26488;
        goto <D.28645>;
        <D.28608>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.61 = __builtin_strcmp (D.27167, "--security");
        <D.28645>:
        D.26489 = iftmp.61;
      }
      if (D.26489 == 0) goto <D.28646>; else goto <D.28647>;
      <D.28646>:
      mono_verifier_set_mode (2);
      mono_security_set_mode (2);
      mono_activate_security_manager ();
      goto <D.28648>;
      <D.28647>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.28649 = strncmp (D.27167, "--security=", 11);
      if (D.28649 == 0) goto <D.28650>; else goto <D.28651>;
      <D.28650>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 19;
        if (__s2_len <= 3) goto <D.28653>; else goto <D.28654>;
        <D.28653>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 11;
          D.28655 = "temporary-smcs-hack";
          D.28656 = MEM[(const unsigned char *)D.28655];
          D.28657 = (int) D.28656;
          D.28658 = *__s2;
          D.28659 = (int) D.28658;
          __result = D.28657 - D.28659;
          {
            D.28660 = __s2_len != 0;
            D.28661 = __result == 0;
            D.28662 = D.28660 & D.28661;
            if (D.28662 != 0) goto <D.28663>; else goto <D.28664>;
            <D.28663>:
            D.28665 = &MEM[(void *)"temporary-smcs-hack" + 1B];
            D.28666 = *D.28665;
            D.28667 = (int) D.28666;
            D.28668 = __s2 + 1;
            D.28669 = *D.28668;
            D.28670 = (int) D.28669;
            __result = D.28667 - D.28670;
            D.28671 = __s2_len > 1;
            D.28661 = __result == 0;
            D.28672 = D.28671 & D.28661;
            if (D.28672 != 0) goto <D.28673>; else goto <D.28674>;
            <D.28673>:
            D.28675 = &MEM[(void *)"temporary-smcs-hack" + 2B];
            D.28676 = *D.28675;
            D.28677 = (int) D.28676;
            D.28678 = __s2 + 2;
            D.28679 = *D.28678;
            D.28680 = (int) D.28679;
            __result = D.28677 - D.28680;
            D.28681 = __s2_len > 2;
            D.28661 = __result == 0;
            D.28682 = D.28681 & D.28661;
            if (D.28682 != 0) goto <D.28683>; else goto <D.28684>;
            <D.28683>:
            D.28685 = &MEM[(void *)"temporary-smcs-hack" + 3B];
            D.28686 = *D.28685;
            D.28687 = (int) D.28686;
            D.28688 = __s2 + 3;
            D.28689 = *D.28688;
            D.28690 = (int) D.28689;
            __result = D.28687 - D.28690;
            <D.28684>:
            <D.28674>:
            <D.28664>:
          }
          D.26506 = __result;
        }
        iftmp.62 = -D.26506;
        goto <D.28691>;
        <D.28654>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27659 = D.27167 + 11;
        iftmp.62 = __builtin_strcmp (D.27659, "temporary-smcs-hack");
        <D.28691>:
        D.26507 = iftmp.62;
      }
      if (D.26507 == 0) goto <D.28692>; else goto <D.28693>;
      <D.28692>:
      mono_security_set_mode (3);
      goto <D.28694>;
      <D.28693>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 8;
        if (__s2_len <= 3) goto <D.28696>; else goto <D.28697>;
        <D.28696>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 11;
          D.28698 = "core-clr";
          D.28699 = MEM[(const unsigned char *)D.28698];
          D.28700 = (int) D.28699;
          D.28701 = *__s2;
          D.28702 = (int) D.28701;
          __result = D.28700 - D.28702;
          {
            D.28703 = __s2_len != 0;
            D.28704 = __result == 0;
            D.28705 = D.28703 & D.28704;
            if (D.28705 != 0) goto <D.28706>; else goto <D.28707>;
            <D.28706>:
            D.28708 = &MEM[(void *)"core-clr" + 1B];
            D.28709 = *D.28708;
            D.28710 = (int) D.28709;
            D.28711 = __s2 + 1;
            D.28712 = *D.28711;
            D.28713 = (int) D.28712;
            __result = D.28710 - D.28713;
            D.28714 = __s2_len > 1;
            D.28704 = __result == 0;
            D.28715 = D.28714 & D.28704;
            if (D.28715 != 0) goto <D.28716>; else goto <D.28717>;
            <D.28716>:
            D.28718 = &MEM[(void *)"core-clr" + 2B];
            D.28719 = *D.28718;
            D.28720 = (int) D.28719;
            D.28721 = __s2 + 2;
            D.28722 = *D.28721;
            D.28723 = (int) D.28722;
            __result = D.28720 - D.28723;
            D.28724 = __s2_len > 2;
            D.28704 = __result == 0;
            D.28725 = D.28724 & D.28704;
            if (D.28725 != 0) goto <D.28726>; else goto <D.28727>;
            <D.28726>:
            D.28728 = &MEM[(void *)"core-clr" + 3B];
            D.28729 = *D.28728;
            D.28730 = (int) D.28729;
            D.28731 = __s2 + 3;
            D.28732 = *D.28731;
            D.28733 = (int) D.28732;
            __result = D.28730 - D.28733;
            <D.28727>:
            <D.28717>:
            <D.28707>:
          }
          D.26515 = __result;
        }
        iftmp.63 = -D.26515;
        goto <D.28734>;
        <D.28697>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27659 = D.27167 + 11;
        iftmp.63 = __builtin_strcmp (D.27659, "core-clr");
        <D.28734>:
        D.26516 = iftmp.63;
      }
      if (D.26516 == 0) goto <D.28735>; else goto <D.28736>;
      <D.28735>:
      mono_verifier_set_mode (2);
      mono_security_set_mode (1);
      goto <D.28737>;
      <D.28736>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 13;
        if (__s2_len <= 3) goto <D.28739>; else goto <D.28740>;
        <D.28739>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 11;
          D.28741 = "core-clr-test";
          D.28742 = MEM[(const unsigned char *)D.28741];
          D.28743 = (int) D.28742;
          D.28744 = *__s2;
          D.28745 = (int) D.28744;
          __result = D.28743 - D.28745;
          {
            D.28746 = __s2_len != 0;
            D.28747 = __result == 0;
            D.28748 = D.28746 & D.28747;
            if (D.28748 != 0) goto <D.28749>; else goto <D.28750>;
            <D.28749>:
            D.28751 = &MEM[(void *)"core-clr-test" + 1B];
            D.28752 = *D.28751;
            D.28753 = (int) D.28752;
            D.28754 = __s2 + 1;
            D.28755 = *D.28754;
            D.28756 = (int) D.28755;
            __result = D.28753 - D.28756;
            D.28757 = __s2_len > 1;
            D.28747 = __result == 0;
            D.28758 = D.28757 & D.28747;
            if (D.28758 != 0) goto <D.28759>; else goto <D.28760>;
            <D.28759>:
            D.28761 = &MEM[(void *)"core-clr-test" + 2B];
            D.28762 = *D.28761;
            D.28763 = (int) D.28762;
            D.28764 = __s2 + 2;
            D.28765 = *D.28764;
            D.28766 = (int) D.28765;
            __result = D.28763 - D.28766;
            D.28767 = __s2_len > 2;
            D.28747 = __result == 0;
            D.28768 = D.28767 & D.28747;
            if (D.28768 != 0) goto <D.28769>; else goto <D.28770>;
            <D.28769>:
            D.28771 = &MEM[(void *)"core-clr-test" + 3B];
            D.28772 = *D.28771;
            D.28773 = (int) D.28772;
            D.28774 = __s2 + 3;
            D.28775 = *D.28774;
            D.28776 = (int) D.28775;
            __result = D.28773 - D.28776;
            <D.28770>:
            <D.28760>:
            <D.28750>:
          }
          D.26524 = __result;
        }
        iftmp.64 = -D.26524;
        goto <D.28777>;
        <D.28740>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27659 = D.27167 + 11;
        iftmp.64 = __builtin_strcmp (D.27659, "core-clr-test");
        <D.28777>:
        D.26525 = iftmp.64;
      }
      if (D.26525 == 0) goto <D.28778>; else goto <D.28779>;
      <D.28778>:
      mono_security_set_mode (1);
      mono_security_core_clr_test = 1;
      goto <D.28780>;
      <D.28779>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 3;
        if (__s2_len <= 3) goto <D.28782>; else goto <D.28783>;
        <D.28782>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 11;
          D.28784 = "cas";
          D.28785 = MEM[(const unsigned char *)D.28784];
          D.28786 = (int) D.28785;
          D.28787 = *__s2;
          D.28788 = (int) D.28787;
          __result = D.28786 - D.28788;
          {
            D.28789 = __s2_len != 0;
            D.28790 = __result == 0;
            D.28791 = D.28789 & D.28790;
            if (D.28791 != 0) goto <D.28792>; else goto <D.28793>;
            <D.28792>:
            D.28794 = &MEM[(void *)"cas" + 1B];
            D.28795 = *D.28794;
            D.28796 = (int) D.28795;
            D.28797 = __s2 + 1;
            D.28798 = *D.28797;
            D.28799 = (int) D.28798;
            __result = D.28796 - D.28799;
            D.28800 = __s2_len > 1;
            D.28790 = __result == 0;
            D.28801 = D.28800 & D.28790;
            if (D.28801 != 0) goto <D.28802>; else goto <D.28803>;
            <D.28802>:
            D.28804 = &MEM[(void *)"cas" + 2B];
            D.28805 = *D.28804;
            D.28806 = (int) D.28805;
            D.28807 = __s2 + 2;
            D.28808 = *D.28807;
            D.28809 = (int) D.28808;
            __result = D.28806 - D.28809;
            D.28810 = __s2_len > 2;
            D.28790 = __result == 0;
            D.28811 = D.28810 & D.28790;
            if (D.28811 != 0) goto <D.28812>; else goto <D.28813>;
            <D.28812>:
            D.28814 = &MEM[(void *)"cas" + 3B];
            D.28815 = *D.28814;
            D.28816 = (int) D.28815;
            D.28817 = __s2 + 3;
            D.28818 = *D.28817;
            D.28819 = (int) D.28818;
            __result = D.28816 - D.28819;
            <D.28813>:
            <D.28803>:
            <D.28793>:
          }
          D.26533 = __result;
        }
        iftmp.65 = -D.26533;
        goto <D.28820>;
        <D.28783>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27659 = D.27167 + 11;
        iftmp.65 = __builtin_strcmp (D.27659, "cas");
        <D.28820>:
        D.26534 = iftmp.65;
      }
      if (D.26534 == 0) goto <D.28821>; else goto <D.28822>;
      <D.28821>:
      mono_verifier_set_mode (2);
      mono_security_set_mode (2);
      mono_activate_security_manager ();
      goto <D.28823>;
      <D.28822>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.28825>; else goto <D.28826>;
        <D.28825>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 11;
          D.28827 = "validil";
          D.28828 = MEM[(const unsigned char *)D.28827];
          D.28829 = (int) D.28828;
          D.28830 = *__s2;
          D.28831 = (int) D.28830;
          __result = D.28829 - D.28831;
          {
            D.28832 = __s2_len != 0;
            D.28833 = __result == 0;
            D.28834 = D.28832 & D.28833;
            if (D.28834 != 0) goto <D.28835>; else goto <D.28836>;
            <D.28835>:
            D.28837 = &MEM[(void *)"validil" + 1B];
            D.28838 = *D.28837;
            D.28839 = (int) D.28838;
            D.28840 = __s2 + 1;
            D.28841 = *D.28840;
            D.28842 = (int) D.28841;
            __result = D.28839 - D.28842;
            D.28843 = __s2_len > 1;
            D.28833 = __result == 0;
            D.28844 = D.28843 & D.28833;
            if (D.28844 != 0) goto <D.28845>; else goto <D.28846>;
            <D.28845>:
            D.28847 = &MEM[(void *)"validil" + 2B];
            D.28848 = *D.28847;
            D.28849 = (int) D.28848;
            D.28850 = __s2 + 2;
            D.28851 = *D.28850;
            D.28852 = (int) D.28851;
            __result = D.28849 - D.28852;
            D.28853 = __s2_len > 2;
            D.28833 = __result == 0;
            D.28854 = D.28853 & D.28833;
            if (D.28854 != 0) goto <D.28855>; else goto <D.28856>;
            <D.28855>:
            D.28857 = &MEM[(void *)"validil" + 3B];
            D.28858 = *D.28857;
            D.28859 = (int) D.28858;
            D.28860 = __s2 + 3;
            D.28861 = *D.28860;
            D.28862 = (int) D.28861;
            __result = D.28859 - D.28862;
            <D.28856>:
            <D.28846>:
            <D.28836>:
          }
          D.26542 = __result;
        }
        iftmp.66 = -D.26542;
        goto <D.28863>;
        <D.28826>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27659 = D.27167 + 11;
        iftmp.66 = __builtin_strcmp (D.27659, "validil");
        <D.28863>:
        D.26543 = iftmp.66;
      }
      if (D.26543 == 0) goto <D.28864>; else goto <D.28865>;
      <D.28864>:
      mono_verifier_set_mode (1);
      goto <D.28866>;
      <D.28865>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 10;
        if (__s2_len <= 3) goto <D.28868>; else goto <D.28869>;
        <D.28868>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 11;
          D.28870 = "verifiable";
          D.28871 = MEM[(const unsigned char *)D.28870];
          D.28872 = (int) D.28871;
          D.28873 = *__s2;
          D.28874 = (int) D.28873;
          __result = D.28872 - D.28874;
          {
            D.28875 = __s2_len != 0;
            D.28876 = __result == 0;
            D.28877 = D.28875 & D.28876;
            if (D.28877 != 0) goto <D.28878>; else goto <D.28879>;
            <D.28878>:
            D.28880 = &MEM[(void *)"verifiable" + 1B];
            D.28881 = *D.28880;
            D.28882 = (int) D.28881;
            D.28883 = __s2 + 1;
            D.28884 = *D.28883;
            D.28885 = (int) D.28884;
            __result = D.28882 - D.28885;
            D.28886 = __s2_len > 1;
            D.28876 = __result == 0;
            D.28887 = D.28886 & D.28876;
            if (D.28887 != 0) goto <D.28888>; else goto <D.28889>;
            <D.28888>:
            D.28890 = &MEM[(void *)"verifiable" + 2B];
            D.28891 = *D.28890;
            D.28892 = (int) D.28891;
            D.28893 = __s2 + 2;
            D.28894 = *D.28893;
            D.28895 = (int) D.28894;
            __result = D.28892 - D.28895;
            D.28896 = __s2_len > 2;
            D.28876 = __result == 0;
            D.28897 = D.28896 & D.28876;
            if (D.28897 != 0) goto <D.28898>; else goto <D.28899>;
            <D.28898>:
            D.28900 = &MEM[(void *)"verifiable" + 3B];
            D.28901 = *D.28900;
            D.28902 = (int) D.28901;
            D.28903 = __s2 + 3;
            D.28904 = *D.28903;
            D.28905 = (int) D.28904;
            __result = D.28902 - D.28905;
            <D.28899>:
            <D.28889>:
            <D.28879>:
          }
          D.26551 = __result;
        }
        iftmp.67 = -D.26551;
        goto <D.28906>;
        <D.28869>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.27659 = D.27167 + 11;
        iftmp.67 = __builtin_strcmp (D.27659, "verifiable");
        <D.28906>:
        D.26552 = iftmp.67;
      }
      if (D.26552 == 0) goto <D.28907>; else goto <D.28908>;
      <D.28907>:
      mono_verifier_set_mode (2);
      goto <D.28909>;
      <D.28908>:
      stderr.33 = stderr;
      fprintf (stderr.33, "error: --security= option has invalid argument (cas, core-clr, verifiable or validil)\n");
      D.27395 = 1;
      return D.27395;
      <D.28909>:
      <D.28866>:
      <D.28823>:
      <D.28780>:
      <D.28737>:
      <D.28694>:
      goto <D.28910>;
      <D.28651>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 9;
        if (__s2_len <= 3) goto <D.28912>; else goto <D.28913>;
        <D.28912>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28914 = "--desktop";
          D.28915 = MEM[(const unsigned char *)D.28914];
          D.28916 = (int) D.28915;
          D.28917 = *__s2;
          D.28918 = (int) D.28917;
          __result = D.28916 - D.28918;
          {
            D.28919 = __s2_len != 0;
            D.28920 = __result == 0;
            D.28921 = D.28919 & D.28920;
            if (D.28921 != 0) goto <D.28922>; else goto <D.28923>;
            <D.28922>:
            D.28924 = &MEM[(void *)"--desktop" + 1B];
            D.28925 = *D.28924;
            D.28926 = (int) D.28925;
            D.28927 = __s2 + 1;
            D.28928 = *D.28927;
            D.28929 = (int) D.28928;
            __result = D.28926 - D.28929;
            D.28930 = __s2_len > 1;
            D.28920 = __result == 0;
            D.28931 = D.28930 & D.28920;
            if (D.28931 != 0) goto <D.28932>; else goto <D.28933>;
            <D.28932>:
            D.28934 = &MEM[(void *)"--desktop" + 2B];
            D.28935 = *D.28934;
            D.28936 = (int) D.28935;
            D.28937 = __s2 + 2;
            D.28938 = *D.28937;
            D.28939 = (int) D.28938;
            __result = D.28936 - D.28939;
            D.28940 = __s2_len > 2;
            D.28920 = __result == 0;
            D.28941 = D.28940 & D.28920;
            if (D.28941 != 0) goto <D.28942>; else goto <D.28943>;
            <D.28942>:
            D.28944 = &MEM[(void *)"--desktop" + 3B];
            D.28945 = *D.28944;
            D.28946 = (int) D.28945;
            D.28947 = __s2 + 3;
            D.28948 = *D.28947;
            D.28949 = (int) D.28948;
            __result = D.28946 - D.28949;
            <D.28943>:
            <D.28933>:
            <D.28923>:
          }
          D.26560 = __result;
        }
        iftmp.68 = -D.26560;
        goto <D.28950>;
        <D.28913>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.68 = __builtin_strcmp (D.27167, "--desktop");
        <D.28950>:
        D.26561 = iftmp.68;
      }
      if (D.26561 == 0) goto <D.28951>; else goto <D.28952>;
      <D.28951>:
      mono_gc_set_desktop_mode ();
      goto <D.28953>;
      <D.28952>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 8;
        if (__s2_len <= 3) goto <D.28955>; else goto <D.28956>;
        <D.28955>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.28957 = "--server";
          D.28958 = MEM[(const unsigned char *)D.28957];
          D.28959 = (int) D.28958;
          D.28960 = *__s2;
          D.28961 = (int) D.28960;
          __result = D.28959 - D.28961;
          {
            D.28962 = __s2_len != 0;
            D.28963 = __result == 0;
            D.28964 = D.28962 & D.28963;
            if (D.28964 != 0) goto <D.28965>; else goto <D.28966>;
            <D.28965>:
            D.28967 = &MEM[(void *)"--server" + 1B];
            D.28968 = *D.28967;
            D.28969 = (int) D.28968;
            D.28970 = __s2 + 1;
            D.28971 = *D.28970;
            D.28972 = (int) D.28971;
            __result = D.28969 - D.28972;
            D.28973 = __s2_len > 1;
            D.28963 = __result == 0;
            D.28974 = D.28973 & D.28963;
            if (D.28974 != 0) goto <D.28975>; else goto <D.28976>;
            <D.28975>:
            D.28977 = &MEM[(void *)"--server" + 2B];
            D.28978 = *D.28977;
            D.28979 = (int) D.28978;
            D.28980 = __s2 + 2;
            D.28981 = *D.28980;
            D.28982 = (int) D.28981;
            __result = D.28979 - D.28982;
            D.28983 = __s2_len > 2;
            D.28963 = __result == 0;
            D.28984 = D.28983 & D.28963;
            if (D.28984 != 0) goto <D.28985>; else goto <D.28986>;
            <D.28985>:
            D.28987 = &MEM[(void *)"--server" + 3B];
            D.28988 = *D.28987;
            D.28989 = (int) D.28988;
            D.28990 = __s2 + 3;
            D.28991 = *D.28990;
            D.28992 = (int) D.28991;
            __result = D.28989 - D.28992;
            <D.28986>:
            <D.28976>:
            <D.28966>:
          }
          D.26569 = __result;
        }
        iftmp.69 = -D.26569;
        goto <D.28993>;
        <D.28956>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.69 = __builtin_strcmp (D.27167, "--server");
        <D.28993>:
        D.26570 = iftmp.69;
      }
      if (D.26570 == 0) goto <D.28994>; else goto <D.28995>;
      <D.28994>:
      mono_config_set_server_mode (1);
      goto <D.28996>;
      <D.28995>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 12;
        if (__s2_len <= 3) goto <D.28998>; else goto <D.28999>;
        <D.28998>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.29000 = "--inside-mdb";
          D.29001 = MEM[(const unsigned char *)D.29000];
          D.29002 = (int) D.29001;
          D.29003 = *__s2;
          D.29004 = (int) D.29003;
          __result = D.29002 - D.29004;
          {
            D.29005 = __s2_len != 0;
            D.29006 = __result == 0;
            D.29007 = D.29005 & D.29006;
            if (D.29007 != 0) goto <D.29008>; else goto <D.29009>;
            <D.29008>:
            D.29010 = &MEM[(void *)"--inside-mdb" + 1B];
            D.29011 = *D.29010;
            D.29012 = (int) D.29011;
            D.29013 = __s2 + 1;
            D.29014 = *D.29013;
            D.29015 = (int) D.29014;
            __result = D.29012 - D.29015;
            D.29016 = __s2_len > 1;
            D.29006 = __result == 0;
            D.29017 = D.29016 & D.29006;
            if (D.29017 != 0) goto <D.29018>; else goto <D.29019>;
            <D.29018>:
            D.29020 = &MEM[(void *)"--inside-mdb" + 2B];
            D.29021 = *D.29020;
            D.29022 = (int) D.29021;
            D.29023 = __s2 + 2;
            D.29024 = *D.29023;
            D.29025 = (int) D.29024;
            __result = D.29022 - D.29025;
            D.29026 = __s2_len > 2;
            D.29006 = __result == 0;
            D.29027 = D.29026 & D.29006;
            if (D.29027 != 0) goto <D.29028>; else goto <D.29029>;
            <D.29028>:
            D.29030 = &MEM[(void *)"--inside-mdb" + 3B];
            D.29031 = *D.29030;
            D.29032 = (int) D.29031;
            D.29033 = __s2 + 3;
            D.29034 = *D.29033;
            D.29035 = (int) D.29034;
            __result = D.29032 - D.29035;
            <D.29029>:
            <D.29019>:
            <D.29009>:
          }
          D.26578 = __result;
        }
        iftmp.70 = -D.26578;
        goto <D.29036>;
        <D.28999>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.70 = __builtin_strcmp (D.27167, "--inside-mdb");
        <D.29036>:
        D.26579 = iftmp.70;
      }
      if (D.26579 == 0) goto <D.29037>; else goto <D.29038>;
      <D.29037>:
      action = 6;
      goto <D.29039>;
      <D.29038>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      D.29040 = strncmp (D.27167, "--wapi=", 7);
      if (D.29040 == 0) goto <D.29041>; else goto <D.29042>;
      <D.29041>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 3;
        if (__s2_len <= 3) goto <D.29044>; else goto <D.29045>;
        <D.29044>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 7;
          D.29046 = "hps";
          D.29047 = MEM[(const unsigned char *)D.29046];
          D.29048 = (int) D.29047;
          D.29049 = *__s2;
          D.29050 = (int) D.29049;
          __result = D.29048 - D.29050;
          {
            D.29051 = __s2_len != 0;
            D.29052 = __result == 0;
            D.29053 = D.29051 & D.29052;
            if (D.29053 != 0) goto <D.29054>; else goto <D.29055>;
            <D.29054>:
            D.29056 = &MEM[(void *)"hps" + 1B];
            D.29057 = *D.29056;
            D.29058 = (int) D.29057;
            D.29059 = __s2 + 1;
            D.29060 = *D.29059;
            D.29061 = (int) D.29060;
            __result = D.29058 - D.29061;
            D.29062 = __s2_len > 1;
            D.29052 = __result == 0;
            D.29063 = D.29062 & D.29052;
            if (D.29063 != 0) goto <D.29064>; else goto <D.29065>;
            <D.29064>:
            D.29066 = &MEM[(void *)"hps" + 2B];
            D.29067 = *D.29066;
            D.29068 = (int) D.29067;
            D.29069 = __s2 + 2;
            D.29070 = *D.29069;
            D.29071 = (int) D.29070;
            __result = D.29068 - D.29071;
            D.29072 = __s2_len > 2;
            D.29052 = __result == 0;
            D.29073 = D.29072 & D.29052;
            if (D.29073 != 0) goto <D.29074>; else goto <D.29075>;
            <D.29074>:
            D.29076 = &MEM[(void *)"hps" + 3B];
            D.29077 = *D.29076;
            D.29078 = (int) D.29077;
            D.29079 = __s2 + 3;
            D.29080 = *D.29079;
            D.29081 = (int) D.29080;
            __result = D.29078 - D.29081;
            <D.29075>:
            <D.29065>:
            <D.29055>:
          }
          D.26596 = __result;
        }
        iftmp.71 = -D.26596;
        goto <D.29082>;
        <D.29045>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.29083 = D.27167 + 7;
        iftmp.71 = __builtin_strcmp (D.29083, "hps");
        <D.29082>:
        D.26597 = iftmp.71;
      }
      if (D.26597 == 0) goto <D.29084>; else goto <D.29085>;
      <D.29084>:
      D.29086 = argc - i;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27395 = mini_wapi_hps (D.29086, D.27166);
      return D.27395;
      <D.29085>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 6;
        if (__s2_len <= 3) goto <D.29088>; else goto <D.29089>;
        <D.29088>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 7;
          D.29090 = "semdel";
          D.29091 = MEM[(const unsigned char *)D.29090];
          D.29092 = (int) D.29091;
          D.29093 = *__s2;
          D.29094 = (int) D.29093;
          __result = D.29092 - D.29094;
          {
            D.29095 = __s2_len != 0;
            D.29096 = __result == 0;
            D.29097 = D.29095 & D.29096;
            if (D.29097 != 0) goto <D.29098>; else goto <D.29099>;
            <D.29098>:
            D.29100 = &MEM[(void *)"semdel" + 1B];
            D.29101 = *D.29100;
            D.29102 = (int) D.29101;
            D.29103 = __s2 + 1;
            D.29104 = *D.29103;
            D.29105 = (int) D.29104;
            __result = D.29102 - D.29105;
            D.29106 = __s2_len > 1;
            D.29096 = __result == 0;
            D.29107 = D.29106 & D.29096;
            if (D.29107 != 0) goto <D.29108>; else goto <D.29109>;
            <D.29108>:
            D.29110 = &MEM[(void *)"semdel" + 2B];
            D.29111 = *D.29110;
            D.29112 = (int) D.29111;
            D.29113 = __s2 + 2;
            D.29114 = *D.29113;
            D.29115 = (int) D.29114;
            __result = D.29112 - D.29115;
            D.29116 = __s2_len > 2;
            D.29096 = __result == 0;
            D.29117 = D.29116 & D.29096;
            if (D.29117 != 0) goto <D.29118>; else goto <D.29119>;
            <D.29118>:
            D.29120 = &MEM[(void *)"semdel" + 3B];
            D.29121 = *D.29120;
            D.29122 = (int) D.29121;
            D.29123 = __s2 + 3;
            D.29124 = *D.29123;
            D.29125 = (int) D.29124;
            __result = D.29122 - D.29125;
            <D.29119>:
            <D.29109>:
            <D.29099>:
          }
          D.26605 = __result;
        }
        iftmp.72 = -D.26605;
        goto <D.29126>;
        <D.29089>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.29083 = D.27167 + 7;
        iftmp.72 = __builtin_strcmp (D.29083, "semdel");
        <D.29126>:
        D.26606 = iftmp.72;
      }
      if (D.26606 == 0) goto <D.29127>; else goto <D.29128>;
      <D.29127>:
      D.29086 = argc - i;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27395 = mini_wapi_semdel (D.29086, D.27166);
      return D.27395;
      <D.29128>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 7;
        if (__s2_len <= 3) goto <D.29130>; else goto <D.29131>;
        <D.29130>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          D.27167 = *D.27166;
          __s2 = D.27167 + 7;
          D.29132 = "seminfo";
          D.29133 = MEM[(const unsigned char *)D.29132];
          D.29134 = (int) D.29133;
          D.29135 = *__s2;
          D.29136 = (int) D.29135;
          __result = D.29134 - D.29136;
          {
            D.29137 = __s2_len != 0;
            D.29138 = __result == 0;
            D.29139 = D.29137 & D.29138;
            if (D.29139 != 0) goto <D.29140>; else goto <D.29141>;
            <D.29140>:
            D.29142 = &MEM[(void *)"seminfo" + 1B];
            D.29143 = *D.29142;
            D.29144 = (int) D.29143;
            D.29145 = __s2 + 1;
            D.29146 = *D.29145;
            D.29147 = (int) D.29146;
            __result = D.29144 - D.29147;
            D.29148 = __s2_len > 1;
            D.29138 = __result == 0;
            D.29149 = D.29148 & D.29138;
            if (D.29149 != 0) goto <D.29150>; else goto <D.29151>;
            <D.29150>:
            D.29152 = &MEM[(void *)"seminfo" + 2B];
            D.29153 = *D.29152;
            D.29154 = (int) D.29153;
            D.29155 = __s2 + 2;
            D.29156 = *D.29155;
            D.29157 = (int) D.29156;
            __result = D.29154 - D.29157;
            D.29158 = __s2_len > 2;
            D.29138 = __result == 0;
            D.29159 = D.29158 & D.29138;
            if (D.29159 != 0) goto <D.29160>; else goto <D.29161>;
            <D.29160>:
            D.29162 = &MEM[(void *)"seminfo" + 3B];
            D.29163 = *D.29162;
            D.29164 = (int) D.29163;
            D.29165 = __s2 + 3;
            D.29166 = *D.29165;
            D.29167 = (int) D.29166;
            __result = D.29164 - D.29167;
            <D.29161>:
            <D.29151>:
            <D.29141>:
          }
          D.26614 = __result;
        }
        iftmp.73 = -D.26614;
        goto <D.29168>;
        <D.29131>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        D.29083 = D.27167 + 7;
        iftmp.73 = __builtin_strcmp (D.29083, "seminfo");
        <D.29168>:
        D.26615 = iftmp.73;
      }
      if (D.26615 == 0) goto <D.29169>; else goto <D.29170>;
      <D.29169>:
      D.29086 = argc - i;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27395 = mini_wapi_seminfo (D.29086, D.27166);
      return D.27395;
      <D.29170>:
      stderr.33 = stderr;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      fprintf (stderr.33, "Invalid --wapi suboption: \'%s\'\n", D.27167);
      D.27395 = 1;
      return D.27395;
      <D.29042>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 20;
        if (__s2_len <= 3) goto <D.29172>; else goto <D.29173>;
        <D.29172>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.29174 = "--no-x86-stack-align";
          D.29175 = MEM[(const unsigned char *)D.29174];
          D.29176 = (int) D.29175;
          D.29177 = *__s2;
          D.29178 = (int) D.29177;
          __result = D.29176 - D.29178;
          {
            D.29179 = __s2_len != 0;
            D.29180 = __result == 0;
            D.29181 = D.29179 & D.29180;
            if (D.29181 != 0) goto <D.29182>; else goto <D.29183>;
            <D.29182>:
            D.29184 = &MEM[(void *)"--no-x86-stack-align" + 1B];
            D.29185 = *D.29184;
            D.29186 = (int) D.29185;
            D.29187 = __s2 + 1;
            D.29188 = *D.29187;
            D.29189 = (int) D.29188;
            __result = D.29186 - D.29189;
            D.29190 = __s2_len > 1;
            D.29180 = __result == 0;
            D.29191 = D.29190 & D.29180;
            if (D.29191 != 0) goto <D.29192>; else goto <D.29193>;
            <D.29192>:
            D.29194 = &MEM[(void *)"--no-x86-stack-align" + 2B];
            D.29195 = *D.29194;
            D.29196 = (int) D.29195;
            D.29197 = __s2 + 2;
            D.29198 = *D.29197;
            D.29199 = (int) D.29198;
            __result = D.29196 - D.29199;
            D.29200 = __s2_len > 2;
            D.29180 = __result == 0;
            D.29201 = D.29200 & D.29180;
            if (D.29201 != 0) goto <D.29202>; else goto <D.29203>;
            <D.29202>:
            D.29204 = &MEM[(void *)"--no-x86-stack-align" + 3B];
            D.29205 = *D.29204;
            D.29206 = (int) D.29205;
            D.29207 = __s2 + 3;
            D.29208 = *D.29207;
            D.29209 = (int) D.29208;
            __result = D.29206 - D.29209;
            <D.29203>:
            <D.29193>:
            <D.29183>:
          }
          D.26623 = __result;
        }
        iftmp.74 = -D.26623;
        goto <D.29210>;
        <D.29173>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.74 = __builtin_strcmp (D.27167, "--no-x86-stack-align");
        <D.29210>:
        D.26624 = iftmp.74;
      }
      if (D.26624 == 0) goto <D.29211>; else goto <D.29212>;
      <D.29211>:
      mono_do_x86_stack_align = 0;
      goto <D.29213>;
      <D.29212>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 6;
        if (__s2_len <= 3) goto <D.29215>; else goto <D.29216>;
        <D.29215>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.29217 = "--llvm";
          D.29218 = MEM[(const unsigned char *)D.29217];
          D.29219 = (int) D.29218;
          D.29220 = *__s2;
          D.29221 = (int) D.29220;
          __result = D.29219 - D.29221;
          {
            D.29222 = __s2_len != 0;
            D.29223 = __result == 0;
            D.29224 = D.29222 & D.29223;
            if (D.29224 != 0) goto <D.29225>; else goto <D.29226>;
            <D.29225>:
            D.29227 = &MEM[(void *)"--llvm" + 1B];
            D.29228 = *D.29227;
            D.29229 = (int) D.29228;
            D.29230 = __s2 + 1;
            D.29231 = *D.29230;
            D.29232 = (int) D.29231;
            __result = D.29229 - D.29232;
            D.29233 = __s2_len > 1;
            D.29223 = __result == 0;
            D.29234 = D.29233 & D.29223;
            if (D.29234 != 0) goto <D.29235>; else goto <D.29236>;
            <D.29235>:
            D.29237 = &MEM[(void *)"--llvm" + 2B];
            D.29238 = *D.29237;
            D.29239 = (int) D.29238;
            D.29240 = __s2 + 2;
            D.29241 = *D.29240;
            D.29242 = (int) D.29241;
            __result = D.29239 - D.29242;
            D.29243 = __s2_len > 2;
            D.29223 = __result == 0;
            D.29244 = D.29243 & D.29223;
            if (D.29244 != 0) goto <D.29245>; else goto <D.29246>;
            <D.29245>:
            D.29247 = &MEM[(void *)"--llvm" + 3B];
            D.29248 = *D.29247;
            D.29249 = (int) D.29248;
            D.29250 = __s2 + 3;
            D.29251 = *D.29250;
            D.29252 = (int) D.29251;
            __result = D.29249 - D.29252;
            <D.29246>:
            <D.29236>:
            <D.29226>:
          }
          D.26632 = __result;
        }
        iftmp.75 = -D.26632;
        goto <D.29253>;
        <D.29216>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.75 = __builtin_strcmp (D.27167, "--llvm");
        <D.29253>:
        D.26633 = iftmp.75;
      }
      if (D.26633 == 0) goto <D.29254>; else goto <D.29255>;
      <D.29254>:
      stderr.33 = stderr;
      fprintf (stderr.33, "Mono Warning: --llvm not enabled in this runtime.\n");
      goto <D.29256>;
      <D.29255>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 8;
        if (__s2_len <= 3) goto <D.29258>; else goto <D.29259>;
        <D.29258>:
        {
          const unsigned char * __s2;
          int __result;

          i.19 = (unsigned int) i;
          D.27165 = i.19 * 4;
          D.27166 = argv + D.27165;
          __s2 = *D.27166;
          D.29260 = "--nollvm";
          D.29261 = MEM[(const unsigned char *)D.29260];
          D.29262 = (int) D.29261;
          D.29263 = *__s2;
          D.29264 = (int) D.29263;
          __result = D.29262 - D.29264;
          {
            D.29265 = __s2_len != 0;
            D.29266 = __result == 0;
            D.29267 = D.29265 & D.29266;
            if (D.29267 != 0) goto <D.29268>; else goto <D.29269>;
            <D.29268>:
            D.29270 = &MEM[(void *)"--nollvm" + 1B];
            D.29271 = *D.29270;
            D.29272 = (int) D.29271;
            D.29273 = __s2 + 1;
            D.29274 = *D.29273;
            D.29275 = (int) D.29274;
            __result = D.29272 - D.29275;
            D.29276 = __s2_len > 1;
            D.29266 = __result == 0;
            D.29277 = D.29276 & D.29266;
            if (D.29277 != 0) goto <D.29278>; else goto <D.29279>;
            <D.29278>:
            D.29280 = &MEM[(void *)"--nollvm" + 2B];
            D.29281 = *D.29280;
            D.29282 = (int) D.29281;
            D.29283 = __s2 + 2;
            D.29284 = *D.29283;
            D.29285 = (int) D.29284;
            __result = D.29282 - D.29285;
            D.29286 = __s2_len > 2;
            D.29266 = __result == 0;
            D.29287 = D.29286 & D.29266;
            if (D.29287 != 0) goto <D.29288>; else goto <D.29289>;
            <D.29288>:
            D.29290 = &MEM[(void *)"--nollvm" + 3B];
            D.29291 = *D.29290;
            D.29292 = (int) D.29291;
            D.29293 = __s2 + 3;
            D.29294 = *D.29293;
            D.29295 = (int) D.29294;
            __result = D.29292 - D.29295;
            <D.29289>:
            <D.29279>:
            <D.29269>:
          }
          D.26641 = __result;
        }
        iftmp.76 = -D.26641;
        goto <D.29296>;
        <D.29259>:
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        D.27167 = *D.27166;
        iftmp.76 = __builtin_strcmp (D.27167, "--nollvm");
        <D.29296>:
        D.26642 = iftmp.76;
      }
      if (D.26642 == 0) goto <D.29297>; else goto <D.29298>;
      <D.29297>:
      mono_use_llvm = 0;
      goto <D.29299>;
      <D.29298>:
      stderr.33 = stderr;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      fprintf (stderr.33, "Unknown command line option: \'%s\'\n", D.27167);
      D.27395 = 1;
      return D.27395;
      <D.29299>:
      <D.29256>:
      <D.29213>:
      <D.29039>:
      <D.28996>:
      <D.28953>:
      <D.28910>:
      <D.28648>:
      <D.28605>:
      <D.28600>:
      <D.28593>:
      <D.28550>:
      <D.28505>:
      <D.28498>:
      <D.28453>:
      <D.28449>:
      <D.28442>:
      <D.28438>:
      <D.28395>:
      <D.28352>:
      <D.28348>:
      <D.28305>:
      <D.28299>:
      <D.28295>:
      <D.28252>:
      <D.28209>:
      <D.28166>:
      <D.28123>:
      <D.28080>:
      <D.28030>:
      <D.27979>:
      <D.27931>:
      <D.27888>:
      <D.27884>:
      <D.27841>:
      <D.27796>:
      <D.27751>:
      <D.27708>:
      <D.27665>:
      <D.27660>:
      <D.27655>:
      <D.27221>:
      <D.27218>:
      <D.27212>:
      i = i + 1;
      <D.26644>:
      if (i < argc) goto <D.26643>; else goto <D.26068>;
      <D.26068>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      if (D.27167 == 0B) goto <D.29300>; else goto <D.29301>;
      <D.29300>:
      mini_usage ();
      D.27395 = 1;
      return D.27395;
      <D.29301>:
      D.29302 = monoeg_g_getenv ("MONO_XDEBUG");
      if (D.29302 != 0B) goto <D.29303>; else goto <D.29304>;
      <D.29303>:
      enable_debugging = 1;
      <D.29304>:
      mono_compile_aot.77 = mono_compile_aot;
      if (mono_compile_aot.77 != 0) goto <D.29305>; else goto <D.29308>;
      <D.29308>:
      D.29309 = action == 4;
      D.29310 = action == 6;
      D.29311 = D.29309 | D.29310;
      if (D.29311 != 0) goto <D.29305>; else goto <D.29306>;
      <D.29305>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      monoeg_g_set_prgname (D.27167);
      <D.29306>:
      if (enable_profile != 0) goto <D.29312>; else goto <D.29313>;
      <D.29312>:
      mono_profiler_load (profile_options);
      <D.29313>:
      mono_attach_parse_options (attach_options);
      if (trace_options != 0B) goto <D.29314>; else goto <D.29315>;
      <D.29314>:
      mono_jit_trace_calls.78 = mono_trace_parse_options (trace_options);
      mono_jit_trace_calls = mono_jit_trace_calls.78;
      mono_jit_trace_calls.79 = mono_jit_trace_calls;
      if (mono_jit_trace_calls.79 == 0B) goto <D.29318>; else goto <D.29319>;
      <D.29318>:
      exit (1);
      <D.29319>:
      <D.29315>:
      if (action == 6) goto <D.29320>; else goto <D.29321>;
      <D.29320>:
      enable_debugging = 1;
      monoeg_g_print ("The Mono Debugger is no longer supported.\n");
      D.27395 = 1;
      return D.27395;
      <D.29321>:
      enable_debugging.80 = enable_debugging;
      if (enable_debugging.80 != 0) goto <D.29323>; else goto <D.29324>;
      <D.29323>:
      mono_debug_init (1);
      <D.29324>:
      mono_set_defaults (mini_verbose, opt);
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.27167 = *D.27166;
      domain.81 = mini_init (D.27167, forced_version);
      domain = domain.81;
      mono_gc_set_stack_end (&domain);
      if (agents != 0B) goto <D.29326>; else goto <D.29327>;
      <D.29326>:
      {
        int i;

        i = 0;
        goto <D.26648>;
        <D.26647>:
        {
          int res;

          domain.82 = domain;
          D.29329 = agents->pdata;
          i.83 = (unsigned int) i;
          D.29331 = i.83 * 4;
          D.29332 = D.29329 + D.29331;
          D.29333 = *D.29332;
          res = load_agent (domain.82, D.29333);
          if (res != 0) goto <D.29334>; else goto <D.29335>;
          <D.29334>:
          monoeg_g_ptr_array_free (agents, 1);
          domain.82 = domain;
          mini_cleanup (domain.82);
          D.27395 = 1;
          return D.27395;
          <D.29335>:
        }
        i = i + 1;
        <D.26648>:
        i.84 = (unsigned int) i;
        D.29337 = agents->len;
        if (i.84 < D.29337) goto <D.26647>; else goto <D.26649>;
        <D.26649>:
        monoeg_g_ptr_array_free (agents, 1);
      }
      <D.29327>:
      switch (action) <default: <D.26656>, case 0: <D.26652>, case 1: <D.26651>, case 2: <D.26650>, case 3: <D.26654>, case 5: <D.26655>>
      <D.26650>:
      mono_do_single_method_regression = 1;
      <D.26651>:
      D.29086 = argc - i;
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      D.29338 = mini_regression_list (mini_verbose, D.29086, D.27166);
      if (D.29338 != 0) goto <D.29339>; else goto <D.29340>;
      <D.29339>:
      monoeg_g_print ("Regression ERRORS!\n");
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 1;
      return D.27395;
      <D.29340>:
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 0;
      return D.27395;
      <D.26652>:
      D.29086 = argc - i;
      if (D.29086 != 1) goto <D.29341>; else goto <D.29343>;
      <D.29343>:
      if (mname == 0B) goto <D.29341>; else goto <D.29342>;
      <D.29341>:
      monoeg_g_print ("Usage: mini --ncompile num --compile method assembly\n");
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 1;
      return D.27395;
      <D.29342>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      aname = *D.27166;
      goto <D.26653>;
      <D.26654>:
      D.29086 = argc - i;
      if (D.29086 != 1) goto <D.29344>; else goto <D.29345>;
      <D.29344>:
      mini_usage ();
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 1;
      return D.27395;
      <D.29345>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      aname = *D.27166;
      goto <D.26653>;
      <D.26655>:
      D.29086 = argc - i;
      if (D.29086 != 1) goto <D.29346>; else goto <D.29348>;
      <D.29348>:
      if (mname == 0B) goto <D.29346>; else goto <D.29347>;
      <D.29346>:
      mini_usage ();
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 1;
      return D.27395;
      <D.29347>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      aname = *D.27166;
      goto <D.26653>;
      <D.26656>:
      D.29086 = argc - i;
      if (D.29086 <= 0) goto <D.29349>; else goto <D.29350>;
      <D.29349>:
      mini_usage ();
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 1;
      return D.27395;
      <D.29350>:
      i.19 = (unsigned int) i;
      D.27165 = i.19 * 4;
      D.27166 = argv + D.27165;
      aname = *D.27166;
      goto <D.26653>;
      <D.26653>:
      mono_compile_aot.77 = mono_compile_aot;
      if (mono_compile_aot.77 != 0) goto <D.29351>; else goto <D.29353>;
      <D.29353>:
      D.29309 = action == 4;
      D.29310 = action == 6;
      D.29311 = D.29309 | D.29310;
      if (D.29311 != 0) goto <D.29351>; else goto <D.29352>;
      <D.29351>:
      mono_config_parse (config_file);
      <D.29352>:
      assembly = mono_assembly_open (aname, &open_status);
      if (assembly == 0B) goto <D.29354>; else goto <D.29355>;
      <D.29354>:
      stderr.33 = stderr;
      open_status.85 = open_status;
      D.29357 = mono_image_strerror (open_status.85);
      fprintf (stderr.33, "Cannot open assembly \'%s\': %s.\n", aname, D.29357);
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 2;
      return D.27395;
      <D.29355>:
      if (trace_options != 0B) goto <D.29358>; else goto <D.29359>;
      <D.29358>:
      mono_trace_set_assembly (assembly);
      <D.29359>:
      mono_compile_aot.77 = mono_compile_aot;
      if (mono_compile_aot.77 != 0) goto <D.29360>; else goto <D.29362>;
      <D.29362>:
      if (action == 4) goto <D.29360>; else goto <D.29361>;
      <D.29360>:
      {
        const char * error;

        error = mono_check_corlib_version ();
        if (error != 0B) goto <D.29363>; else goto <D.29364>;
        <D.29363>:
        stderr.33 = stderr;
        fprintf (stderr.33, "Corlib not in sync with this runtime: %s\n", error);
        stderr.33 = stderr;
        D.27389 = mono_defaults.corlib;
        if (D.27389 != 0B) goto <D.29366>; else goto <D.29367>;
        <D.29366>:
        D.27389 = mono_defaults.corlib;
        iftmp.86 = mono_image_get_filename (D.27389);
        goto <D.29368>;
        <D.29367>:
        iftmp.86 = "unknown";
        <D.29368>:
        fprintf (stderr.33, "Loaded from: %s\n", iftmp.86);
        stderr.33 = stderr;
        fprintf (stderr.33, "Download a newer corlib or a newer runtime at http://www.go-mono.com/daily.\n");
        exit (1);
        <D.29364>:
        domain.82 = domain;
        main_args.domain = domain.82;
        main_args.file = aname;
        D.29086 = argc - i;
        main_args.argc = D.29086;
        i.19 = (unsigned int) i;
        D.27165 = i.19 * 4;
        D.27166 = argv + D.27165;
        main_args.argv = D.27166;
        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.82 = domain;
        mini_cleanup (domain.82);
        i = mono_environment_exitcode_get ();
        D.27395 = i;
        return D.27395;
      }
      <D.29361>:
      if (action == 3) goto <D.29369>; else goto <D.29370>;
      <D.29369>:
      compile_all_methods (assembly, mini_verbose, opt, recompilation_times);
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 0;
      return D.27395;
      <D.29370>:
      if (action == 6) goto <D.29371>; else goto <D.29372>;
      <D.29371>:
      D.27395 = 1;
      return D.27395;
      <D.29372>:
      desc = mono_method_desc_new (mname, 0);
      if (desc == 0B) goto <D.29373>; else goto <D.29374>;
      <D.29373>:
      monoeg_g_print ("Invalid method name %s\n", mname);
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 3;
      return D.27395;
      <D.29374>:
      D.29375 = mono_assembly_get_image (assembly);
      method = mono_method_desc_search_in_image (desc, D.29375);
      if (method == 0B) goto <D.29376>; else goto <D.29377>;
      <D.29376>:
      monoeg_g_print ("Cannot find method %s\n", mname);
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 3;
      return D.27395;
      <D.29377>:
      if (action == 5) goto <D.29378>; else goto <D.29379>;
      <D.29378>:
      {
        int part;

        part = 0;
        switch (mono_graph_options) <default: <D.26664>, case 2: <D.26659>, case 4: <D.26661>, case 8: <D.26662>, case 16: <D.26663>>
        <D.26659>:
        part = 1;
        opt = opt | 8192;
        goto <D.26660>;
        <D.26661>:
        part = 1;
        goto <D.26660>;
        <D.26662>:
        part = 2;
        goto <D.26660>;
        <D.26663>:
        part = 3;
        goto <D.26660>;
        <D.26664>:
        goto <D.26660>;
        <D.26660>:
        D.29383 = method->iflags;
        D.29384 = (int) D.29383;
        D.29385 = D.29384 & 4096;
        if (D.29385 != 0) goto <D.29380>; else goto <D.29386>;
        <D.29386>:
        D.29387 = method->flags;
        D.29388 = (int) D.29387;
        D.29389 = D.29388 & 8192;
        if (D.29389 != 0) goto <D.29380>; else goto <D.29381>;
        <D.29380>:
        {
          struct MonoMethod * nm;

          nm = mono_marshal_get_native_wrapper (method, 1, 0);
          D.29390 = mono_get_root_domain ();
          cfg = mini_method_compile (nm, opt, D.29390, 0, part);
        }
        goto <D.29382>;
        <D.29381>:
        D.29391 = mono_get_root_domain ();
        cfg = mini_method_compile (method, opt, D.29391, 0, part);
        <D.29382>:
        D.29392 = mono_graph_options & 8;
        if (D.29392 != 0) goto <D.29393>; else goto <D.29394>;
        <D.29393>:
        D.29395 = cfg->comp_done;
        D.29396 = D.29395 & 32;
        if (D.29396 == 0) goto <D.29397>; else goto <D.29398>;
        <D.29397>:
        monoeg_g_log (0B, 16, "no SSA info available (use -O=deadce)");
        D.27395 = 1;
        return D.27395;
        <D.29398>:
        <D.29394>:
        mono_draw_graph (cfg, mono_graph_options);
        mono_destroy_compile (cfg);
      }
      goto <D.29399>;
      <D.29379>:
      if (action == 0) goto <D.29400>; else goto <D.29401>;
      <D.29400>:
      mini_stats_fd.87 = mini_stats_fd;
      if (mini_stats_fd.87 != 0B) goto <D.29403>; else goto <D.29404>;
      <D.29403>:
      {
        const char * n;
        double no_opt_time;
        struct GTimer * timer;

        no_opt_time = 0.0;
        timer = monoeg_g_timer_new ();
        mini_stats_fd.87 = mini_stats_fd;
        D.29405 = mono_method_full_name (method, 1);
        fprintf (mini_stats_fd.87, "$stattitle = \'Compilations times for %s\';\n", D.29405);
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "@data = (\n");
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "[");
        i = 0;
        goto <D.26670>;
        <D.26669>:
        opt = opt_sets[i];
        n = opt_descr (opt);
        D.29406 = *n;
        if (D.29406 == 0) goto <D.29407>; else goto <D.29408>;
        <D.29407>:
        n = "none";
        <D.29408>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "\"%s\",", n);
        i = i + 1;
        <D.26670>:
        i.19 = (unsigned int) i;
        if (i.19 <= 23) goto <D.26669>; else goto <D.26671>;
        <D.26671>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "],\n[");
        i = 0;
        goto <D.26678>;
        <D.26677>:
        {
          int j;
          double elapsed;

          opt = opt_sets[i];
          monoeg_g_timer_start (timer);
          j = 0;
          goto <D.26675>;
          <D.26674>:
          D.29409 = mono_get_root_domain ();
          cfg = mini_method_compile (method, opt, D.29409, 0, 0);
          mono_destroy_compile (cfg);
          j = j + 1;
          <D.26675>:
          if (j < count) goto <D.26674>; else goto <D.26676>;
          <D.26676>:
          monoeg_g_timer_stop (timer);
          elapsed = monoeg_g_timer_elapsed (timer, 0B);
          if (opt == 0) goto <D.29410>; else goto <D.29411>;
          <D.29410>:
          no_opt_time = elapsed;
          <D.29411>:
          mini_stats_fd.87 = mini_stats_fd;
          fprintf (mini_stats_fd.87, "%f, ", elapsed);
        }
        i = i + 1;
        <D.26678>:
        i.19 = (unsigned int) i;
        if (i.19 <= 23) goto <D.26677>; else goto <D.26679>;
        <D.26679>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "]");
        if (no_opt_time > 0.0) goto <D.29412>; else goto <D.29413>;
        <D.29412>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, ", \n[");
        i = 0;
        goto <D.26681>;
        <D.26680>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "%f,", no_opt_time);
        i = i + 1;
        <D.26681>:
        i.19 = (unsigned int) i;
        if (i.19 <= 23) goto <D.26680>; else goto <D.26682>;
        <D.26682>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, "]");
        <D.29413>:
        mini_stats_fd.87 = mini_stats_fd;
        fprintf (mini_stats_fd.87, ");\n");
      }
      goto <D.29414>;
      <D.29404>:
      i = 0;
      goto <D.26684>;
      <D.26683>:
      D.29383 = method->iflags;
      D.29384 = (int) D.29383;
      D.29385 = D.29384 & 4096;
      if (D.29385 != 0) goto <D.29415>; else goto <D.29417>;
      <D.29417>:
      D.29387 = method->flags;
      D.29388 = (int) D.29387;
      D.29389 = D.29388 & 8192;
      if (D.29389 != 0) goto <D.29415>; else goto <D.29416>;
      <D.29415>:
      method = mono_marshal_get_native_wrapper (method, 1, 0);
      <D.29416>:
      D.29418 = mono_get_root_domain ();
      cfg = mini_method_compile (method, opt, D.29418, 0, 0);
      mono_destroy_compile (cfg);
      i = i + 1;
      <D.26684>:
      if (i < count) goto <D.26683>; else goto <D.26685>;
      <D.26685>:
      <D.29414>:
      goto <D.29419>;
      <D.29401>:
      D.29420 = mono_get_root_domain ();
      cfg = mini_method_compile (method, opt, D.29420, 0, 0);
      mono_destroy_compile (cfg);
      <D.29419>:
      <D.29399>:
      domain.82 = domain;
      mini_cleanup (domain.82);
      D.27395 = 0;
      return D.27395;
    }
  finally
    {
      main_args = {CLOBBER};
      domain = {CLOBBER};
      open_status = {CLOBBER};
    }
}


mono_set_use_smp (int use_smp)
{
  int D.29426;

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

    try
      {
        proc_mask = 1;
        D.29426 = getpid ();
        sched_setaffinity (D.29426, 4, &proc_mask);
      }
    finally
      {
        proc_mask = {CLOBBER};
      }
  }
  <D.29425>:
}


mini_trace_usage ()
{
  struct _IO_FILE * stdout.88;

  stdout.88 = stdout;
  fprintf (stdout.88, "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.89;
  const char[6] * D.29429;
  const char[18] * D.29430;
  unsigned int i.90;
  int i;

  stdout.89 = stdout;
  fprintf (stdout.89, "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.25878>;
  <D.25877>:
  stdout.89 = stdout;
  D.29429 = &graph_names[i].name;
  D.29430 = &graph_names[i].desc;
  fprintf (stdout.89, "                           %-10s %s\n", D.29429, D.29430);
  i = i + 1;
  <D.25878>:
  i.90 = (unsigned int) i;
  if (i.90 <= 4) goto <D.25877>; else goto <D.25879>;
  <D.25879>:
}


mini_debug_usage ()
{
  struct _IO_FILE * stdout.91;

  stdout.91 = stdout;
  fprintf (stdout.91, "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.92;
  short int D.29434;
  sizetype D.29435;
  const char * D.29436;
  unsigned int D.29437;
  sizetype D.29438;
  sizetype D.29439;
  const char * D.29440;
  unsigned int i.93;
  int i;

  i = 0;
  goto <D.25885>;
  <D.25884>:
  stdout.92 = stdout;
  D.29434 = opt_names[i];
  D.29435 = (sizetype) D.29434;
  D.29436 = &opstr + D.29435;
  D.29434 = opt_names[i];
  D.29435 = (sizetype) D.29434;
  D.29434 = opt_names[i];
  D.29435 = (sizetype) D.29434;
  D.29436 = &opstr + D.29435;
  D.29437 = strlen (D.29436);
  D.29438 = D.29435 + D.29437;
  D.29439 = D.29438 + 1;
  D.29440 = &opstr + D.29439;
  fprintf (stdout.92, "                           %-10s %s\n", D.29436, D.29440);
  i = i + 1;
  <D.25885>:
  i.93 = (unsigned int) i;
  if (i.93 <= 28) goto <D.25884>; else goto <D.25886>;
  <D.25886>:
}


switch_gc (char * * argv, const char * target_gc)
{
  int D.26038;
  const char * D.29442;
  char * D.29445;
  char * D.29446;
  unsigned int D.29449;
  unsigned int D.29450;
  char * D.29452;
  unsigned int D.29455;
  char * D.29456;
  struct GString * path;

  {
    size_t __s1_len;
    size_t __s2_len;

    D.29442 = mono_gc_get_gc_name ();
    D.26038 = __builtin_strcmp (D.29442, target_gc);
  }
  if (D.26038 == 0) goto <D.29443>; else goto <D.29444>;
  <D.29443>:
  return;
  <D.29444>:
  D.29445 = *argv;
  path = monoeg_g_string_new (D.29445);
  D.29445 = *argv;
  D.29446 = strstr (D.29445, "-sgen");
  if (D.29446 != 0B) goto <D.29447>; else goto <D.29448>;
  <D.29447>:
  D.29449 = path->len;
  D.29450 = D.29449 + 4294967291;
  monoeg_g_string_truncate (path, D.29450);
  goto <D.29451>;
  <D.29448>:
  D.29445 = *argv;
  D.29452 = strstr (D.29445, "-boehm");
  if (D.29452 != 0B) goto <D.29453>; else goto <D.29454>;
  <D.29453>:
  D.29449 = path->len;
  D.29455 = D.29449 + 4294967290;
  monoeg_g_string_truncate (path, D.29455);
  <D.29454>:
  <D.29451>:
  monoeg_g_string_append_c (path, 45);
  monoeg_g_string_append (path, target_gc);
  D.29456 = path->str;
  execvp (D.29456, argv);
}


atoi (const char * __nptr)
{
  int D.29458;

  D.29458 = strtol (__nptr, 0B, 10);
  return D.29458;
}


mono_parse_graph_options (const char * p)
{
  unsigned int D.29460;
  unsigned int len.94;
  int D.29462;
  MonoGraphOptions D.29465;
  unsigned int i.95;
  struct _IO_FILE * stderr.96;
  const char * n;
  int i;
  int len;

  i = 0;
  goto <D.25667>;
  <D.25666>:
  n = &graph_names[i].name;
  D.29460 = strlen (n);
  len = (int) D.29460;
  len.94 = (unsigned int) len;
  D.29462 = strncmp (p, n, len.94);
  if (D.29462 == 0) goto <D.29463>; else goto <D.29464>;
  <D.29463>:
  D.29465 = graph_names[i].value;
  return D.29465;
  <D.29464>:
  i = i + 1;
  <D.25667>:
  i.95 = (unsigned int) i;
  if (i.95 <= 4) goto <D.25666>; else goto <D.25668>;
  <D.25668>:
  stderr.96 = stderr;
  fprintf (stderr.96, "Invalid graph name provided: %s\n", p);
  exit (1);
}


parse_debug_options (const char * p)
{
  char D.29469;
  struct _IO_FILE * stderr.97;
  gboolean D.29473;
  int D.29474;
  int D.29478;
  int D.29482;
  struct MonoDebugOptions * opt;

  opt = mini_get_debug_options ();
  <D.25643>:
  D.29469 = *p;
  if (D.29469 == 0) goto <D.29470>; else goto <D.29471>;
  <D.29470>:
  stderr.97 = stderr;
  fprintf (stderr.97, "Syntax error; expected debug option name\n");
  D.29473 = 0;
  return D.29473;
  <D.29471>:
  D.29474 = strncmp (p, "casts", 5);
  if (D.29474 == 0) goto <D.29475>; else goto <D.29476>;
  <D.29475>:
  opt->better_cast_details = 1;
  p = p + 5;
  goto <D.29477>;
  <D.29476>:
  D.29478 = strncmp (p, "mdb-optimizations", 17);
  if (D.29478 == 0) goto <D.29479>; else goto <D.29480>;
  <D.29479>:
  opt->mdb_optimizations = 1;
  p = p + 17;
  goto <D.29481>;
  <D.29480>:
  D.29482 = strncmp (p, "gdb", 3);
  if (D.29482 == 0) goto <D.29483>; else goto <D.29484>;
  <D.29483>:
  opt->gdb = 1;
  p = p + 3;
  goto <D.29485>;
  <D.29484>:
  stderr.97 = stderr;
  fprintf (stderr.97, "Invalid debug option `%s\', use --help-debug for details\n", p);
  D.29473 = 0;
  return D.29473;
  <D.29485>:
  <D.29481>:
  <D.29477>:
  D.29469 = *p;
  if (D.29469 == 44) goto <D.29486>; else goto <D.29487>;
  <D.29486>:
  p = p + 1;
  D.29469 = *p;
  if (D.29469 == 0) goto <D.29488>; else goto <D.29489>;
  <D.29488>:
  stderr.97 = stderr;
  fprintf (stderr.97, "Syntax error; expected debug option name\n");
  D.29473 = 0;
  return D.29473;
  <D.29489>:
  <D.29487>:
  D.29469 = *p;
  if (D.29469 != 0) goto <D.25643>; else goto <D.25644>;
  <D.25644>:
  D.29473 = 1;
  return D.29473;
}


load_agent (struct MonoDomain * domain, char * desc)
{
  int col.98;
  int desc.99;
  int D.29495;
  int D.29496;
  unsigned int D.29497;
  sizetype D.29498;
  char * D.29499;
  struct _IO_FILE * stderr.100;
  <unnamed type> open_status.101;
  const char * D.29505;
  int D.29506;
  const char * D.29509;
  struct MonoThread * D.29512;
  struct MonoClass * D.29515;
  struct MonoString * D.29516;
  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.29491>; else goto <D.29492>;
      <D.29491>:
      col.98 = (int) col;
      desc.99 = (int) desc;
      D.29495 = col.98 - desc.99;
      D.29496 = D.29495 + 1;
      D.29497 = (unsigned int) D.29496;
      agent = monoeg_g_memdup (desc, D.29497);
      col.98 = (int) col;
      desc.99 = (int) desc;
      D.29495 = col.98 - desc.99;
      D.29498 = (sizetype) D.29495;
      D.29499 = agent + D.29498;
      *D.29499 = 0;
      args = col + 1;
      goto <D.29500>;
      <D.29492>:
      agent = monoeg_strdup (desc);
      args = 0B;
      <D.29500>:
      agent_assembly = mono_assembly_open (agent, &open_status);
      if (agent_assembly == 0B) goto <D.29501>; else goto <D.29502>;
      <D.29501>:
      stderr.100 = stderr;
      open_status.101 = open_status;
      D.29505 = mono_image_strerror (open_status.101);
      fprintf (stderr.100, "Cannot open agent assembly \'%s\': %s.\n", agent, D.29505);
      monoeg_g_free (agent);
      D.29506 = 2;
      return D.29506;
      <D.29502>:
      image = mono_assembly_get_image (agent_assembly);
      entry = mono_image_get_entry_point (image);
      if (entry == 0) goto <D.29507>; else goto <D.29508>;
      <D.29507>:
      D.29509 = mono_image_get_filename (image);
      monoeg_g_print ("Assembly \'%s\' doesn\'t have an entry point.\n", D.29509);
      monoeg_g_free (agent);
      D.29506 = 1;
      return D.29506;
      <D.29508>:
      method = mono_get_method (image, entry, 0B);
      if (method == 0B) goto <D.29510>; else goto <D.29511>;
      <D.29510>:
      monoeg_g_print ("The entry point method of assembly \'%s\' could not be loaded\n", agent);
      monoeg_g_free (agent);
      D.29506 = 1;
      return D.29506;
      <D.29511>:
      D.29512 = mono_thread_current ();
      mono_thread_set_main (D.29512);
      if (args != 0B) goto <D.29513>; else goto <D.29514>;
      <D.29513>:
      D.29515 = mono_defaults.string_class;
      main_args = mono_array_new (domain, D.29515, 1);
      {
        struct MonoString * * __p;

        __p = mono_array_addr_with_size (main_args, 4, 0);
        D.29516 = mono_string_new (domain, args);
        *__p = D.29516;
      }
      goto <D.29517>;
      <D.29514>:
      D.29515 = mono_defaults.string_class;
      main_args = mono_array_new (domain, D.29515, 0);
      <D.29517>:
      monoeg_g_free (agent);
      pa[0] = main_args;
      mono_runtime_invoke (method, 0B, &pa, 0B);
      D.29506 = 0;
      return D.29506;
    }
  finally
    {
      pa = {CLOBBER};
      open_status = {CLOBBER};
    }
}


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

  if (str != 0B) goto <D.29520>; else goto <D.29521>;
  <D.29520>:
  D.29522 = __strdup (str);
  return D.29522;
  <D.29521>:
  D.29522 = 0B;
  return D.29522;
}


mini_regression_list (int verbose, int count, char * * images)
{
  unsigned int i.102;
  unsigned int D.29525;
  char * * D.29526;
  char * D.29527;
  struct MonoImage * D.29530;
  int D.29531;
  int run.103;
  int D.29535;
  double D.29536;
  double D.29537;
  double D.29538;
  double D.29539;
  int D.29541;
  int i;
  int total;
  int total_run;
  int run;
  struct MonoAssembly * ass;

  try
    {
      total = 0;
      total_run = total;
      i = 0;
      goto <D.25771>;
      <D.25770>:
      i.102 = (unsigned int) i;
      D.29525 = i.102 * 4;
      D.29526 = images + D.29525;
      D.29527 = *D.29526;
      ass = mono_assembly_open (D.29527, 0B);
      if (ass == 0B) goto <D.29528>; else goto <D.29529>;
      <D.29528>:
      i.102 = (unsigned int) i;
      D.29525 = i.102 * 4;
      D.29526 = images + D.29525;
      D.29527 = *D.29526;
      monoeg_g_log (0B, 16, "failed to load assembly: %s", D.29527);
      // predicted unlikely by continue predictor.
      goto <D.25769>;
      <D.29529>:
      D.29530 = mono_assembly_get_image (ass);
      D.29531 = mini_regression (D.29530, verbose, &run);
      total = D.29531 + total;
      run.103 = run;
      total_run = total_run + run.103;
      <D.25769>:
      i = i + 1;
      <D.25771>:
      if (i < count) goto <D.25770>; else goto <D.25772>;
      <D.25772>:
      if (total > 0) goto <D.29533>; else goto <D.29534>;
      <D.29533>:
      D.29535 = total_run - total;
      D.29536 = (double) D.29535;
      D.29537 = D.29536 * 1.0e+2;
      D.29538 = (double) total_run;
      D.29539 = D.29537 / D.29538;
      monoeg_g_print ("Overall results: tests: %d, failed: %d, opt combinations: %d (pass: %.2f%%)\n", total_run, total, 24, D.29539);
      goto <D.29540>;
      <D.29534>:
      monoeg_g_print ("Overall results: tests: %d, 100%% pass, opt combinations: %d\n", total_run, 24);
      <D.29540>:
      D.29541 = total;
      return D.29541;
    }
  finally
    {
      run = {CLOBBER};
    }
}


mini_regression (struct MonoImage * image, int verbose, int * total_run)
{
  struct FILE * mini_stats_fd.104;
  char D.29547;
  unsigned int D.29552;
  unsigned int D.29553;
  struct MonoClass * D.29556;
  const char * D.29557;
  int D.29558;
  int D.29563;
  unsigned int D.29564;
  int mono_do_single_method_regression.105;
  int total.106;
  int D.29573;
  struct GSList * mono_single_method_list.107;
  unsigned int D.29575;
  void * mono_current_single_method.108;
  struct MonoMethod * mono_current_single_method.109;
  struct GSList * iftmp.110;
  unsigned int D.29585;
  unsigned int exclude.111;
  unsigned int D.29587;
  unsigned int D.29588;
  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.104 = mini_stats_fd;
      if (mini_stats_fd.104 != 0B) goto <D.29545>; else goto <D.29546>;
      <D.29545>:
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, "$stattitle = \'Mono Benchmark Results (various optimizations)\';\n");
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, "$graph->set_legend(qw(");
      opt = 0;
      goto <D.25736>;
      <D.25735>:
      {
        guint32 opt_flags;

        opt_flags = opt_sets[opt];
        n = opt_descr (opt_flags);
        D.29547 = *n;
        if (D.29547 == 0) goto <D.29548>; else goto <D.29549>;
        <D.29548>:
        n = "none";
        <D.29549>:
        if (opt != 0) goto <D.29550>; else goto <D.29551>;
        <D.29550>:
        mini_stats_fd.104 = mini_stats_fd;
        fprintf (mini_stats_fd.104, " ");
        <D.29551>:
        mini_stats_fd.104 = mini_stats_fd;
        fprintf (mini_stats_fd.104, "%s", n);
      }
      opt = opt + 1;
      <D.25736>:
      if (opt <= 23) goto <D.25735>; else goto <D.25737>;
      <D.25737>:
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, "));\n");
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, "@data = (\n");
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, "[");
      <D.29546>:
      i = 0;
      goto <D.25749>;
      <D.25748>:
      D.29552 = i + 1;
      D.29553 = D.29552 | 100663296;
      method = mono_get_method (image, D.29553, 0B);
      if (method == 0B) goto <D.29554>; else goto <D.29555>;
      <D.29554>:
      // predicted unlikely by continue predictor.
      goto <D.25738>;
      <D.29555>:
      D.29556 = method->klass;
      mono_class_init (D.29556);
      D.29557 = method->name;
      D.29558 = strncmp (D.29557, "test_", 5);
      if (D.29558 == 0) goto <D.29559>; else goto <D.29560>;
      <D.29559>:
      mini_stats_fd.104 = mini_stats_fd;
      if (mini_stats_fd.104 != 0B) goto <D.29561>; else goto <D.29562>;
      <D.29561>:
      mini_stats_fd.104 = mini_stats_fd;
      D.29557 = method->name;
      fprintf (mini_stats_fd.104, "\"%s\",", D.29557);
      <D.29562>:
      <D.29560>:
      <D.25738>:
      i = i + 1;
      <D.25749>:
      D.29563 = mono_image_get_table_rows (image, 6);
      D.29564 = (unsigned int) D.29563;
      if (D.29564 > i) goto <D.25748>; else goto <D.25750>;
      <D.25750>:
      mini_stats_fd.104 = mini_stats_fd;
      if (mini_stats_fd.104 != 0B) goto <D.29565>; else goto <D.29566>;
      <D.29565>:
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, "],\n");
      <D.29566>:
      total = 0;
      *total_run = 0;
      mono_do_single_method_regression.105 = mono_do_single_method_regression;
      if (mono_do_single_method_regression.105 != 0) goto <D.29568>; else goto <D.29569>;
      <D.29568>:
      {
        struct GSList * iter;

        mini_regression_step (image, verbose, total_run, &total, 0, timer, domain);
        total.106 = total;
        if (total.106 != 0) goto <D.29571>; else goto <D.29572>;
        <D.29571>:
        D.29573 = total;
        return D.29573;
        <D.29572>:
        mono_single_method_list.107 = mono_single_method_list;
        D.29575 = monoeg_g_slist_length (mono_single_method_list.107);
        monoeg_g_print ("Single method regression: %d methods\n", D.29575);
        iter = mono_single_method_list;
        goto <D.25754>;
        <D.25753>:
        {
          char * method_name;

          mono_current_single_method.108 = iter->data;
          mono_current_single_method = mono_current_single_method.108;
          mono_current_single_method.109 = mono_current_single_method;
          method_name = mono_method_full_name (mono_current_single_method.109, 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.106 = total;
          if (total.106 != 0) goto <D.29578>; else goto <D.29579>;
          <D.29578>:
          D.29573 = total;
          return D.29573;
          <D.29579>:
        }
        if (iter != 0B) goto <D.29581>; else goto <D.29582>;
        <D.29581>:
        iftmp.110 = iter->next;
        goto <D.29583>;
        <D.29582>:
        iftmp.110 = 0B;
        <D.29583>:
        iter = iftmp.110;
        <D.25754>:
        if (iter != 0B) goto <D.25753>; else goto <D.25755>;
        <D.25755>:
      }
      goto <D.29584>;
      <D.29569>:
      opt = 0;
      goto <D.25757>;
      <D.25756>:
      D.29585 = opt_sets[opt];
      exclude.111 = exclude;
      D.29587 = ~exclude.111;
      D.29588 = D.29585 & D.29587;
      mini_regression_step (image, verbose, total_run, &total, D.29588, timer, domain);
      opt = opt + 1;
      <D.25757>:
      if (opt <= 23) goto <D.25756>; else goto <D.25758>;
      <D.25758>:
      <D.29584>:
      mini_stats_fd.104 = mini_stats_fd;
      if (mini_stats_fd.104 != 0B) goto <D.29589>; else goto <D.29590>;
      <D.29589>:
      mini_stats_fd.104 = mini_stats_fd;
      fprintf (mini_stats_fd.104, ");\n");
      mini_stats_fd.104 = mini_stats_fd;
      fflush (mini_stats_fd.104);
      <D.29590>:
      monoeg_g_timer_destroy (timer);
      D.29573 = total;
      return D.29573;
    }
  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.29593;
  void * D.29594;
  struct GHashTable * D.29597;
  struct GHashTable * D.29598;
  struct MonoInternalHashTable * D.29599;
  struct FILE * mini_stats_fd.112;
  int D.29603;
  int D.29604;
  unsigned int D.29605;
  const char * D.29608;
  int D.29609;
  const char * D.29612;
  unsigned int D.29613;
  struct MonoDomain * D.29614;
  double D.29615;
  unsigned int D.29616;
  struct MonoDomain * D.29621;
  void * D.29622;
  unsigned char * D.29626;
  struct MonoDomain * D.29627;
  void * D.29628;
  unsigned int D.29631;
  unsigned int code_size.113;
  unsigned int D.29633;
  double D.29639;
  double D.29640;
  int D.29641;
  _Bool D.29644;
  _Bool D.29645;
  _Bool D.29646;
  int D.29649;
  int D.29650;
  double D.29651;
  double D.29652;
  double D.29653;
  double D.29654;
  double D.29656;
  int D.29657;
  int D.29658;
  int D.29659;
  int D.29660;
  int D.29661;
  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.29593 = mono_image_get_filename (image);
  monoeg_g_print ("Test run: image=%s, opts=%s\n", D.29593, n);
  monoeg_g_free (n);
  code_size = 0;
  run = code_size;
  failed = run;
  cfailed = failed;
  elapsed = 0.0;
  comp_time = elapsed;
  D.29594 = domain->runtime_info;
  if (D.29594 != 0B) goto <D.29595>; else goto <D.29596>;
  <D.29595>:
  D.29594 = domain->runtime_info;
  D.29597 = MEM[(struct MonoJitDomainInfo *)D.29594].jit_trampoline_hash;
  monoeg_g_hash_table_destroy (D.29597);
  D.29594 = domain->runtime_info;
  D.29598 = monoeg_g_hash_table_new (mono_aligned_addr_hash, 0B);
  MEM[(struct MonoJitDomainInfo *)D.29594].jit_trampoline_hash = D.29598;
  D.29599 = &domain->jit_code_hash;
  mono_internal_hash_table_destroy (D.29599);
  D.29599 = &domain->jit_code_hash;
  mono_jit_code_hash_init (D.29599);
  <D.29596>:
  monoeg_g_timer_start (timer);
  mini_stats_fd.112 = mini_stats_fd;
  if (mini_stats_fd.112 != 0B) goto <D.29601>; else goto <D.29602>;
  <D.29601>:
  mini_stats_fd.112 = mini_stats_fd;
  fprintf (mini_stats_fd.112, "[");
  <D.29602>:
  i = 0;
  goto <D.25719>;
  <D.25718>:
  {
    struct MonoMethod * method;

    D.29603 = i + 1;
    D.29604 = D.29603 | 100663296;
    D.29605 = (unsigned int) D.29604;
    method = mono_get_method (image, D.29605, 0B);
    if (method == 0B) goto <D.29606>; else goto <D.29607>;
    <D.29606>:
    // predicted unlikely by continue predictor.
    goto <D.25707>;
    <D.29607>:
    D.29608 = method->name;
    D.29609 = strncmp (D.29608, "test_", 5);
    if (D.29609 == 0) goto <D.29610>; else goto <D.29611>;
    <D.29610>:
    {
      struct MonoCompile * cfg;

      D.29608 = method->name;
      D.29612 = D.29608 + 5;
      expected = atoi (D.29612);
      run = run + 1;
      start_time = monoeg_g_timer_elapsed (timer, 0B);
      comp_time = comp_time - start_time;
      D.29613 = mono_get_optimizations_for_method (method, opt_flags);
      D.29614 = mono_get_root_domain ();
      cfg = mini_method_compile (method, D.29613, D.29614, 1, 0);
      D.29615 = monoeg_g_timer_elapsed (timer, 0B);
      comp_time = D.29615 + comp_time;
      D.29616 = cfg->exception_type;
      if (D.29616 == 0) goto <D.29617>; else goto <D.29618>;
      <D.29617>:
      if (verbose > 1) goto <D.29619>; else goto <D.29620>;
      <D.29619>:
      D.29608 = method->name;
      monoeg_g_print ("Running \'%s\' ...\n", D.29608);
      <D.29620>:
      D.29621 = mono_get_root_domain ();
      D.29622 = mono_aot_get_method (D.29621, method);
      func = (int (*TestMethod) (void)) D.29622;
      if (func != 0B) goto <D.29623>; else goto <D.29624>;
      <D.29623>:
      goto <D.29625>;
      <D.29624>:
      D.29626 = cfg->native_code;
      func = (int (*TestMethod) (void)) D.29626;
      <D.29625>:
      D.29627 = mono_get_root_domain ();
      D.29628 = mono_create_ftnptr (D.29627, func);
      func = (int (*TestMethod) (void)) D.29628;
      result = func ();
      if (result != expected) goto <D.29629>; else goto <D.29630>;
      <D.29629>:
      failed = failed + 1;
      D.29608 = method->name;
      monoeg_g_print ("Test \'%s\' failed result (got %d, expected %d).\n", D.29608, result, expected);
      <D.29630>:
      D.29631 = cfg->code_len;
      code_size.113 = (unsigned int) code_size;
      D.29633 = D.29631 + code_size.113;
      code_size = (int) D.29633;
      mono_destroy_compile (cfg);
      goto <D.29634>;
      <D.29618>:
      cfailed = cfailed + 1;
      if (verbose != 0) goto <D.29635>; else goto <D.29636>;
      <D.29635>:
      D.29608 = method->name;
      monoeg_g_print ("Test \'%s\' failed compilation.\n", D.29608);
      <D.29636>:
      <D.29634>:
      mini_stats_fd.112 = mini_stats_fd;
      if (mini_stats_fd.112 != 0B) goto <D.29637>; else goto <D.29638>;
      <D.29637>:
      mini_stats_fd.112 = mini_stats_fd;
      D.29639 = monoeg_g_timer_elapsed (timer, 0B);
      D.29640 = D.29639 - start_time;
      fprintf (mini_stats_fd.112, "%f, ", D.29640);
      <D.29638>:
    }
    <D.29611>:
  }
  <D.25707>:
  i = i + 1;
  <D.25719>:
  D.29641 = mono_image_get_table_rows (image, 6);
  if (D.29641 > i) goto <D.25718>; else goto <D.25720>;
  <D.25720>:
  mini_stats_fd.112 = mini_stats_fd;
  if (mini_stats_fd.112 != 0B) goto <D.29642>; else goto <D.29643>;
  <D.29642>:
  mini_stats_fd.112 = mini_stats_fd;
  fprintf (mini_stats_fd.112, "],\n");
  <D.29643>:
  monoeg_g_timer_stop (timer);
  elapsed = monoeg_g_timer_elapsed (timer, 0B);
  D.29644 = failed > 0;
  D.29645 = cfailed > 0;
  D.29646 = D.29644 | D.29645;
  if (D.29646 != 0) goto <D.29647>; else goto <D.29648>;
  <D.29647>:
  D.29649 = run - failed;
  D.29650 = D.29649 - cfailed;
  D.29651 = (double) D.29650;
  D.29652 = D.29651 * 1.0e+2;
  D.29653 = (double) run;
  D.29654 = D.29652 / D.29653;
  monoeg_g_print ("Results: total tests: %d, failed: %d, cfailed: %d (pass: %.2f%%)\n", run, failed, cfailed, D.29654);
  goto <D.29655>;
  <D.29648>:
  monoeg_g_print ("Results: total tests: %d, all pass \n", run);
  <D.29655>:
  D.29656 = elapsed - comp_time;
  monoeg_g_print ("Elapsed time: %f secs (%f, %f), Code size: %d\n\n", elapsed, D.29656, comp_time, code_size);
  D.29657 = *total;
  D.29658 = failed + cfailed;
  D.29659 = D.29657 + D.29658;
  *total = D.29659;
  D.29660 = *total_run;
  D.29661 = D.29660 + run;
  *total_run = D.29661;
}


mini_usage ()
{
  struct _IO_FILE * stdout.114;

  stdout.114 = stdout;
  fprintf (stdout.114, "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.115;
  struct MonoDomain * D.29666;
  char * * D.29667;
  unsigned int i.116;
  unsigned int D.29669;
  char * * D.29670;
  char * D.29671;
  struct _IO_FILE * stderr.117;
  int D.25854;
  char * D.29677;
  struct MonoImage * D.29678;
  char * D.29679;
  unsigned int D.29682;
  char * D.29683;
  int D.29686;
  const char * D.29688;
  unsigned int D.29691;
  struct MainThreadArgs * main_args;
  struct MonoAssembly * assembly;

  main_args = user_data;
  mono_compile_aot.115 = mono_compile_aot;
  if (mono_compile_aot.115 != 0) goto <D.29664>; else goto <D.29665>;
  <D.29664>:
  {
    int i;
    int res;

    i = 0;
    goto <D.25856>;
    <D.25855>:
    D.29666 = main_args->domain;
    D.29667 = main_args->argv;
    i.116 = (unsigned int) i;
    D.29669 = i.116 * 4;
    D.29670 = D.29667 + D.29669;
    D.29671 = *D.29670;
    assembly = mono_domain_assembly_open (D.29666, D.29671);
    if (assembly == 0B) goto <D.29672>; else goto <D.29673>;
    <D.29672>:
    stderr.117 = stderr;
    D.29667 = main_args->argv;
    i.116 = (unsigned int) i;
    D.29669 = i.116 * 4;
    D.29670 = D.29667 + D.29669;
    D.29671 = *D.29670;
    fprintf (stderr.117, "Can not open image %s\n", D.29671);
    exit (1);
    <D.29673>:
    {
      MonoImageOpenStatus status;
      struct MonoImage * img;

      try
        {
          D.29667 = main_args->argv;
          i.116 = (unsigned int) i;
          D.29669 = i.116 * 4;
          D.29670 = D.29667 + D.29669;
          D.29671 = *D.29670;
          img = mono_image_open (D.29671, &status);
          if (img != 0B) goto <D.29675>; else goto <D.29676>;
          <D.29675>:
          {
            size_t __s1_len;
            size_t __s2_len;

            D.29677 = img->name;
            D.29678 = assembly->image;
            D.29679 = D.29678->name;
            D.25854 = __builtin_strcmp (D.29677, D.29679);
          }
          if (D.25854 != 0) goto <D.29680>; else goto <D.29681>;
          <D.29680>:
          stderr.117 = stderr;
          D.29678 = assembly->image;
          D.29679 = D.29678->name;
          D.29677 = img->name;
          fprintf (stderr.117, "Error: Loaded assembly \'%s\' doesn\'t match original file name \'%s\'. Set MONO_PATH to the assembly\'s location.\n", D.29679, D.29677);
          exit (1);
          <D.29681>:
          <D.29676>:
        }
      finally
        {
          status = {CLOBBER};
        }
    }
    D.29682 = main_args->opts;
    D.29683 = main_args->aot_options;
    res = mono_compile_assembly (assembly, D.29682, D.29683);
    if (res != 0) goto <D.29684>; else goto <D.29685>;
    <D.29684>:
    stderr.117 = stderr;
    D.29667 = main_args->argv;
    i.116 = (unsigned int) i;
    D.29669 = i.116 * 4;
    D.29670 = D.29667 + D.29669;
    D.29671 = *D.29670;
    fprintf (stderr.117, "AOT of image %s failed.\n", D.29671);
    exit (1);
    <D.29685>:
    i = i + 1;
    <D.25856>:
    D.29686 = main_args->argc;
    if (D.29686 > i) goto <D.25855>; else goto <D.25857>;
    <D.25857>:
  }
  goto <D.29687>;
  <D.29665>:
  D.29666 = main_args->domain;
  D.29688 = main_args->file;
  assembly = mono_domain_assembly_open (D.29666, D.29688);
  if (assembly == 0B) goto <D.29689>; else goto <D.29690>;
  <D.29689>:
  stderr.117 = stderr;
  D.29688 = main_args->file;
  fprintf (stderr.117, "Can not open image %s\n", D.29688);
  exit (1);
  <D.29690>:
  D.29682 = main_args->opts;
  D.29691 = D.29682 & 131072;
  if (D.29691 != 0) goto <D.29692>; else goto <D.29693>;
  <D.29692>:
  mono_precompile_assemblies ();
  <D.29693>:
  D.29666 = main_args->domain;
  D.29686 = main_args->argc;
  D.29667 = main_args->argv;
  mono_jit_exec (D.29666, assembly, D.29686, D.29667);
  <D.29687>:
}


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

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


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

  i = 0;
  goto <D.25811>;
  <D.25810>:
  compile_all_methods_thread_main_inner (args);
  i = i + 1;
  <D.25811>:
  D.29695 = args->recompilation_times;
  if (D.29695 > i) goto <D.25810>; else goto <D.25812>;
  <D.25812>:
}


compile_all_methods_thread_main_inner (struct CompileAllThreadArgs * args)
{
  int D.29696;
  int D.29697;
  int D.29698;
  short unsigned int D.29705;
  int D.29706;
  int D.29707;
  short unsigned int D.29709;
  int D.29710;
  int D.29711;
  int D.29713;
  int D.29715;
  struct MonoClass * D.29716;
  struct MonoGenericContainer * D.29717;
  unsigned char D.29722;
  unsigned char D.29723;
  unsigned int D.29728;
  unsigned int D.29729;
  struct MonoDomain * D.29730;
  unsigned int D.29731;
  struct MonoMethod * D.29734;
  char * D.29735;
  char * D.29736;
  int D.29737;
  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.25804>;
  <D.25803>:
  {
    guint32 token;
    struct MonoMethodSignature * sig;

    D.29696 = i + 1;
    D.29697 = D.29696 | 100663296;
    token = (guint32) D.29697;
    D.29698 = mono_metadata_has_generic_params (image, token);
    if (D.29698 != 0) goto <D.29699>; else goto <D.29700>;
    <D.29699>:
    // predicted unlikely by continue predictor.
    goto <D.25800>;
    <D.29700>:
    method = mono_get_method (image, token, 0B);
    if (method == 0B) goto <D.29701>; else goto <D.29702>;
    <D.29701>:
    // predicted unlikely by continue predictor.
    goto <D.25800>;
    <D.29702>:
    D.29705 = method->iflags;
    D.29706 = (int) D.29705;
    D.29707 = D.29706 & 4096;
    if (D.29707 != 0) goto <D.29703>; else goto <D.29708>;
    <D.29708>:
    D.29709 = method->flags;
    D.29710 = (int) D.29709;
    D.29711 = D.29710 & 8192;
    if (D.29711 != 0) goto <D.29703>; else goto <D.29712>;
    <D.29712>:
    D.29705 = method->iflags;
    D.29706 = (int) D.29705;
    D.29713 = D.29706 & 3;
    if (D.29713 != 0) goto <D.29703>; else goto <D.29714>;
    <D.29714>:
    D.29709 = method->flags;
    D.29710 = (int) D.29709;
    D.29715 = D.29710 & 1024;
    if (D.29715 != 0) goto <D.29703>; else goto <D.29704>;
    <D.29703>:
    // predicted unlikely by continue predictor.
    goto <D.25800>;
    <D.29704>:
    D.29716 = method->klass;
    D.29717 = D.29716->generic_container;
    if (D.29717 != 0B) goto <D.29718>; else goto <D.29719>;
    <D.29718>:
    // predicted unlikely by continue predictor.
    goto <D.25800>;
    <D.29719>:
    sig = mono_method_signature (method);
    if (sig == 0B) goto <D.29720>; else goto <D.29721>;
    <D.29720>:
    {
      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.25800>;
    }
    <D.29721>:
    D.29722 = BIT_FIELD_REF <*sig, 8, 88>;
    D.29723 = D.29722 & 4;
    if (D.29723 != 0) goto <D.29724>; else goto <D.29725>;
    <D.29724>:
    // predicted unlikely by continue predictor.
    goto <D.25800>;
    <D.29725>:
    count = count + 1;
    if (verbose != 0) goto <D.29726>; else goto <D.29727>;
    <D.29726>:
    {
      char * desc;

      desc = mono_method_full_name (method, 1);
      monoeg_g_print ("Compiling %d %s\n", count, desc);
      monoeg_g_free (desc);
    }
    <D.29727>:
    D.29728 = args->opts;
    D.29729 = mono_get_optimizations_for_method (method, D.29728);
    D.29730 = mono_get_root_domain ();
    cfg = mini_method_compile (method, D.29729, D.29730, 0, 0);
    D.29731 = cfg->exception_type;
    if (D.29731 != 0) goto <D.29732>; else goto <D.29733>;
    <D.29732>:
    D.29734 = cfg->method;
    D.29735 = mono_method_full_name (D.29734, 1);
    D.29736 = cfg->exception_message;
    printf ("Compilation of %s failed with exception \'%s\':\n", D.29735, D.29736);
    fail_count = fail_count + 1;
    <D.29733>:
    mono_destroy_compile (cfg);
  }
  <D.25800>:
  i = i + 1;
  <D.25804>:
  D.29737 = mono_image_get_table_rows (image, 6);
  if (D.29737 > i) goto <D.25803>; else goto <D.25805>;
  <D.25805>:
  if (fail_count != 0) goto <D.29738>; else goto <D.29739>;
  <D.29738>:
  exit (1);
  <D.29739>:
}


printf (const char * restrict __fmt)
{
  int D.29740;

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


opt_descr (guint32 flags)
{
  int D.29742;
  unsigned int D.29743;
  unsigned int D.29744;
  short int D.29749;
  sizetype D.29750;
  const gchar * D.29751;
  unsigned int i.118;
  char * D.29753;
  struct GString * str;
  int i;
  int need_comma;

  str = monoeg_g_string_new ("");
  need_comma = 0;
  i = 0;
  goto <D.25680>;
  <D.25679>:
  D.29742 = 1 << i;
  D.29743 = (unsigned int) D.29742;
  D.29744 = D.29743 & flags;
  if (D.29744 != 0) goto <D.29745>; else goto <D.29746>;
  <D.29745>:
  if (need_comma != 0) goto <D.29747>; else goto <D.29748>;
  <D.29747>:
  monoeg_g_string_append_c (str, 44);
  <D.29748>:
  D.29749 = opt_names[i];
  D.29750 = (sizetype) D.29749;
  D.29751 = &opstr + D.29750;
  monoeg_g_string_append (str, D.29751);
  need_comma = 1;
  <D.29746>:
  i = i + 1;
  <D.25680>:
  i.118 = (unsigned int) i;
  if (i.118 <= 28) goto <D.25679>; else goto <D.25681>;
  <D.25681>:
  D.29753 = monoeg_g_string_free (str, 0);
  return D.29753;
}


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

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


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

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


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.29761;
  struct MonoTraceSpec * trace_opt;

  trace_opt = mono_trace_parse_options (options);
  if (trace_opt == 0B) goto <D.29759>; else goto <D.29760>;
  <D.29759>:
  D.29761 = 0;
  return D.29761;
  <D.29760>:
  mono_jit_trace_calls = trace_opt;
  D.29761 = 1;
  return D.29761;
}


mono_set_signal_chaining (gboolean chain_signals)
{
  mono_do_signal_chaining = chain_signals;
}


