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

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


mono_main_with_options (int argc, char * * argv)
{
  char D.22348;
  int D.22349;
  long unsigned int D.22352;
  char * D.22355;
  gchar * D.22356;
  const char * D.22358;
  char D.22359;
  struct _IO_FILE * stderr.1;
  gchar * D.22373;
  unsigned int D.22374;
  unsigned int argc.2;
  unsigned int D.22378;
  int D.22379;
  long unsigned int D.22380;
  long unsigned int D.22381;
  char * D.22382;
  sizetype D.22383;
  sizetype D.22384;
  sizetype D.22385;
  char * * D.22386;
  void * * D.22387;
  long unsigned int D.22388;
  long unsigned int D.22389;
  void * * D.22390;
  void * D.22391;
  unsigned int i.3;
  int i.4;
  long unsigned int D.22394;
  long unsigned int D.22395;
  char * * D.22396;
  long unsigned int D.22397;
  long unsigned int D.22398;
  char * * D.22399;
  char * D.22400;
  char * * D.22401;
  int D.22402;
  const char * env_options;

  env_options = monoeg_g_getenv ("MONO_ENV_OPTIONS");
  if (env_options != 0B) goto <D.22346>; else goto <D.22347>;
  <D.22346>:
  {
    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.22327>;
    <D.22326>:
    D.22348 = *p;
    D.22349 = (int) D.22348;
    switch (D.22349) <default: <D.22325>, case 9: <D.22320>, case 32: <D.22319>, case 34: <D.22324>, case 39: <D.22323>, case 92: <D.22322>>
    <D.22319>:
    <D.22320>:
    if (in_quotes == 0) goto <D.22350>; else goto <D.22351>;
    <D.22350>:
    D.22352 = buffer->len;
    if (D.22352 != 0) goto <D.22353>; else goto <D.22354>;
    <D.22353>:
    D.22355 = buffer->str;
    D.22356 = monoeg_strdup (D.22355);
    monoeg_g_ptr_array_add (array, D.22356);
    monoeg_g_string_truncate (buffer, 0);
    <D.22354>:
    goto <D.22357>;
    <D.22351>:
    D.22348 = *p;
    monoeg_g_string_append_c (buffer, D.22348);
    <D.22357>:
    goto <D.22321>;
    <D.22322>:
    D.22358 = p + 1;
    D.22359 = *D.22358;
    if (D.22359 != 0) goto <D.22360>; else goto <D.22361>;
    <D.22360>:
    D.22358 = p + 1;
    D.22359 = *D.22358;
    monoeg_g_string_append_c (buffer, D.22359);
    p = p + 1;
    <D.22361>:
    goto <D.22321>;
    <D.22323>:
    <D.22324>:
    if (in_quotes != 0) goto <D.22362>; else goto <D.22363>;
    <D.22362>:
    D.22348 = *p;
    if (D.22348 == quote_char) goto <D.22364>; else goto <D.22365>;
    <D.22364>:
    in_quotes = 0;
    goto <D.22366>;
    <D.22365>:
    D.22348 = *p;
    monoeg_g_string_append_c (buffer, D.22348);
    <D.22366>:
    goto <D.22367>;
    <D.22363>:
    in_quotes = 1;
    quote_char = *p;
    <D.22367>:
    goto <D.22321>;
    <D.22325>:
    D.22348 = *p;
    monoeg_g_string_append_c (buffer, D.22348);
    goto <D.22321>;
    <D.22321>:
    p = p + 1;
    <D.22327>:
    D.22348 = *p;
    if (D.22348 != 0) goto <D.22326>; else goto <D.22328>;
    <D.22328>:
    if (in_quotes != 0) goto <D.22368>; else goto <D.22369>;
    <D.22368>:
    stderr.1 = stderr;
    fprintf (stderr.1, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
    exit (1);
    <D.22369>:
    D.22352 = buffer->len;
    if (D.22352 != 0) goto <D.22371>; else goto <D.22372>;
    <D.22371>:
    D.22355 = buffer->str;
    D.22373 = monoeg_strdup (D.22355);
    monoeg_g_ptr_array_add (array, D.22373);
    <D.22372>:
    monoeg_g_string_free (buffer, 1);
    D.22374 = array->len;
    if (D.22374 != 0) goto <D.22375>; else goto <D.22376>;
    <D.22375>:
    {
      int new_argc;
      char * * new_argv;
      int j;

      D.22374 = array->len;
      argc.2 = (unsigned int) argc;
      D.22378 = D.22374 + argc.2;
      new_argc = (int) D.22378;
      D.22379 = new_argc + 1;
      D.22380 = (long unsigned int) D.22379;
      D.22381 = D.22380 * 8;
      new_argv = monoeg_malloc (D.22381);
      D.22382 = *argv;
      *new_argv = D.22382;
      i = 0;
      goto <D.22333>;
      <D.22332>:
      D.22383 = (sizetype) i;
      D.22384 = D.22383 + 1;
      D.22385 = D.22384 * 8;
      D.22386 = new_argv + D.22385;
      D.22387 = array->pdata;
      D.22388 = (long unsigned int) i;
      D.22389 = D.22388 * 8;
      D.22390 = D.22387 + D.22389;
      D.22391 = *D.22390;
      *D.22386 = D.22391;
      i = i + 1;
      <D.22333>:
      i.3 = (unsigned int) i;
      D.22374 = array->len;
      if (i.3 < D.22374) goto <D.22332>; else goto <D.22334>;
      <D.22334>:
      i = i + 1;
      j = 1;
      goto <D.22336>;
      <D.22335>:
      i.4 = i;
      i = i.4 + 1;
      D.22394 = (long unsigned int) i.4;
      D.22395 = D.22394 * 8;
      D.22396 = new_argv + D.22395;
      D.22397 = (long unsigned int) j;
      D.22398 = D.22397 * 8;
      D.22399 = argv + D.22398;
      D.22400 = *D.22399;
      *D.22396 = D.22400;
      j = j + 1;
      <D.22336>:
      if (j < argc) goto <D.22335>; else goto <D.22337>;
      <D.22337>:
      D.22388 = (long unsigned int) i;
      D.22389 = D.22388 * 8;
      D.22401 = new_argv + D.22389;
      *D.22401 = 0B;
      argc = new_argc;
      argv = new_argv;
    }
    <D.22376>:
    monoeg_g_ptr_array_free (array, 1);
  }
  <D.22347>:
  D.22402 = mono_main (argc, argv);
  return D.22402;
}


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

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


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

  if (str != 0B) goto <D.22406>; else goto <D.22407>;
  <D.22406>:
  D.22408 = __strdup (str);
  return D.22408;
  <D.22407>:
  D.22408 = 0B;
  return D.22408;
}


