main (int argc, char * * argv)
{
  const char * build_date.0;
  int D.21816;

  build_date.0 = build_date;
  mono_build_date = build_date.0;
  D.21816 = mono_main_with_options (argc, argv);
  return D.21816;
}


mono_main_with_options (int argc, char * * argv)
{
  char D.21820;
  int D.21821;
  unsigned int D.21824;
  char * D.21827;
  gchar * D.21828;
  const char * D.21830;
  char D.21831;
  int D.21834;
  struct _IO_FILE * stderr.1;
  gchar * D.21846;
  unsigned int D.21847;
  unsigned int argc.2;
  unsigned int D.21851;
  int D.21852;
  unsigned int D.21853;
  unsigned int D.21854;
  char * D.21855;
  sizetype i.3;
  sizetype D.21857;
  sizetype D.21858;
  char * * D.21859;
  void * * D.21860;
  unsigned int i.4;
  unsigned int D.21862;
  void * * D.21863;
  void * D.21864;
  unsigned int i.5;
  int i.6;
  unsigned int i.7;
  unsigned int D.21868;
  char * * D.21869;
  unsigned int j.8;
  unsigned int D.21871;
  char * * D.21872;
  char * D.21873;
  char * * D.21874;
  int D.21875;
  const char * env_options;

  env_options = monoeg_g_getenv ("MONO_ENV_OPTIONS");
  if (env_options != 0B) goto <D.21818>; else goto <D.21819>;
  <D.21818>:
  {
    struct GPtrArray * array;
    struct GString * buffer;
    const char * p;
    int i;
    gboolean in_quotes;
    char quote_char;

    array = monoeg_g_ptr_array_new ();
    buffer = monoeg_g_string_new ("");
    in_quotes = 0;
    quote_char = 0;
    p = env_options;
    goto <D.21799>;
    <D.21798>:
    D.21820 = *p;
    D.21821 = (int) D.21820;
    switch (D.21821) <default: <D.21797>, case 9: <D.21792>, case 32: <D.21791>, case 34: <D.21796>, case 39: <D.21795>, case 92: <D.21794>>
    <D.21791>:
    <D.21792>:
    if (in_quotes == 0) goto <D.21822>; else goto <D.21823>;
    <D.21822>:
    D.21824 = buffer->len;
    if (D.21824 != 0) goto <D.21825>; else goto <D.21826>;
    <D.21825>:
    D.21827 = buffer->str;
    D.21828 = monoeg_strdup (D.21827);
    monoeg_g_ptr_array_add (array, D.21828);
    monoeg_g_string_truncate (buffer, 0);
    <D.21826>:
    goto <D.21829>;
    <D.21823>:
    D.21820 = *p;
    D.21821 = (int) D.21820;
    monoeg_g_string_append_c (buffer, D.21821);
    <D.21829>:
    goto <D.21793>;
    <D.21794>:
    D.21830 = p + 1;
    D.21831 = *D.21830;
    if (D.21831 != 0) goto <D.21832>; else goto <D.21833>;
    <D.21832>:
    D.21830 = p + 1;
    D.21831 = *D.21830;
    D.21834 = (int) D.21831;
    monoeg_g_string_append_c (buffer, D.21834);
    p = p + 1;
    <D.21833>:
    goto <D.21793>;
    <D.21795>:
    <D.21796>:
    if (in_quotes != 0) goto <D.21835>; else goto <D.21836>;
    <D.21835>:
    D.21820 = *p;
    if (D.21820 == quote_char) goto <D.21837>; else goto <D.21838>;
    <D.21837>:
    in_quotes = 0;
    goto <D.21839>;
    <D.21838>:
    D.21820 = *p;
    D.21821 = (int) D.21820;
    monoeg_g_string_append_c (buffer, D.21821);
    <D.21839>:
    goto <D.21840>;
    <D.21836>:
    in_quotes = 1;
    quote_char = *p;
    <D.21840>:
    goto <D.21793>;
    <D.21797>:
    D.21820 = *p;
    D.21821 = (int) D.21820;
    monoeg_g_string_append_c (buffer, D.21821);
    goto <D.21793>;
    <D.21793>:
    p = p + 1;
    <D.21799>:
    D.21820 = *p;
    if (D.21820 != 0) goto <D.21798>; else goto <D.21800>;
    <D.21800>:
    if (in_quotes != 0) goto <D.21841>; else goto <D.21842>;
    <D.21841>:
    stderr.1 = stderr;
    fprintf (stderr.1, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
    exit (1);
    <D.21842>:
    D.21824 = buffer->len;
    if (D.21824 != 0) goto <D.21844>; else goto <D.21845>;
    <D.21844>:
    D.21827 = buffer->str;
    D.21846 = monoeg_strdup (D.21827);
    monoeg_g_ptr_array_add (array, D.21846);
    <D.21845>:
    monoeg_g_string_free (buffer, 1);
    D.21847 = array->len;
    if (D.21847 != 0) goto <D.21848>; else goto <D.21849>;
    <D.21848>:
    {
      int new_argc;
      char * * new_argv;
      int j;

      D.21847 = array->len;
      argc.2 = (unsigned int) argc;
      D.21851 = D.21847 + argc.2;
      new_argc = (int) D.21851;
      D.21852 = new_argc + 1;
      D.21853 = (unsigned int) D.21852;
      D.21854 = D.21853 * 4;
      new_argv = monoeg_malloc (D.21854);
      D.21855 = *argv;
      *new_argv = D.21855;
      i = 0;
      goto <D.21805>;
      <D.21804>:
      i.3 = (sizetype) i;
      D.21857 = i.3 + 1;
      D.21858 = D.21857 * 4;
      D.21859 = new_argv + D.21858;
      D.21860 = array->pdata;
      i.4 = (unsigned int) i;
      D.21862 = i.4 * 4;
      D.21863 = D.21860 + D.21862;
      D.21864 = *D.21863;
      *D.21859 = D.21864;
      i = i + 1;
      <D.21805>:
      i.5 = (unsigned int) i;
      D.21847 = array->len;
      if (i.5 < D.21847) goto <D.21804>; else goto <D.21806>;
      <D.21806>:
      i = i + 1;
      j = 1;
      goto <D.21808>;
      <D.21807>:
      i.6 = i;
      i = i.6 + 1;
      i.7 = (unsigned int) i.6;
      D.21868 = i.7 * 4;
      D.21869 = new_argv + D.21868;
      j.8 = (unsigned int) j;
      D.21871 = j.8 * 4;
      D.21872 = argv + D.21871;
      D.21873 = *D.21872;
      *D.21869 = D.21873;
      j = j + 1;
      <D.21808>:
      if (j < argc) goto <D.21807>; else goto <D.21809>;
      <D.21809>:
      i.4 = (unsigned int) i;
      D.21862 = i.4 * 4;
      D.21874 = new_argv + D.21862;
      *D.21874 = 0B;
      argc = new_argc;
      argv = new_argv;
    }
    <D.21849>:
    monoeg_g_ptr_array_free (array, 1);
  }
  <D.21819>:
  D.21875 = mono_main (argc, argv);
  return D.21875;
}


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

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


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

  if (str != 0B) goto <D.21879>; else goto <D.21880>;
  <D.21879>:
  D.21881 = __strdup (str);
  return D.21881;
  <D.21880>:
  D.21881 = 0B;
  return D.21881;
}


