wifexited (int status)
{
  int D.8401;
  union 
{
  int __in;
  int __i;
} D.8308;
  int D.8402;
  int D.8403;
  _Bool D.8404;
  typedef union 
{
  int __in;
  int __i;
} unionunion 
{
  int __in;
  int __i;
};

  D.8308.__in = status;
  D.8402 = D.8308.__i;
  D.8403 = D.8402 & 127;
  D.8404 = D.8403 == 0;
  D.8401 = (int) D.8404;
  return D.8401;
}


wexitstatus (int status)
{
  int D.8406;
  union 
{
  int __in;
  int __i;
} D.8315;
  int D.8407;
  int D.8408;
  typedef union 
{
  int __in;
  int __i;
} unionunion 
{
  int __in;
  int __i;
};

  D.8315.__in = status;
  D.8407 = D.8315.__i;
  D.8408 = D.8407 & 65280;
  D.8406 = D.8408 >> 8;
  return D.8406;
}


wifsignaled (int status)
{
  int D.8410;
  union 
{
  int __in;
  int __i;
} D.8322;
  int D.8411;
  unsigned char D.8412;
  unsigned char D.8413;
  unsigned char D.8414;
  signed char D.8415;
  signed char D.8416;
  _Bool D.8417;
  typedef union 
{
  int __in;
  int __i;
} unionunion 
{
  int __in;
  int __i;
};

  D.8322.__in = status;
  D.8411 = D.8322.__i;
  D.8412 = (unsigned char) D.8411;
  D.8413 = D.8412 & 127;
  D.8414 = D.8413 + 1;
  D.8415 = (signed char) D.8414;
  D.8416 = D.8415 >> 1;
  D.8417 = D.8416 > 0;
  D.8410 = (int) D.8417;
  return D.8410;
}


wtermsig (int status)
{
  int D.8419;
  union 
{
  int __in;
  int __i;
} D.8329;
  int D.8420;
  typedef union 
{
  int __in;
  int __i;
} unionunion 
{
  int __in;
  int __i;
};

  D.8329.__in = status;
  D.8420 = D.8329.__i;
  D.8419 = D.8420 & 127;
  return D.8419;
}


wifstopped (int status)
{
  int D.8422;
  union 
{
  int __in;
  int __i;
} D.8336;
  int D.8423;
  int D.8424;
  _Bool D.8425;
  typedef union 
{
  int __in;
  int __i;
} unionunion 
{
  int __in;
  int __i;
};

  D.8336.__in = status;
  D.8423 = D.8336.__i;
  D.8424 = D.8423 & 255;
  D.8425 = D.8424 == 127;
  D.8422 = (int) D.8425;
  return D.8422;
}


wstopsig (int status)
{
  int D.8427;
  union 
{
  int __in;
  int __i;
} D.8343;
  int D.8428;
  int D.8429;
  typedef union 
{
  int __in;
  int __i;
} unionunion 
{
  int __in;
  int __i;
};

  D.8343.__in = status;
  D.8428 = D.8343.__i;
  D.8429 = D.8428 & 65280;
  D.8427 = D.8429 >> 8;
  return D.8427;
}


helper_Mono_Posix_Stat (const char * filename, int dereference, int * device, int * inode, int * mode, int * nlinks, int * uid, int * gid, int * rdev, gint64 * size, gint64 * blksize, gint64 * blocks, gint64 * atime, gint64 * mtime, gint64 * ctime)
{
  int D.8436;
  long unsigned int D.8437;
  int D.8438;
  long unsigned int D.8439;
  int D.8440;
  unsigned int D.8441;
  int D.8442;
  long unsigned int D.8443;
  int D.8444;
  unsigned int D.8445;
  int D.8446;
  unsigned int D.8447;
  int D.8448;
  long unsigned int D.8449;
  int D.8450;
  long int D.8451;
  long int D.8452;
  long int D.8453;
  long int D.8454;
  long int D.8455;
  long int D.8456;
  int ret;
  struct stat buf;

  try
    {
      if (dereference == 0) goto <D.8431>; else goto <D.8432>;
      <D.8431>:
      ret = stat (filename, &buf);
      goto <D.8433>;
      <D.8432>:
      ret = lstat (filename, &buf);
      <D.8433>:
      if (ret != 0) goto <D.8434>; else goto <D.8435>;
      <D.8434>:
      D.8436 = ret;
      return D.8436;
      <D.8435>:
      D.8437 = buf.st_dev;
      D.8438 = (int) D.8437;
      *device = D.8438;
      D.8439 = buf.st_ino;
      D.8440 = (int) D.8439;
      *inode = D.8440;
      D.8441 = buf.st_mode;
      D.8442 = (int) D.8441;
      *mode = D.8442;
      D.8443 = buf.st_nlink;
      D.8444 = (int) D.8443;
      *nlinks = D.8444;
      D.8445 = buf.st_uid;
      D.8446 = (int) D.8445;
      *uid = D.8446;
      D.8447 = buf.st_gid;
      D.8448 = (int) D.8447;
      *gid = D.8448;
      D.8449 = buf.st_rdev;
      D.8450 = (int) D.8449;
      *rdev = D.8450;
      D.8451 = buf.st_size;
      *size = D.8451;
      D.8452 = buf.st_blksize;
      *blksize = D.8452;
      D.8453 = buf.st_blocks;
      *blocks = D.8453;
      D.8454 = buf.st_atim.tv_sec;
      *atime = D.8454;
      D.8455 = buf.st_mtim.tv_sec;
      *mtime = D.8455;
      D.8456 = buf.st_ctim.tv_sec;
      *ctime = D.8456;
      D.8436 = 0;
      return D.8436;
    }
  finally
    {
      buf = {CLOBBER};
    }
}


stat (const char * __path, struct stat * __statbuf)
{
  int D.8459;

  D.8459 = __xstat (1, __path, __statbuf);
  return D.8459;
}


lstat (const char * __path, struct stat * __statbuf)
{
  int D.8461;

  D.8461 = __lxstat (1, __path, __statbuf);
  return D.8461;
}


helper_Mono_Posix_GetUserName (int uid)
{
  unsigned int uid.0;
  char * D.8466;
  char * D.8467;
  struct passwd * p;

  uid.0 = (unsigned int) uid;
  p = getpwuid (uid.0);
  if (p == 0B) goto <D.8464>; else goto <D.8465>;
  <D.8464>:
  D.8466 = 0B;
  return D.8466;
  <D.8465>:
  D.8467 = p->pw_name;
  D.8466 = __strdup (D.8467);
  return D.8466;
}


helper_Mono_Posix_GetGroupName (int gid)
{
  unsigned int gid.1;
  char * D.8472;
  char * D.8473;
  struct group * p;

  gid.1 = (unsigned int) gid;
  p = getgrgid (gid.1);
  if (p == 0B) goto <D.8470>; else goto <D.8471>;
  <D.8470>:
  D.8472 = 0B;
  return D.8472;
  <D.8471>:
  D.8473 = p->gr_name;
  D.8472 = __strdup (D.8473);
  return D.8472;
}


helper_Mono_Posix_readdir (void * dir)
{
  char * D.8477;
  char[256] * D.8478;
  struct dirent * e;

  e = readdir (dir);
  if (e == 0B) goto <D.8475>; else goto <D.8476>;
  <D.8475>:
  D.8477 = 0B;
  return D.8477;
  <D.8476>:
  D.8478 = &e->d_name;
  D.8477 = __strdup (D.8478);
  return D.8477;
}


helper_Mono_Posix_getpwnamuid (int mode, char * in_name, int in_uid, char * * account, char * * password, int * uid, int * gid, char * * name, char * * home, char * * shell)
{
  unsigned int in_uid.2;
  struct passwd * pwp.3;
  int D.8491;
  char * D.8492;
  char * D.8493;
  unsigned int D.8494;
  int D.8495;
  unsigned int D.8496;
  int D.8497;
  char * D.8498;
  char * D.8499;
  char * D.8500;
  struct passwd pw;
  struct passwd * pwp;
  char buf[4096];
  int ret;

  try
    {
      if (mode == 0) goto <D.8480>; else goto <D.8481>;
      <D.8480>:
      ret = getpwnam_r (in_name, &pw, &buf, 4096, &pwp);
      goto <D.8482>;
      <D.8481>:
      in_uid.2 = (unsigned int) in_uid;
      ret = getpwuid_r (in_uid.2, &pw, &buf, 4096, &pwp);
      <D.8482>:
      if (ret == 0) goto <D.8484>; else goto <D.8485>;
      <D.8484>:
      pwp.3 = pwp;
      if (pwp.3 == 0B) goto <D.8487>; else goto <D.8488>;
      <D.8487>:
      ret = 2;
      <D.8488>:
      <D.8485>:
      if (ret != 0) goto <D.8489>; else goto <D.8490>;
      <D.8489>:
      *account = 0B;
      *password = 0B;
      *uid = 0;
      *gid = 0;
      *name = 0B;
      *home = 0B;
      *shell = 0B;
      D.8491 = ret;
      return D.8491;
      <D.8490>:
      pwp.3 = pwp;
      D.8492 = pwp.3->pw_name;
      *account = D.8492;
      pwp.3 = pwp;
      D.8493 = pwp.3->pw_passwd;
      *password = D.8493;
      pwp.3 = pwp;
      D.8494 = pwp.3->pw_uid;
      D.8495 = (int) D.8494;
      *uid = D.8495;
      pwp.3 = pwp;
      D.8496 = pwp.3->pw_gid;
      D.8497 = (int) D.8496;
      *gid = D.8497;
      pwp.3 = pwp;
      D.8498 = pwp.3->pw_gecos;
      *name = D.8498;
      pwp.3 = pwp;
      D.8499 = pwp.3->pw_dir;
      *home = D.8499;
      pwp.3 = pwp;
      D.8500 = pwp.3->pw_shell;
      *shell = D.8500;
      D.8491 = 0;
      return D.8491;
    }
  finally
    {
      pw = {CLOBBER};
      pwp = {CLOBBER};
      buf = {CLOBBER};
    }
}


