__attribute__((__artificial__, __gnu_inline__, __always_inline__, __leaf__, __nothrow__))
vasprintf (char * * ret, const char * fmt, struct  * ap)
{
  int D.3507;
  int D.3509;
  char * buf;
  int len;
  size_t buflen;
  struct  ap2[1];

  try
    {
      __builtin_va_copy (&ap2, ap);
      len = vsnprintf (0B, 0, fmt, &ap2);
      if (len >= 0) goto <D.3506>; else goto <D.3504>;
      <D.3506>:
      D.3507 = len + 1;
      buflen = (size_t) D.3507;
      buf = malloc (buflen);
      if (buf != 0B) goto <D.3508>; else goto <D.3504>;
      <D.3508>:
      len = vsnprintf (buf, buflen, fmt, ap);
      *ret = buf;
      goto <D.3505>;
      <D.3504>:
      *ret = 0B;
      len = -1;
      <D.3505>:
      __builtin_va_end (&ap2);
      D.3509 = len;
      return D.3509;
    }
  finally
    {
      ap2 = {CLOBBER};
    }
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __leaf__, __nothrow__))
vsnprintf (char * restrict __s, size_t __n, const char * restrict __fmt, struct  * __ap)
{
  int D.3512;
  long unsigned int D.3513;

  D.3513 = __builtin_object_size (__s, 1);
  D.3512 = __builtin___vsnprintf_chk (__s, __n, 1, D.3513, __fmt, __ap);
  return D.3512;
}


