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

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


mono_main_with_options (int argc, char * * argv)
{
  char D.22258;
  int D.22259;
  long unsigned int D.22262;
  char * D.22265;
  gchar * D.22266;
  const char * D.22268;
  char D.22269;
  int D.22272;
  struct _IO_FILE * stderr.1;
  gchar * D.22284;
  unsigned int D.22285;
  unsigned int argc.2;
  unsigned int D.22289;
  int D.22290;
  long unsigned int D.22291;
  long unsigned int D.22292;
  char * D.22293;
  sizetype D.22294;
  sizetype D.22295;
  sizetype D.22296;
  char * * D.22297;
  void * * D.22298;
  long unsigned int D.22299;
  long unsigned int D.22300;
  void * * D.22301;
  void * D.22302;
  unsigned int i.3;
  int i.4;
  long unsigned int D.22305;
  long unsigned int D.22306;
  char * * D.22307;
  long unsigned int D.22308;
  long unsigned int D.22309;
  char * * D.22310;
  char * D.22311;
  char * * D.22312;
  int D.22313;
  const char * env_options;

  env_options = monoeg_g_getenv ("MONO_ENV_OPTIONS");
  if (env_options != 0B) goto <D.22256>; else goto <D.22257>;
  <D.22256>:
  {
    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.22237>;
    <D.22236>:
    D.22258 = *p;
    D.22259 = (int) D.22258;
    switch (D.22259) <default: <D.22235>, case 9: <D.22230>, case 32: <D.22229>, case 34: <D.22234>, case 39: <D.22233>, case 92: <D.22232>>
    <D.22229>:
    <D.22230>:
    if (in_quotes == 0) goto <D.22260>; else goto <D.22261>;
    <D.22260>:
    D.22262 = buffer->len;
    if (D.22262 != 0) goto <D.22263>; else goto <D.22264>;
    <D.22263>:
    D.22265 = buffer->str;
    D.22266 = monoeg_strdup (D.22265);
    monoeg_g_ptr_array_add (array, D.22266);
    monoeg_g_string_truncate (buffer, 0);
    <D.22264>:
    goto <D.22267>;
    <D.22261>:
    D.22258 = *p;
    D.22259 = (int) D.22258;
    monoeg_g_string_append_c (buffer, D.22259);
    <D.22267>:
    goto <D.22231>;
    <D.22232>:
    D.22268 = p + 1;
    D.22269 = *D.22268;
    if (D.22269 != 0) goto <D.22270>; else goto <D.22271>;
    <D.22270>:
    D.22268 = p + 1;
    D.22269 = *D.22268;
    D.22272 = (int) D.22269;
    monoeg_g_string_append_c (buffer, D.22272);
    p = p + 1;
    <D.22271>:
    goto <D.22231>;
    <D.22233>:
    <D.22234>:
    if (in_quotes != 0) goto <D.22273>; else goto <D.22274>;
    <D.22273>:
    D.22258 = *p;
    if (D.22258 == quote_char) goto <D.22275>; else goto <D.22276>;
    <D.22275>:
    in_quotes = 0;
    goto <D.22277>;
    <D.22276>:
    D.22258 = *p;
    D.22259 = (int) D.22258;
    monoeg_g_string_append_c (buffer, D.22259);
    <D.22277>:
    goto <D.22278>;
    <D.22274>:
    in_quotes = 1;
    quote_char = *p;
    <D.22278>:
    goto <D.22231>;
    <D.22235>:
    D.22258 = *p;
    D.22259 = (int) D.22258;
    monoeg_g_string_append_c (buffer, D.22259);
    goto <D.22231>;
    <D.22231>:
    p = p + 1;
    <D.22237>:
    D.22258 = *p;
    if (D.22258 != 0) goto <D.22236>; else goto <D.22238>;
    <D.22238>:
    if (in_quotes != 0) goto <D.22279>; else goto <D.22280>;
    <D.22279>:
    stderr.1 = stderr;
    fprintf (stderr.1, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
    exit (1);
    <D.22280>:
    D.22262 = buffer->len;
    if (D.22262 != 0) goto <D.22282>; else goto <D.22283>;
    <D.22282>:
    D.22265 = buffer->str;
    D.22284 = monoeg_strdup (D.22265);
    monoeg_g_ptr_array_add (array, D.22284);
    <D.22283>:
    monoeg_g_string_free (buffer, 1);
    D.22285 = array->len;
    if (D.22285 != 0) goto <D.22286>; else goto <D.22287>;
    <D.22286>:
    {
      int new_argc;
      char * * new_argv;
      int j;

      D.22285 = array->len;
      argc.2 = (unsigned int) argc;
      D.22289 = D.22285 + argc.2;
      new_argc = (int) D.22289;
      D.22290 = new_argc + 1;
      D.22291 = (long unsigned int) D.22290;
      D.22292 = D.22291 * 8;
      new_argv = monoeg_malloc (D.22292);
      D.22293 = *argv;
      *new_argv = D.22293;
      i = 0;
      goto <D.22243>;
      <D.22242>:
      D.22294 = (sizetype) i;
      D.22295 = D.22294 + 1;
      D.22296 = D.22295 * 8;
      D.22297 = new_argv + D.22296;
      D.22298 = array->pdata;
      D.22299 = (long unsigned int) i;
      D.22300 = D.22299 * 8;
      D.22301 = D.22298 + D.22300;
      D.22302 = *D.22301;
      *D.22297 = D.22302;
      i = i + 1;
      <D.22243>:
      i.3 = (unsigned int) i;
      D.22285 = array->len;
      if (i.3 < D.22285) goto <D.22242>; else goto <D.22244>;
      <D.22244>:
      i = i + 1;
      j = 1;
      goto <D.22246>;
      <D.22245>:
      i.4 = i;
      i = i.4 + 1;
      D.22305 = (long unsigned int) i.4;
      D.22306 = D.22305 * 8;
      D.22307 = new_argv + D.22306;
      D.22308 = (long unsigned int) j;
      D.22309 = D.22308 * 8;
      D.22310 = argv + D.22309;
      D.22311 = *D.22310;
      *D.22307 = D.22311;
      j = j + 1;
      <D.22246>:
      if (j < argc) goto <D.22245>; else goto <D.22247>;
      <D.22247>:
      D.22299 = (long unsigned int) i;
      D.22300 = D.22299 * 8;
      D.22312 = new_argv + D.22300;
      *D.22312 = 0B;
      argc = new_argc;
      argv = new_argv;
    }
    <D.22287>:
    monoeg_g_ptr_array_free (array, 1);
  }
  <D.22257>:
  D.22313 = mono_main (argc, argv);
  return D.22313;
}


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

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


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

  if (str != 0B) goto <D.22317>; else goto <D.22318>;
  <D.22317>:
  D.22319 = __strdup (str);
  return D.22319;
  <D.22318>:
  D.22319 = 0B;
  return D.22319;
}


