Mono_Posix_Syscall_uname (struct Mono_Posix_Syscall__Utsname * buf)
{
  int * D.6549;
  int D.6550;
  char * D.6553;
  void * D.6554;
  struct utsname _buf;
  int r;

  try
    {
      if (buf == 0B) goto <D.6547>; else goto <D.6548>;
      <D.6547>:
      D.6549 = __errno_location ();
      *D.6549 = 14;
      D.6550 = -1;
      return D.6550;
      <D.6548>:
      r = uname (&_buf);
      if (r == 0) goto <D.6551>; else goto <D.6552>;
      <D.6551>:
      D.6553 = _mph_copy_structure_strings (buf, &mph_utsname_offsets, &_buf, &utsname_offsets, 5);
      buf->_buf_ = D.6553;
      buf->domainname = 0B;
      D.6554 = buf->_buf_;
      if (D.6554 == 0B) goto <D.6555>; else goto <D.6556>;
      <D.6555>:
      D.6549 = __errno_location ();
      *D.6549 = 12;
      D.6550 = -1;
      return D.6550;
      <D.6556>:
      <D.6552>:
      D.6550 = r;
      return D.6550;
    }
  finally
    {
      _buf = {CLOBBER};
    }
}


