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

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


mono_main_with_options (int argc, char * * argv)
{
  char D.21499;
  int D.21500;
  unsigned int D.21503;
  char * D.21506;
  gchar * D.21507;
  const char * D.21509;
  char D.21510;
  int D.21513;
  struct _IO_FILE * stderr.1;
  gchar * D.21525;
  unsigned int D.21526;
  unsigned int argc.2;
  unsigned int D.21530;
  int D.21531;
  unsigned int D.21532;
  unsigned int D.21533;
  char * D.21534;
  sizetype i.3;
  sizetype D.21536;
  sizetype D.21537;
  char * * D.21538;
  void * * D.21539;
  unsigned int i.4;
  unsigned int D.21541;
  void * * D.21542;
  void * D.21543;
  unsigned int i.5;
  int i.6;
  unsigned int i.7;
  unsigned int D.21547;
  char * * D.21548;
  unsigned int j.8;
  unsigned int D.21550;
  char * * D.21551;
  char * D.21552;
  char * * D.21553;
  int D.21554;
  const char * env_options;

  env_options = monoeg_g_getenv ("MONO_ENV_OPTIONS");
  if (env_options != 0B) goto <D.21497>; else goto <D.21498>;
  <D.21497>:
  {
    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.21478>;
    <D.21477>:
    D.21499 = *p;
    D.21500 = (int) D.21499;
    switch (D.21500) <default: <D.21476>, case 9: <D.21471>, case 32: <D.21470>, case 34: <D.21475>, case 39: <D.21474>, case 92: <D.21473>>
    <D.21470>:
    <D.21471>:
    if (in_quotes == 0) goto <D.21501>; else goto <D.21502>;
    <D.21501>:
    D.21503 = buffer->len;
    if (D.21503 != 0) goto <D.21504>; else goto <D.21505>;
    <D.21504>:
    D.21506 = buffer->str;
    D.21507 = monoeg_strdup (D.21506);
    monoeg_g_ptr_array_add (array, D.21507);
    monoeg_g_string_truncate (buffer, 0);
    <D.21505>:
    goto <D.21508>;
    <D.21502>:
    D.21499 = *p;
    D.21500 = (int) D.21499;
    monoeg_g_string_append_c (buffer, D.21500);
    <D.21508>:
    goto <D.21472>;
    <D.21473>:
    D.21509 = p + 1;
    D.21510 = *D.21509;
    if (D.21510 != 0) goto <D.21511>; else goto <D.21512>;
    <D.21511>:
    D.21509 = p + 1;
    D.21510 = *D.21509;
    D.21513 = (int) D.21510;
    monoeg_g_string_append_c (buffer, D.21513);
    p = p + 1;
    <D.21512>:
    goto <D.21472>;
    <D.21474>:
    <D.21475>:
    if (in_quotes != 0) goto <D.21514>; else goto <D.21515>;
    <D.21514>:
    D.21499 = *p;
    if (D.21499 == quote_char) goto <D.21516>; else goto <D.21517>;
    <D.21516>:
    in_quotes = 0;
    goto <D.21518>;
    <D.21517>:
    D.21499 = *p;
    D.21500 = (int) D.21499;
    monoeg_g_string_append_c (buffer, D.21500);
    <D.21518>:
    goto <D.21519>;
    <D.21515>:
    in_quotes = 1;
    quote_char = *p;
    <D.21519>:
    goto <D.21472>;
    <D.21476>:
    D.21499 = *p;
    D.21500 = (int) D.21499;
    monoeg_g_string_append_c (buffer, D.21500);
    goto <D.21472>;
    <D.21472>:
    p = p + 1;
    <D.21478>:
    D.21499 = *p;
    if (D.21499 != 0) goto <D.21477>; else goto <D.21479>;
    <D.21479>:
    if (in_quotes != 0) goto <D.21520>; else goto <D.21521>;
    <D.21520>:
    stderr.1 = stderr;
    fprintf (stderr.1, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
    exit (1);
    <D.21521>:
    D.21503 = buffer->len;
    if (D.21503 != 0) goto <D.21523>; else goto <D.21524>;
    <D.21523>:
    D.21506 = buffer->str;
    D.21525 = monoeg_strdup (D.21506);
    monoeg_g_ptr_array_add (array, D.21525);
    <D.21524>:
    monoeg_g_string_free (buffer, 1);
    D.21526 = array->len;
    if (D.21526 != 0) goto <D.21527>; else goto <D.21528>;
    <D.21527>:
    {
      int new_argc;
      char * * new_argv;
      int j;

      D.21526 = array->len;
      argc.2 = (unsigned int) argc;
      D.21530 = D.21526 + argc.2;
      new_argc = (int) D.21530;
      D.21531 = new_argc + 1;
      D.21532 = (unsigned int) D.21531;
      D.21533 = D.21532 * 4;
      new_argv = monoeg_malloc (D.21533);
      D.21534 = *argv;
      *new_argv = D.21534;
      i = 0;
      goto <D.21484>;
      <D.21483>:
      i.3 = (sizetype) i;
      D.21536 = i.3 + 1;
      D.21537 = D.21536 * 4;
      D.21538 = new_argv + D.21537;
      D.21539 = array->pdata;
      i.4 = (unsigned int) i;
      D.21541 = i.4 * 4;
      D.21542 = D.21539 + D.21541;
      D.21543 = *D.21542;
      *D.21538 = D.21543;
      i = i + 1;
      <D.21484>:
      i.5 = (unsigned int) i;
      D.21526 = array->len;
      if (i.5 < D.21526) goto <D.21483>; else goto <D.21485>;
      <D.21485>:
      i = i + 1;
      j = 1;
      goto <D.21487>;
      <D.21486>:
      i.6 = i;
      i = i.6 + 1;
      i.7 = (unsigned int) i.6;
      D.21547 = i.7 * 4;
      D.21548 = new_argv + D.21547;
      j.8 = (unsigned int) j;
      D.21550 = j.8 * 4;
      D.21551 = argv + D.21550;
      D.21552 = *D.21551;
      *D.21548 = D.21552;
      j = j + 1;
      <D.21487>:
      if (j < argc) goto <D.21486>; else goto <D.21488>;
      <D.21488>:
      i.4 = (unsigned int) i;
      D.21541 = i.4 * 4;
      D.21553 = new_argv + D.21541;
      *D.21553 = 0B;
      argc = new_argc;
      argv = new_argv;
    }
    <D.21528>:
    monoeg_g_ptr_array_free (array, 1);
  }
  <D.21498>:
  D.21554 = mono_main (argc, argv);
  return D.21554;
}


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

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


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

  if (str != 0B) goto <D.21558>; else goto <D.21559>;
  <D.21558>:
  D.21560 = __strdup (str);
  return D.21560;
  <D.21559>:
  D.21560 = 0B;
  return D.21560;
}


