void Glib::append_canonical_typename(std::string&, const char*) (struct string & dest, const char * type_name)
{
  long int offset.0;
  struct iterator D.32168;
  bool retval.1;
  bool iftmp.2;
  const guint16 * g_ascii_table.3;
  char & D.32371;
  char D.32372;
  unsigned char D.32373;
  long unsigned int D.32374;
  long unsigned int D.32375;
  const guint16 * D.32376;
  short unsigned int D.32377;
  int D.32378;
  int D.32379;
  char & D.32381;
  char D.32382;
  char & D.32384;
  char D.32385;
  char & D.32389;
  bool retval.4;
  const size_type offset;
  struct iterator p;
  const struct iterator pend;

  try
    {
      offset = std::basic_string<char>::size (dest);
      std::basic_string<char>::operator+= (dest, type_name);
      offset.0 = (long int) offset;
      D.32168 = std::basic_string<char>::begin (dest);
      try
        {
          p = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::operator+ (&D.32168, offset.0);
        }
      finally
        {
          D.32168 = {CLOBBER};
        }
      pend = std::basic_string<char>::end (dest);
      goto <D.32209>;
      <D.32208>:
      g_ascii_table.3 = g_ascii_table;
      D.32371 = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::operator* (&p);
      D.32372 = *D.32371;
      D.32373 = (unsigned char) D.32372;
      D.32374 = (long unsigned int) D.32373;
      D.32375 = D.32374 * 2;
      D.32376 = g_ascii_table.3 + D.32375;
      D.32377 = *D.32376;
      D.32378 = (int) D.32377;
      D.32379 = D.32378 & 1;
      if (D.32379 == 0) goto <D.32380>; else goto <D.32368>;
      <D.32380>:
      D.32381 = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::operator* (&p);
      D.32382 = *D.32381;
      if (D.32382 != 95) goto <D.32383>; else goto <D.32368>;
      <D.32383>:
      D.32384 = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::operator* (&p);
      D.32385 = *D.32384;
      if (D.32385 != 45) goto <D.32386>; else goto <D.32368>;
      <D.32386>:
      iftmp.2 = 1;
      goto <D.32369>;
      <D.32368>:
      iftmp.2 = 0;
      <D.32369>:
      retval.1 = iftmp.2;
      if (retval.1 != 0) goto <D.32387>; else goto <D.32388>;
      <D.32387>:
      D.32389 = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::operator* (&p);
      *D.32389 = 43;
      goto <D.32390>;
      <D.32388>:
      <D.32390>:
      __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::operator++ (&p);
      <D.32209>:
      retval.4 = __gnu_cxx::operator!=<char*, std::basic_string<char> > (&p, &pend);
      if (retval.4 != 0) goto <D.32208>; else goto <D.32206>;
      <D.32206>:
    }
  finally
    {
      p = {CLOBBER};
      pend = {CLOBBER};
    }
}


std::basic_string<_CharT, _Traits, _Alloc>::size_type std::basic_string<_CharT, _Traits, _Alloc>::size() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int] (const struct basic_string * const this)
{
  size_type D.32397;
  struct _Rep * D.32398;

  D.32398 = std::basic_string<char>::_M_rep (this);
  D.32397 = D.32398->D.18966._M_length;
  return D.32397;
}


std::basic_string<_CharT, _Traits, _Alloc>::_Rep* std::basic_string<_CharT, _Traits, _Alloc>::_M_rep() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>] (const struct basic_string * const this)
{
  struct _Rep * D.32401;
  char * D.32402;

  D.32402 = std::basic_string<char>::_M_data (this);
  D.32401 = D.32402 + 18446744073709551592;
  return D.32401;
}


_CharT* std::basic_string<_CharT, _Traits, _Alloc>::_M_data() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>] (const struct basic_string * const this)
{
  char * D.32405;

  D.32405 = this->_M_dataplus._M_p;
  return D.32405;
}


std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator+=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>] (struct basic_string * const this, const char * __s)
{
  struct basic_string & D.32407;

  D.32407 = std::basic_string<char>::append (this, __s);
  return D.32407;
}


std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::append(const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>] (struct basic_string * const this, const char * __s)
{
  struct basic_string & D.32410;
  long unsigned int D.32411;

  D.32411 = std::char_traits<char>::length (__s);
  D.32410 = std::basic_string<char>::append (this, __s, D.32411);
  return D.32410;
}


static std::size_t std::char_traits<char>::length(const char_type*) (const char_type * __s)
{
  size_t D.32414;

  D.32414 = __builtin_strlen (__s);
  return D.32414;
}


std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::begin() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >; typename _Alloc::rebind<_CharT>::other::pointer = char*] (struct basic_string * const this)
{
  struct iterator D.32416;
  struct iterator D.32310;
  char * const D.32309;
  char * D.32417;

  std::basic_string<char>::_M_leak (this);
  D.32417 = std::basic_string<char>::_M_data (this);
  D.32309 = D.32417;
  try
    {
      __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::__normal_iterator (&D.32310, &D.32309);
      try
        {
          D.32416 = D.32310;
          return D.32416;
        }
      finally
        {
          D.32310 = {CLOBBER};
        }
    }
  finally
    {
      D.32309 = {CLOBBER};
    }
}


void std::basic_string<_CharT, _Traits, _Alloc>::_M_leak() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>] (struct basic_string * const this)
{
  bool retval.5;
  struct _Rep * D.32423;
  bool D.32424;

  D.32423 = std::basic_string<char>::_M_rep (this);
  D.32424 = std::basic_string<char>::_Rep::_M_is_leaked (D.32423);
  retval.5 = ~D.32424;
  if (retval.5 != 0) goto <D.32425>; else goto <D.32426>;
  <D.32425>:
  std::basic_string<char>::_M_leak_hard (this);
  goto <D.32427>;
  <D.32426>:
  <D.32427>:
}


bool std::basic_string<_CharT, _Traits, _Alloc>::_Rep::_M_is_leaked() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>] (const struct _Rep * const this)
{
  bool D.32430;
  int D.32431;

  D.32431 = this->D.18966._M_refcount;
  D.32430 = D.32431 < 0;
  return D.32430;
}


__gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = char*; _Container = std::basic_string<char>] (struct __normal_iterator * const this, char * const & __i)
{
  char * D.32433;

  D.32433 = *__i;
  this->_M_current = D.32433;
}


__gnu_cxx::__normal_iterator<_Iterator, _Container> __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator+(__gnu_cxx::__normal_iterator<_Iterator, _Container>::difference_type) const [with _Iterator = char*; _Container = std::basic_string<char>; __gnu_cxx::__normal_iterator<_Iterator, _Container>::difference_type = long int] (const struct __normal_iterator * const this, difference_type __n)
{
  struct __normal_iterator D.32434;
  struct __normal_iterator D.32313;
  char * const D.32312;
  char * D.32435;
  sizetype __n.6;
  char * D.32437;

  D.32435 = this->_M_current;
  __n.6 = (sizetype) __n;
  D.32437 = D.32435 + __n.6;
  D.32312 = D.32437;
  try
    {
      __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::__normal_iterator (&D.32313, &D.32312);
      try
        {
          D.32434 = D.32313;
          return D.32434;
        }
      finally
        {
          D.32313 = {CLOBBER};
        }
    }
  finally
    {
      D.32312 = {CLOBBER};
    }
}


std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::end() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >; typename _Alloc::rebind<_CharT>::other::pointer = char*] (struct basic_string * const this)
{
  struct iterator D.32441;
  struct iterator D.32316;
  char * const D.32315;
  char * D.32442;
  long unsigned int D.32443;
  char * D.32444;

  std::basic_string<char>::_M_leak (this);
  D.32442 = std::basic_string<char>::_M_data (this);
  D.32443 = std::basic_string<char>::size (this);
  D.32444 = D.32442 + D.32443;
  D.32315 = D.32444;
  try
    {
      __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::__normal_iterator (&D.32316, &D.32315);
      try
        {
          D.32441 = D.32316;
          return D.32441;
        }
      finally
        {
          D.32316 = {CLOBBER};
        }
    }
  finally
    {
      D.32315 = {CLOBBER};
    }
}


__gnu_cxx::__normal_iterator<_Iterator, _Container>::reference __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator*() const [with _Iterator = char*; _Container = std::basic_string<char>; __gnu_cxx::__normal_iterator<_Iterator, _Container>::reference = char&] (const struct __normal_iterator * const this)
{
  char & D.32450;

  D.32450 = this->_M_current;
  return D.32450;
}


__gnu_cxx::__normal_iterator<_Iterator, _Container>& __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator++() [with _Iterator = char*; _Container = std::basic_string<char>] (struct __normal_iterator * const this)
{
  char * D.32452;
  char * D.32453;
  struct __normal_iterator & D.32454;

  D.32452 = this->_M_current;
  D.32453 = D.32452 + 1;
  this->_M_current = D.32453;
  D.32454 = this;
  return D.32454;
}


bool __gnu_cxx::operator!=(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&) [with _Iterator = char*; _Container = std::basic_string<char>] (const struct __normal_iterator & __lhs, const struct __normal_iterator & __rhs)
{
  bool D.32456;
  char * const & D.32457;
  char * D.32458;
  char * const & D.32459;
  char * D.32460;

  D.32457 = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::base (__lhs);
  D.32458 = *D.32457;
  D.32459 = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >::base (__rhs);
  D.32460 = *D.32459;
  D.32456 = D.32458 != D.32460;
  return D.32456;
}


const _Iterator& __gnu_cxx::__normal_iterator<_Iterator, _Container>::base() const [with _Iterator = char*; _Container = std::basic_string<char>] (const struct __normal_iterator * const this)
{
  char * const & D.32462;

  D.32462 = &this->_M_current;
  return D.32462;
}


