monoeg_g_dir_open (const gchar * path, guint flags, struct GError * * error)
{
  struct GDir * D.5843;
  struct GError * D.5846;
  struct DIR * D.5849;
  struct DIR * D.5850;
  int * D.5855;
  char * D.5856;
  <unnamed type> D.5857;
  int D.5858;
  struct GError * D.5859;
  gchar * D.5860;
  struct GDir * dir;

  if (path == 0B) goto <D.5841>; else goto <D.5842>;
  <D.5841>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 49, "path != NULL");
  D.5843 = 0B;
  return D.5843;
  <D.5842>:
  if (error != 0B) goto <D.5844>; else goto <D.5845>;
  <D.5844>:
  D.5846 = *error;
  if (D.5846 != 0B) goto <D.5847>; else goto <D.5848>;
  <D.5847>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 50, "error == NULL || *error == NULL");
  D.5843 = 0B;
  return D.5843;
  <D.5848>:
  <D.5845>:
  dir = monoeg_malloc (8);
  D.5849 = opendir (path);
  dir->dir = D.5849;
  D.5850 = dir->dir;
  if (D.5850 == 0B) goto <D.5851>; else goto <D.5852>;
  <D.5851>:
  if (error != 0B) goto <D.5853>; else goto <D.5854>;
  <D.5853>:
  {
    gint err;

    D.5855 = __errno_location ();
    err = *D.5855;
    D.5856 = strerror (err);
    D.5857 = monoeg_g_file_error_from_errno (err);
    D.5858 = (int) D.5857;
    D.5859 = monoeg_g_error_new (0B, D.5858, D.5856);
    *error = D.5859;
  }
  <D.5854>:
  monoeg_g_free (dir);
  D.5843 = 0B;
  return D.5843;
  <D.5852>:
  D.5860 = monoeg_strdup (path);
  dir->path = D.5860;
  D.5843 = dir;
  return D.5843;
}


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

  if (str != 0B) goto <D.5862>; else goto <D.5863>;
  <D.5862>:
  D.5864 = __strdup (str);
  return D.5864;
  <D.5863>:
  D.5864 = 0B;
  return D.5864;
}


monoeg_g_dir_read_name (struct GDir * dir)
{
  struct DIR * D.5869;
  const gchar * D.5870;
  int D.5809;
  int iftmp.0;
  int D.5808;
  char[2] * D.5876;
  unsigned char D.5877;
  int D.5878;
  unsigned char D.5879;
  int D.5880;
  _Bool D.5881;
  _Bool D.5882;
  _Bool D.5883;
  const unsigned char * D.5886;
  unsigned char D.5887;
  int D.5888;
  const unsigned char * D.5889;
  unsigned char D.5890;
  int D.5891;
  _Bool D.5892;
  _Bool D.5893;
  const unsigned char * D.5896;
  unsigned char D.5897;
  int D.5898;
  const unsigned char * D.5899;
  unsigned char D.5900;
  int D.5901;
  _Bool D.5902;
  _Bool D.5903;
  const unsigned char * D.5906;
  unsigned char D.5907;
  int D.5908;
  const unsigned char * D.5909;
  unsigned char D.5910;
  int D.5911;
  char[256] * D.5913;
  int D.5818;
  int iftmp.1;
  int D.5817;
  char[3] * D.5918;
  unsigned char D.5919;
  int D.5920;
  unsigned char D.5921;
  int D.5922;
  _Bool D.5923;
  _Bool D.5924;
  _Bool D.5925;
  const unsigned char * D.5928;
  unsigned char D.5929;
  int D.5930;
  const unsigned char * D.5931;
  unsigned char D.5932;
  int D.5933;
  _Bool D.5934;
  _Bool D.5935;
  const unsigned char * D.5938;
  unsigned char D.5939;
  int D.5940;
  const unsigned char * D.5941;
  unsigned char D.5942;
  int D.5943;
  _Bool D.5944;
  _Bool D.5945;
  const unsigned char * D.5948;
  unsigned char D.5949;
  int D.5950;
  const unsigned char * D.5951;
  unsigned char D.5952;
  int D.5953;
  struct dirent * entry;

  if (dir == 0B) goto <D.5866>; else goto <D.5868>;
  <D.5868>:
  D.5869 = dir->dir;
  if (D.5869 == 0B) goto <D.5866>; else goto <D.5867>;
  <D.5866>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 74, "dir != NULL && dir->dir != NULL");
  D.5870 = 0B;
  return D.5870;
  <D.5867>:
  <D.5819>:
  D.5869 = dir->dir;
  entry = readdir (D.5869);
  if (entry == 0B) goto <D.5871>; else goto <D.5872>;
  <D.5871>:
  D.5870 = 0B;
  return D.5870;
  <D.5872>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 1;
    if (__s2_len <= 3) goto <D.5874>; else goto <D.5875>;
    <D.5874>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = &entry->d_name;
      D.5876 = ".";
      D.5877 = MEM[(const unsigned char *)D.5876];
      D.5878 = (int) D.5877;
      D.5879 = *__s2;
      D.5880 = (int) D.5879;
      __result = D.5878 - D.5880;
      {
        D.5881 = __s2_len != 0;
        D.5882 = __result == 0;
        D.5883 = D.5881 & D.5882;
        if (D.5883 != 0) goto <D.5884>; else goto <D.5885>;
        <D.5884>:
        D.5886 = &MEM[(void *)"." + 1B];
        D.5887 = *D.5886;
        D.5888 = (int) D.5887;
        D.5889 = __s2 + 1;
        D.5890 = *D.5889;
        D.5891 = (int) D.5890;
        __result = D.5888 - D.5891;
        D.5892 = __s2_len > 1;
        D.5882 = __result == 0;
        D.5893 = D.5892 & D.5882;
        if (D.5893 != 0) goto <D.5894>; else goto <D.5895>;
        <D.5894>:
        D.5896 = &MEM[(void *)"." + 2B];
        D.5897 = *D.5896;
        D.5898 = (int) D.5897;
        D.5899 = __s2 + 2;
        D.5900 = *D.5899;
        D.5901 = (int) D.5900;
        __result = D.5898 - D.5901;
        D.5902 = __s2_len > 2;
        D.5882 = __result == 0;
        D.5903 = D.5902 & D.5882;
        if (D.5903 != 0) goto <D.5904>; else goto <D.5905>;
        <D.5904>:
        D.5906 = &MEM[(void *)"." + 3B];
        D.5907 = *D.5906;
        D.5908 = (int) D.5907;
        D.5909 = __s2 + 3;
        D.5910 = *D.5909;
        D.5911 = (int) D.5910;
        __result = D.5908 - D.5911;
        <D.5905>:
        <D.5895>:
        <D.5885>:
      }
      D.5808 = __result;
    }
    iftmp.0 = -D.5808;
    goto <D.5912>;
    <D.5875>:
    D.5913 = &entry->d_name;
    iftmp.0 = __builtin_strcmp (D.5913, ".");
    <D.5912>:
    D.5809 = iftmp.0;
  }
  if (D.5809 == 0) goto <D.5819>; else goto <D.5914>;
  <D.5914>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 2;
    if (__s2_len <= 3) goto <D.5916>; else goto <D.5917>;
    <D.5916>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = &entry->d_name;
      D.5918 = "..";
      D.5919 = MEM[(const unsigned char *)D.5918];
      D.5920 = (int) D.5919;
      D.5921 = *__s2;
      D.5922 = (int) D.5921;
      __result = D.5920 - D.5922;
      {
        D.5923 = __s2_len != 0;
        D.5924 = __result == 0;
        D.5925 = D.5923 & D.5924;
        if (D.5925 != 0) goto <D.5926>; else goto <D.5927>;
        <D.5926>:
        D.5928 = &MEM[(void *)".." + 1B];
        D.5929 = *D.5928;
        D.5930 = (int) D.5929;
        D.5931 = __s2 + 1;
        D.5932 = *D.5931;
        D.5933 = (int) D.5932;
        __result = D.5930 - D.5933;
        D.5934 = __s2_len > 1;
        D.5924 = __result == 0;
        D.5935 = D.5934 & D.5924;
        if (D.5935 != 0) goto <D.5936>; else goto <D.5937>;
        <D.5936>:
        D.5938 = &MEM[(void *)".." + 2B];
        D.5939 = *D.5938;
        D.5940 = (int) D.5939;
        D.5941 = __s2 + 2;
        D.5942 = *D.5941;
        D.5943 = (int) D.5942;
        __result = D.5940 - D.5943;
        D.5944 = __s2_len > 2;
        D.5924 = __result == 0;
        D.5945 = D.5944 & D.5924;
        if (D.5945 != 0) goto <D.5946>; else goto <D.5947>;
        <D.5946>:
        D.5948 = &MEM[(void *)".." + 3B];
        D.5949 = *D.5948;
        D.5950 = (int) D.5949;
        D.5951 = __s2 + 3;
        D.5952 = *D.5951;
        D.5953 = (int) D.5952;
        __result = D.5950 - D.5953;
        <D.5947>:
        <D.5937>:
        <D.5927>:
      }
      D.5817 = __result;
    }
    iftmp.1 = -D.5817;
    goto <D.5954>;
    <D.5917>:
    D.5913 = &entry->d_name;
    iftmp.1 = __builtin_strcmp (D.5913, "..");
    <D.5954>:
    D.5818 = iftmp.1;
  }
  if (D.5818 == 0) goto <D.5819>; else goto <D.5820>;
  <D.5820>:
  D.5870 = &entry->d_name;
  return D.5870;
}


monoeg_g_dir_rewind (struct GDir * dir)
{
  struct DIR * D.5959;
  char * D.5960;
  struct DIR * D.5961;

  if (dir == 0B) goto <D.5956>; else goto <D.5958>;
  <D.5958>:
  D.5959 = dir->dir;
  if (D.5959 == 0B) goto <D.5956>; else goto <D.5957>;
  <D.5956>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 87, "dir != NULL && dir->dir != NULL");
  return;
  <D.5957>:
  D.5959 = dir->dir;
  closedir (D.5959);
  D.5960 = dir->path;
  D.5961 = opendir (D.5960);
  dir->dir = D.5961;
}


monoeg_g_dir_close (struct GDir * dir)
{
  struct DIR * D.5966;
  char * D.5967;

  if (dir == 0B) goto <D.5963>; else goto <D.5965>;
  <D.5965>:
  D.5966 = dir->dir;
  if (D.5966 == 0B) goto <D.5963>; else goto <D.5964>;
  <D.5963>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 99, "dir != NULL && dir->dir != 0");
  return;
  <D.5964>:
  D.5966 = dir->dir;
  closedir (D.5966);
  D.5967 = dir->path;
  monoeg_g_free (D.5967);
  dir->dir = 0B;
  monoeg_g_free (dir);
}


monoeg_g_mkdir_with_parents (const gchar * pathname, int mode)
{
  char D.5972;
  int * D.5973;
  int D.5974;
  char D.5975;
  char D.5978;
  _Bool D.5979;
  _Bool D.5980;
  _Bool D.5981;
  unsigned int mode.2;
  int D.5987;
  char * d.3;
  char * path;
  char * d;
  int rv;

  if (pathname == 0B) goto <D.5969>; else goto <D.5971>;
  <D.5971>:
  D.5972 = *pathname;
  if (D.5972 == 0) goto <D.5969>; else goto <D.5970>;
  <D.5969>:
  D.5973 = __errno_location ();
  *D.5973 = 22;
  D.5974 = -1;
  return D.5974;
  <D.5970>:
  path = monoeg_strdup (pathname);
  d = path;
  D.5975 = *d;
  if (D.5975 == 47) goto <D.5976>; else goto <D.5977>;
  <D.5976>:
  d = d + 1;
  <D.5977>:
  <D.5839>:
  D.5978 = *d;
  D.5979 = D.5978 == 47;
  D.5980 = D.5978 == 0;
  D.5981 = D.5979 | D.5980;
  if (D.5981 != 0) goto <D.5982>; else goto <D.5983>;
  <D.5982>:
  {
    char orig;

    orig = *d;
    *d = 0;
    mode.2 = (unsigned int) mode;
    rv = mkdir (path, mode.2);
    if (rv == -1) goto <D.5985>; else goto <D.5986>;
    <D.5985>:
    D.5973 = __errno_location ();
    D.5987 = *D.5973;
    if (D.5987 != 17) goto <D.5988>; else goto <D.5989>;
    <D.5988>:
    monoeg_g_free (path);
    D.5974 = -1;
    return D.5974;
    <D.5989>:
    <D.5986>:
    d.3 = d;
    d = d.3 + 1;
    *d.3 = orig;
    goto <D.5836>;
    <D.5835>:
    d = d + 1;
    <D.5836>:
    if (orig == 47) goto <D.5991>; else goto <D.5837>;
    <D.5991>:
    D.5975 = *d;
    if (D.5975 == 47) goto <D.5835>; else goto <D.5837>;
    <D.5837>:
    if (orig == 0) goto <D.5838>; else goto <D.5992>;
    <D.5992>:
  }
  goto <D.5993>;
  <D.5983>:
  d = d + 1;
  <D.5993>:
  goto <D.5839>;
  <D.5838>:
  monoeg_g_free (path);
  D.5974 = 0;
  return D.5974;
}


