monoeg_g_dir_open (const gchar * path, guint flags, struct GError * * error)
{
  struct GDir * D.6190;
  struct GError * D.6193;
  struct DIR * D.6196;
  struct DIR * D.6197;
  int * D.6202;
  char * D.6203;
  <unnamed type> D.6204;
  int D.6205;
  struct GError * D.6206;
  gchar * D.6207;
  struct GDir * dir;

  if (path == 0B) goto <D.6188>; else goto <D.6189>;
  <D.6188>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 49, "path != NULL");
  D.6190 = 0B;
  return D.6190;
  <D.6189>:
  if (error != 0B) goto <D.6191>; else goto <D.6192>;
  <D.6191>:
  D.6193 = *error;
  if (D.6193 != 0B) goto <D.6194>; else goto <D.6195>;
  <D.6194>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 50, "error == NULL || *error == NULL");
  D.6190 = 0B;
  return D.6190;
  <D.6195>:
  <D.6192>:
  dir = monoeg_malloc (16);
  D.6196 = opendir (path);
  dir->dir = D.6196;
  D.6197 = dir->dir;
  if (D.6197 == 0B) goto <D.6198>; else goto <D.6199>;
  <D.6198>:
  if (error != 0B) goto <D.6200>; else goto <D.6201>;
  <D.6200>:
  {
    gint err;

    D.6202 = __errno_location ();
    err = *D.6202;
    D.6203 = strerror (err);
    D.6204 = monoeg_g_file_error_from_errno (err);
    D.6205 = (int) D.6204;
    D.6206 = monoeg_g_error_new (0B, D.6205, D.6203);
    *error = D.6206;
  }
  <D.6201>:
  monoeg_g_free (dir);
  D.6190 = 0B;
  return D.6190;
  <D.6199>:
  D.6207 = monoeg_strdup (path);
  dir->path = D.6207;
  D.6190 = dir;
  return D.6190;
}


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

  if (str != 0B) goto <D.6209>; else goto <D.6210>;
  <D.6209>:
  D.6211 = __strdup (str);
  return D.6211;
  <D.6210>:
  D.6211 = 0B;
  return D.6211;
}


monoeg_g_dir_read_name (struct GDir * dir)
{
  struct DIR * D.6216;
  const gchar * D.6217;
  int D.6156;
  int iftmp.0;
  int D.6155;
  char[2] * D.6223;
  unsigned char D.6224;
  int D.6225;
  unsigned char D.6226;
  int D.6227;
  _Bool D.6228;
  _Bool D.6229;
  _Bool D.6230;
  const unsigned char * D.6233;
  unsigned char D.6234;
  int D.6235;
  const unsigned char * D.6236;
  unsigned char D.6237;
  int D.6238;
  _Bool D.6239;
  _Bool D.6240;
  const unsigned char * D.6243;
  unsigned char D.6244;
  int D.6245;
  const unsigned char * D.6246;
  unsigned char D.6247;
  int D.6248;
  _Bool D.6249;
  _Bool D.6250;
  const unsigned char * D.6253;
  unsigned char D.6254;
  int D.6255;
  const unsigned char * D.6256;
  unsigned char D.6257;
  int D.6258;
  char[256] * D.6260;
  int D.6165;
  int iftmp.1;
  int D.6164;
  char[3] * D.6265;
  unsigned char D.6266;
  int D.6267;
  unsigned char D.6268;
  int D.6269;
  _Bool D.6270;
  _Bool D.6271;
  _Bool D.6272;
  const unsigned char * D.6275;
  unsigned char D.6276;
  int D.6277;
  const unsigned char * D.6278;
  unsigned char D.6279;
  int D.6280;
  _Bool D.6281;
  _Bool D.6282;
  const unsigned char * D.6285;
  unsigned char D.6286;
  int D.6287;
  const unsigned char * D.6288;
  unsigned char D.6289;
  int D.6290;
  _Bool D.6291;
  _Bool D.6292;
  const unsigned char * D.6295;
  unsigned char D.6296;
  int D.6297;
  const unsigned char * D.6298;
  unsigned char D.6299;
  int D.6300;
  struct dirent * entry;

  if (dir == 0B) goto <D.6213>; else goto <D.6215>;
  <D.6215>:
  D.6216 = dir->dir;
  if (D.6216 == 0B) goto <D.6213>; else goto <D.6214>;
  <D.6213>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 74, "dir != NULL && dir->dir != NULL");
  D.6217 = 0B;
  return D.6217;
  <D.6214>:
  <D.6166>:
  D.6216 = dir->dir;
  entry = readdir (D.6216);
  if (entry == 0B) goto <D.6218>; else goto <D.6219>;
  <D.6218>:
  D.6217 = 0B;
  return D.6217;
  <D.6219>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = &entry->d_name;
      D.6223 = ".";
      D.6224 = MEM[(const unsigned char *)D.6223];
      D.6225 = (int) D.6224;
      D.6226 = *__s2;
      D.6227 = (int) D.6226;
      __result = D.6225 - D.6227;
      {
        D.6228 = __s2_len != 0;
        D.6229 = __result == 0;
        D.6230 = D.6228 & D.6229;
        if (D.6230 != 0) goto <D.6231>; else goto <D.6232>;
        <D.6231>:
        D.6233 = &MEM[(void *)"." + 1B];
        D.6234 = *D.6233;
        D.6235 = (int) D.6234;
        D.6236 = __s2 + 1;
        D.6237 = *D.6236;
        D.6238 = (int) D.6237;
        __result = D.6235 - D.6238;
        D.6239 = __s2_len > 1;
        D.6229 = __result == 0;
        D.6240 = D.6239 & D.6229;
        if (D.6240 != 0) goto <D.6241>; else goto <D.6242>;
        <D.6241>:
        D.6243 = &MEM[(void *)"." + 2B];
        D.6244 = *D.6243;
        D.6245 = (int) D.6244;
        D.6246 = __s2 + 2;
        D.6247 = *D.6246;
        D.6248 = (int) D.6247;
        __result = D.6245 - D.6248;
        D.6249 = __s2_len > 2;
        D.6229 = __result == 0;
        D.6250 = D.6249 & D.6229;
        if (D.6250 != 0) goto <D.6251>; else goto <D.6252>;
        <D.6251>:
        D.6253 = &MEM[(void *)"." + 3B];
        D.6254 = *D.6253;
        D.6255 = (int) D.6254;
        D.6256 = __s2 + 3;
        D.6257 = *D.6256;
        D.6258 = (int) D.6257;
        __result = D.6255 - D.6258;
        <D.6252>:
        <D.6242>:
        <D.6232>:
      }
      D.6155 = __result;
    }
    iftmp.0 = -D.6155;
    goto <D.6259>;
    <D.6222>:
    D.6260 = &entry->d_name;
    iftmp.0 = __builtin_strcmp (D.6260, ".");
    <D.6259>:
    D.6156 = iftmp.0;
  }
  if (D.6156 == 0) goto <D.6166>; else goto <D.6261>;
  <D.6261>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = &entry->d_name;
      D.6265 = "..";
      D.6266 = MEM[(const unsigned char *)D.6265];
      D.6267 = (int) D.6266;
      D.6268 = *__s2;
      D.6269 = (int) D.6268;
      __result = D.6267 - D.6269;
      {
        D.6270 = __s2_len != 0;
        D.6271 = __result == 0;
        D.6272 = D.6270 & D.6271;
        if (D.6272 != 0) goto <D.6273>; else goto <D.6274>;
        <D.6273>:
        D.6275 = &MEM[(void *)".." + 1B];
        D.6276 = *D.6275;
        D.6277 = (int) D.6276;
        D.6278 = __s2 + 1;
        D.6279 = *D.6278;
        D.6280 = (int) D.6279;
        __result = D.6277 - D.6280;
        D.6281 = __s2_len > 1;
        D.6271 = __result == 0;
        D.6282 = D.6281 & D.6271;
        if (D.6282 != 0) goto <D.6283>; else goto <D.6284>;
        <D.6283>:
        D.6285 = &MEM[(void *)".." + 2B];
        D.6286 = *D.6285;
        D.6287 = (int) D.6286;
        D.6288 = __s2 + 2;
        D.6289 = *D.6288;
        D.6290 = (int) D.6289;
        __result = D.6287 - D.6290;
        D.6291 = __s2_len > 2;
        D.6271 = __result == 0;
        D.6292 = D.6291 & D.6271;
        if (D.6292 != 0) goto <D.6293>; else goto <D.6294>;
        <D.6293>:
        D.6295 = &MEM[(void *)".." + 3B];
        D.6296 = *D.6295;
        D.6297 = (int) D.6296;
        D.6298 = __s2 + 3;
        D.6299 = *D.6298;
        D.6300 = (int) D.6299;
        __result = D.6297 - D.6300;
        <D.6294>:
        <D.6284>:
        <D.6274>:
      }
      D.6164 = __result;
    }
    iftmp.1 = -D.6164;
    goto <D.6301>;
    <D.6264>:
    D.6260 = &entry->d_name;
    iftmp.1 = __builtin_strcmp (D.6260, "..");
    <D.6301>:
    D.6165 = iftmp.1;
  }
  if (D.6165 == 0) goto <D.6166>; else goto <D.6167>;
  <D.6167>:
  D.6217 = &entry->d_name;
  return D.6217;
}


monoeg_g_dir_rewind (struct GDir * dir)
{
  struct DIR * D.6306;
  char * D.6307;
  struct DIR * D.6308;

  if (dir == 0B) goto <D.6303>; else goto <D.6305>;
  <D.6305>:
  D.6306 = dir->dir;
  if (D.6306 == 0B) goto <D.6303>; else goto <D.6304>;
  <D.6303>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 87, "dir != NULL && dir->dir != NULL");
  return;
  <D.6304>:
  D.6306 = dir->dir;
  closedir (D.6306);
  D.6307 = dir->path;
  D.6308 = opendir (D.6307);
  dir->dir = D.6308;
}


monoeg_g_dir_close (struct GDir * dir)
{
  struct DIR * D.6313;
  char * D.6314;

  if (dir == 0B) goto <D.6310>; else goto <D.6312>;
  <D.6312>:
  D.6313 = dir->dir;
  if (D.6313 == 0B) goto <D.6310>; else goto <D.6311>;
  <D.6310>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gdir-unix.c", 99, "dir != NULL && dir->dir != 0");
  return;
  <D.6311>:
  D.6313 = dir->dir;
  closedir (D.6313);
  D.6314 = dir->path;
  monoeg_g_free (D.6314);
  dir->dir = 0B;
  monoeg_g_free (dir);
}


monoeg_g_mkdir_with_parents (const gchar * pathname, int mode)
{
  char D.6319;
  int * D.6320;
  int D.6321;
  char D.6322;
  char D.6325;
  _Bool D.6326;
  _Bool D.6327;
  _Bool D.6328;
  unsigned int mode.2;
  int D.6334;
  char * d.3;
  char * path;
  char * d;
  int rv;

  if (pathname == 0B) goto <D.6316>; else goto <D.6318>;
  <D.6318>:
  D.6319 = *pathname;
  if (D.6319 == 0) goto <D.6316>; else goto <D.6317>;
  <D.6316>:
  D.6320 = __errno_location ();
  *D.6320 = 22;
  D.6321 = -1;
  return D.6321;
  <D.6317>:
  path = monoeg_strdup (pathname);
  d = path;
  D.6322 = *d;
  if (D.6322 == 47) goto <D.6323>; else goto <D.6324>;
  <D.6323>:
  d = d + 1;
  <D.6324>:
  <D.6186>:
  D.6325 = *d;
  D.6326 = D.6325 == 47;
  D.6327 = D.6325 == 0;
  D.6328 = D.6326 | D.6327;
  if (D.6328 != 0) goto <D.6329>; else goto <D.6330>;
  <D.6329>:
  {
    char orig;

    orig = *d;
    *d = 0;
    mode.2 = (unsigned int) mode;
    rv = mkdir (path, mode.2);
    if (rv == -1) goto <D.6332>; else goto <D.6333>;
    <D.6332>:
    D.6320 = __errno_location ();
    D.6334 = *D.6320;
    if (D.6334 != 17) goto <D.6335>; else goto <D.6336>;
    <D.6335>:
    monoeg_g_free (path);
    D.6321 = -1;
    return D.6321;
    <D.6336>:
    <D.6333>:
    d.3 = d;
    d = d.3 + 1;
    *d.3 = orig;
    goto <D.6183>;
    <D.6182>:
    d = d + 1;
    <D.6183>:
    if (orig == 47) goto <D.6338>; else goto <D.6184>;
    <D.6338>:
    D.6322 = *d;
    if (D.6322 == 47) goto <D.6182>; else goto <D.6184>;
    <D.6184>:
    if (orig == 0) goto <D.6185>; else goto <D.6339>;
    <D.6339>:
  }
  goto <D.6340>;
  <D.6330>:
  d = d + 1;
  <D.6340>:
  goto <D.6186>;
  <D.6185>:
  monoeg_g_free (path);
  D.6321 = 0;
  return D.6321;
}


