monoeg_g_build_path (const gchar * separator, const gchar * first_element)
{
  gchar * D.6008;
  long unsigned int D.6009;
  sizetype D.6010;
  const char * D.6011;
  int D.6012;
  const char * D.6014;
  long int endptr.0;
  long int elem.1;
  long int D.6019;
  int D.6021;
  char D.6022;
  long int slen.2;
  const char * elem;
  const char * next;
  const char * endptr;
  gboolean trimmed;
  struct GString * path;
  struct  args[1];
  size_t slen;

  try
    {
      if (separator == 0B) goto <D.6006>; else goto <D.6007>;
      <D.6006>:
      monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gpath.c", 50, "separator != NULL");
      D.6008 = 0B;
      return D.6008;
      <D.6007>:
      path = monoeg_g_string_sized_new (48);
      slen = strlen (separator);
      __builtin_va_start (&args, 0);
      elem = first_element;
      goto <D.5969>;
      <D.5968>:
      D.6009 = strlen (elem);
      endptr = elem + D.6009;
      trimmed = 0;
      goto <D.5953>;
      <D.5952>:
      D.6010 = -slen;
      D.6011 = endptr + D.6010;
      D.6012 = strncmp (D.6011, separator, slen);
      if (D.6012 != 0) goto <D.5951>; else goto <D.6013>;
      <D.6013>:
      D.6010 = -slen;
      endptr = endptr + D.6010;
      trimmed = 1;
      <D.5953>:
      D.6014 = elem + slen;
      if (D.6014 <= endptr) goto <D.5952>; else goto <D.5951>;
      <D.5951>:
      if (endptr > elem) goto <D.6015>; else goto <D.6016>;
      <D.6015>:
      endptr.0 = (long int) endptr;
      elem.1 = (long int) elem;
      D.6019 = endptr.0 - elem.1;
      monoeg_g_string_append_len (path, elem, D.6019);
      <D.6016>:
      <D.5967>:
      next = VA_ARG (&args, 0B, 0B);
      if (next == 0B) goto <D.5954>; else goto <D.6020>;
      <D.6020>:
      goto <D.5965>;
      <D.5964>:
      next = next + slen;
      <D.5965>:
      D.6021 = strncmp (next, separator, slen);
      if (D.6021 == 0) goto <D.5964>; else goto <D.5966>;
      <D.5966>:
      D.6022 = *next;
      if (D.6022 == 0) goto <D.5967>; else goto <D.5954>;
      <D.5954>:
      if (next != 0B) goto <D.6023>; else goto <D.6025>;
      <D.6025>:
      if (trimmed != 0) goto <D.6023>; else goto <D.6024>;
      <D.6023>:
      slen.2 = (long int) slen;
      monoeg_g_string_append_len (path, separator, slen.2);
      <D.6024>:
      elem = next;
      <D.5969>:
      if (elem != 0B) goto <D.5968>; else goto <D.5970>;
      <D.5970>:
      __builtin_va_end (&args);
      D.6008 = monoeg_g_string_free (path, 0);
      return D.6008;
    }
  finally
    {
      args = {CLOBBER};
    }
}


monoeg_g_path_get_dirname (const gchar * filename)
{
  gchar * D.6031;
  long int p.3;
  long int filename.4;
  long int D.6038;
  long unsigned int D.6039;
  char * D.6040;
  char * p;
  char * r;
  size_t count;

  if (filename == 0B) goto <D.6029>; else goto <D.6030>;
  <D.6029>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gpath.c", 114, "filename != NULL");
  D.6031 = 0B;
  return D.6031;
  <D.6030>:
  p = strrchr_seperator (filename);
  if (p == 0B) goto <D.6032>; else goto <D.6033>;
  <D.6032>:
  D.6031 = monoeg_strdup (".");
  return D.6031;
  <D.6033>:
  if (p == filename) goto <D.6034>; else goto <D.6035>;
  <D.6034>:
  D.6031 = monoeg_strdup ("/");
  return D.6031;
  <D.6035>:
  p.3 = (long int) p;
  filename.4 = (long int) filename;
  D.6038 = p.3 - filename.4;
  count = (size_t) D.6038;
  D.6039 = count + 1;
  r = monoeg_malloc (D.6039);
  strncpy (r, filename, count);
  D.6040 = r + count;
  *D.6040 = 0;
  D.6031 = r;
  return D.6031;
}


strrchr_seperator (const gchar * filename)
{
  gchar * D.6042;
  char * p;

  p = strrchr (filename, 47);
  D.6042 = p;
  return D.6042;
}


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

  if (str != 0B) goto <D.6044>; else goto <D.6045>;
  <D.6044>:
  D.6046 = __strdup (str);
  return D.6046;
  <D.6045>:
  D.6046 = 0B;
  return D.6046;
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
strncpy (char * restrict __dest, const char * restrict __src, size_t __len)
{
  char * D.6048;
  long unsigned int D.6049;

  D.6049 = __builtin_object_size (__dest, 1);
  D.6048 = __builtin___strncpy_chk (__dest, __src, __len, D.6049);
  return D.6048;
}


monoeg_g_path_get_basename (const char * filename)
{
  gchar * D.6053;
  char D.6054;
  char * D.6059;
  char D.6060;
  long int r.5;
  long int filename.6;
  long int D.6065;
  sizetype D.6066;
  char * D.6067;
  char * r;

  if (filename == 0B) goto <D.6051>; else goto <D.6052>;
  <D.6051>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gpath.c", 133, "filename != NULL");
  D.6053 = 0B;
  return D.6053;
  <D.6052>:
  D.6054 = *filename;
  if (D.6054 == 0) goto <D.6055>; else goto <D.6056>;
  <D.6055>:
  D.6053 = monoeg_strdup (".");
  return D.6053;
  <D.6056>:
  r = strrchr_seperator (filename);
  if (r == 0B) goto <D.6057>; else goto <D.6058>;
  <D.6057>:
  D.6053 = monoeg_strdup (filename);
  return D.6053;
  <D.6058>:
  D.6059 = r + 1;
  D.6060 = *D.6059;
  if (D.6060 == 0) goto <D.6061>; else goto <D.6062>;
  <D.6061>:
  {
    char * copy;

    copy = monoeg_strdup (filename);
    r.5 = (long int) r;
    filename.6 = (long int) filename;
    D.6065 = r.5 - filename.6;
    D.6066 = (sizetype) D.6065;
    D.6067 = copy + D.6066;
    *D.6067 = 0;
    r = strrchr_seperator (copy);
    if (r == 0B) goto <D.6068>; else goto <D.6069>;
    <D.6068>:
    monoeg_g_free (copy);
    D.6053 = monoeg_strdup ("/");
    return D.6053;
    <D.6069>:
    D.6059 = r + 1;
    r = monoeg_strdup (D.6059);
    monoeg_g_free (copy);
    D.6053 = r;
    return D.6053;
  }
  <D.6062>:
  D.6059 = r + 1;
  D.6053 = monoeg_strdup (D.6059);
  return D.6053;
}


monoeg_g_find_program_in_path (const gchar * program)
{
  const gchar * D.6071;
  gchar * D.6074;
  char D.6078;
  int D.6079;
  char * p;
  char * x;
  char * l;
  gchar * curdir;
  char * save;

  try
    {
      D.6071 = monoeg_g_getenv ("PATH");
      p = monoeg_strdup (D.6071);
      x = p;
      curdir = 0B;
      save = 0B;
      if (program == 0B) goto <D.6072>; else goto <D.6073>;
      <D.6072>:
      monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gpath.c", 230, "program != NULL");
      D.6074 = 0B;
      return D.6074;
      <D.6073>:
      if (x == 0B) goto <D.6075>; else goto <D.6077>;
      <D.6077>:
      D.6078 = *x;
      if (D.6078 == 0) goto <D.6075>; else goto <D.6076>;
      <D.6075>:
      curdir = monoeg_g_get_current_dir ();
      x = curdir;
      <D.6076>:
      goto <D.5996>;
      <D.5995>:
      {
        char * probe_path;

        x = 0B;
        probe_path = monoeg_g_build_path ("/", l, program, 0B);
        D.6079 = access (probe_path, 1);
        if (D.6079 == 0) goto <D.6080>; else goto <D.6081>;
        <D.6080>:
        monoeg_g_free (curdir);
        monoeg_g_free (p);
        D.6074 = probe_path;
        return D.6074;
        <D.6081>:
        monoeg_g_free (probe_path);
      }
      <D.5996>:
      l = strtok_r (x, ":", &save);
      if (l != 0B) goto <D.5995>; else goto <D.5997>;
      <D.5997>:
      monoeg_g_free (curdir);
      monoeg_g_free (p);
      D.6074 = 0B;
      return D.6074;
    }
  finally
    {
      save = {CLOBBER};
    }
}


monoeg_g_set_prgname (const gchar * prgname)
{
  gchar * D.6084;

  D.6084 = monoeg_strdup (prgname);
  name = D.6084;
}


monoeg_g_get_prgname ()
{
  gchar * D.6085;

  D.6085 = name;
  return D.6085;
}


