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

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


mono_main_with_options (int argc, char * * argv)
{
  char D.24334;
  int D.24335;
  unsigned int D.24338;
  char * D.24341;
  gchar * D.24342;
  const char * D.24344;
  char D.24345;
  struct _IO_FILE * stderr.1;
  gchar * D.24359;
  unsigned int D.24360;
  unsigned int argc.2;
  unsigned int D.24364;
  int D.24365;
  unsigned int D.24366;
  unsigned int D.24367;
  char * D.24368;
  sizetype i.3;
  sizetype D.24370;
  sizetype D.24371;
  char * * D.24372;
  void * * D.24373;
  unsigned int i.4;
  unsigned int D.24375;
  void * * D.24376;
  void * D.24377;
  unsigned int i.5;
  int i.6;
  unsigned int i.7;
  unsigned int D.24381;
  char * * D.24382;
  unsigned int j.8;
  unsigned int D.24384;
  char * * D.24385;
  char * D.24386;
  char * * D.24387;
  int D.24388;
  const char * env_options;

  env_options = monoeg_g_getenv ("MONO_ENV_OPTIONS");
  if (env_options != 0B) goto <D.24332>; else goto <D.24333>;
  <D.24332>:
  {
    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.24311>;
    <D.24310>:
    D.24334 = *p;
    D.24335 = (int) D.24334;
    switch (D.24335) <default: <D.24309>, case 9: <D.24304>, case 32: <D.24303>, case 34: <D.24308>, case 39: <D.24307>, case 92: <D.24306>>
    <D.24303>:
    <D.24304>:
    if (in_quotes == 0) goto <D.24336>; else goto <D.24337>;
    <D.24336>:
    D.24338 = buffer->len;
    if (D.24338 != 0) goto <D.24339>; else goto <D.24340>;
    <D.24339>:
    D.24341 = buffer->str;
    D.24342 = monoeg_strdup (D.24341);
    monoeg_g_ptr_array_add (array, D.24342);
    monoeg_g_string_truncate (buffer, 0);
    <D.24340>:
    goto <D.24343>;
    <D.24337>:
    D.24334 = *p;
    monoeg_g_string_append_c (buffer, D.24334);
    <D.24343>:
    goto <D.24305>;
    <D.24306>:
    D.24344 = p + 1;
    D.24345 = *D.24344;
    if (D.24345 != 0) goto <D.24346>; else goto <D.24347>;
    <D.24346>:
    D.24344 = p + 1;
    D.24345 = *D.24344;
    monoeg_g_string_append_c (buffer, D.24345);
    p = p + 1;
    <D.24347>:
    goto <D.24305>;
    <D.24307>:
    <D.24308>:
    if (in_quotes != 0) goto <D.24348>; else goto <D.24349>;
    <D.24348>:
    D.24334 = *p;
    if (D.24334 == quote_char) goto <D.24350>; else goto <D.24351>;
    <D.24350>:
    in_quotes = 0;
    goto <D.24352>;
    <D.24351>:
    D.24334 = *p;
    monoeg_g_string_append_c (buffer, D.24334);
    <D.24352>:
    goto <D.24353>;
    <D.24349>:
    in_quotes = 1;
    quote_char = *p;
    <D.24353>:
    goto <D.24305>;
    <D.24309>:
    D.24334 = *p;
    monoeg_g_string_append_c (buffer, D.24334);
    goto <D.24305>;
    <D.24305>:
    p = p + 1;
    <D.24311>:
    D.24334 = *p;
    if (D.24334 != 0) goto <D.24310>; else goto <D.24312>;
    <D.24312>:
    if (in_quotes != 0) goto <D.24354>; else goto <D.24355>;
    <D.24354>:
    stderr.1 = stderr;
    fprintf (stderr.1, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
    exit (1);
    <D.24355>:
    D.24338 = buffer->len;
    if (D.24338 != 0) goto <D.24357>; else goto <D.24358>;
    <D.24357>:
    D.24341 = buffer->str;
    D.24359 = monoeg_strdup (D.24341);
    monoeg_g_ptr_array_add (array, D.24359);
    <D.24358>:
    monoeg_g_string_free (buffer, 1);
    D.24360 = array->len;
    if (D.24360 != 0) goto <D.24361>; else goto <D.24362>;
    <D.24361>:
    {
      int new_argc;
      char * * new_argv;
      int j;

      D.24360 = array->len;
      argc.2 = (unsigned int) argc;
      D.24364 = D.24360 + argc.2;
      new_argc = (int) D.24364;
      D.24365 = new_argc + 1;
      D.24366 = (unsigned int) D.24365;
      D.24367 = D.24366 * 4;
      new_argv = monoeg_malloc (D.24367);
      D.24368 = *argv;
      *new_argv = D.24368;
      i = 0;
      goto <D.24317>;
      <D.24316>:
      i.3 = (sizetype) i;
      D.24370 = i.3 + 1;
      D.24371 = D.24370 * 4;
      D.24372 = new_argv + D.24371;
      D.24373 = array->pdata;
      i.4 = (unsigned int) i;
      D.24375 = i.4 * 4;
      D.24376 = D.24373 + D.24375;
      D.24377 = *D.24376;
      *D.24372 = D.24377;
      i = i + 1;
      <D.24317>:
      i.5 = (unsigned int) i;
      D.24360 = array->len;
      if (i.5 < D.24360) goto <D.24316>; else goto <D.24318>;
      <D.24318>:
      i = i + 1;
      j = 1;
      goto <D.24320>;
      <D.24319>:
      i.6 = i;
      i = i.6 + 1;
      i.7 = (unsigned int) i.6;
      D.24381 = i.7 * 4;
      D.24382 = new_argv + D.24381;
      j.8 = (unsigned int) j;
      D.24384 = j.8 * 4;
      D.24385 = argv + D.24384;
      D.24386 = *D.24385;
      *D.24382 = D.24386;
      j = j + 1;
      <D.24320>:
      if (j < argc) goto <D.24319>; else goto <D.24321>;
      <D.24321>:
      i.4 = (unsigned int) i;
      D.24375 = i.4 * 4;
      D.24387 = new_argv + D.24375;
      *D.24387 = 0B;
      argc = new_argc;
      argv = new_argv;
    }
    <D.24362>:
    monoeg_g_ptr_array_free (array, 1);
  }
  <D.24333>:
  D.24388 = mono_main (argc, argv);
  return D.24388;
}


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

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


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

  if (str != 0B) goto <D.24392>; else goto <D.24393>;
  <D.24392>:
  D.24394 = __strdup (str);
  return D.24394;
  <D.24393>:
  D.24394 = 0B;
  return D.24394;
}


