Mono_Posix_Syscall_readv (int dirfd, struct Mono_Posix_Iovec * iov, gint32 iovcnt)
{
  gint64 D.6616;
  struct iovec * v;
  gint64 res;

  v = from_iovec (iov, iovcnt);
  if (v == 0B) goto <D.6614>; else goto <D.6615>;
  <D.6614>:
  D.6616 = -1;
  return D.6616;
  <D.6615>:
  res = readv (dirfd, v, iovcnt);
  free (v);
  D.6616 = res;
  return D.6616;
}


from_iovec (struct Mono_Posix_Iovec * iov, gint32 iovcnt)
{
  int * D.6620;
  struct iovec * D.6621;
  long unsigned int D.6622;
  long unsigned int D.6623;
  long unsigned int D.6626;
  long unsigned int D.6627;
  struct iovec * D.6628;
  struct Mono_Posix_Iovec * D.6629;
  int D.6630;
  struct iovec * v;
  gint32 i;

  if (iovcnt < 0) goto <D.6618>; else goto <D.6619>;
  <D.6618>:
  D.6620 = __errno_location ();
  *D.6620 = 22;
  D.6621 = 0B;
  return D.6621;
  <D.6619>:
  D.6622 = (long unsigned int) iovcnt;
  D.6623 = D.6622 * 16;
  v = malloc (D.6623);
  if (v == 0B) goto <D.6624>; else goto <D.6625>;
  <D.6624>:
  D.6621 = 0B;
  return D.6621;
  <D.6625>:
  i = 0;
  goto <D.6581>;
  <D.6580>:
  D.6626 = (long unsigned int) i;
  D.6627 = D.6626 * 16;
  D.6628 = v + D.6627;
  D.6626 = (long unsigned int) i;
  D.6627 = D.6626 * 16;
  D.6629 = iov + D.6627;
  D.6630 = Mono_Posix_FromIovec (D.6629, D.6628);
  if (D.6630 != 0) goto <D.6631>; else goto <D.6632>;
  <D.6631>:
  free (v);
  D.6621 = 0B;
  return D.6621;
  <D.6632>:
  i = i + 1;
  <D.6581>:
  if (i < iovcnt) goto <D.6580>; else goto <D.6582>;
  <D.6582>:
  D.6621 = v;
  return D.6621;
}


Mono_Posix_Syscall_writev (int dirfd, struct Mono_Posix_Iovec * iov, gint32 iovcnt)
{
  gint64 D.6636;
  struct iovec * v;
  gint64 res;

  v = from_iovec (iov, iovcnt);
  if (v == 0B) goto <D.6634>; else goto <D.6635>;
  <D.6634>:
  D.6636 = -1;
  return D.6636;
  <D.6635>:
  res = writev (dirfd, v, iovcnt);
  free (v);
  D.6636 = res;
  return D.6636;
}


Mono_Posix_Syscall_preadv (int dirfd, struct Mono_Posix_Iovec * iov, gint32 iovcnt, gint64 off)
{
  int * D.6640;
  gint64 D.6641;
  struct iovec * v;
  gint64 res;

  if (0 != 0) goto <D.6638>; else goto <D.6639>;
  <D.6638>:
  D.6640 = __errno_location ();
  *D.6640 = 75;
  D.6641 = -1;
  return D.6641;
  <D.6639>:
  v = from_iovec (iov, iovcnt);
  if (v == 0B) goto <D.6642>; else goto <D.6643>;
  <D.6642>:
  D.6641 = -1;
  return D.6641;
  <D.6643>:
  res = preadv (dirfd, v, iovcnt, off);
  free (v);
  D.6641 = res;
  return D.6641;
}


Mono_Posix_Syscall_pwritev (int dirfd, struct Mono_Posix_Iovec * iov, gint32 iovcnt, gint64 off)
{
  int * D.6647;
  gint64 D.6648;
  struct iovec * v;
  gint64 res;

  if (0 != 0) goto <D.6645>; else goto <D.6646>;
  <D.6645>:
  D.6647 = __errno_location ();
  *D.6647 = 75;
  D.6648 = -1;
  return D.6648;
  <D.6646>:
  v = from_iovec (iov, iovcnt);
  if (v == 0B) goto <D.6649>; else goto <D.6650>;
  <D.6649>:
  D.6648 = -1;
  return D.6648;
  <D.6650>:
  res = pwritev (dirfd, v, iovcnt, off);
  free (v);
  D.6648 = res;
  return D.6648;
}


