github.com/afumu/libc@v0.0.6/musl_freebsd_arm.go (about)

     1  // Code generated by 'ccgo -export-externs X -export-fields F -hide __syscall0,__syscall1,__syscall2,__syscall3,__syscall4,__syscall5,__syscall6,getnameinfo,gethostbyaddr_r, -nostdinc -nostdlib -o ../musl_freebsd_arm.go -pkgname libc -static-locals-prefix _s -Iarch/arm -Iarch/generic -Iobj/src/internal -Isrc/include -Isrc/internal -Iobj/include -Iinclude copyright.c ../freebsd/table.cpp.c src/ctype/isalnum.c src/ctype/isalpha.c src/ctype/isdigit.c src/ctype/islower.c src/ctype/isprint.c src/ctype/isspace.c src/ctype/isupper.c src/ctype/isxdigit.c src/internal/floatscan.c src/internal/intscan.c src/internal/shgetc.c src/math/copysignl.c src/math/fabsl.c src/math/fmodl.c src/math/rint.c src/math/scalbn.c src/math/scalbnl.c src/network/freeaddrinfo.c src/network/getaddrinfo.c src/network/gethostbyaddr.c src/network/gethostbyaddr_r.c src/network/gethostbyname.c src/network/gethostbyname2.c src/network/gethostbyname2_r.c src/network/getnameinfo.c src/network/h_errno.c src/network/inet_aton.c src/network/inet_ntop.c src/network/inet_pton.c src/network/lookup_ipliteral.c src/network/lookup_name.c src/network/lookup_serv.c src/stdio/__toread.c src/stdio/__uflow.c src/stdlib/bsearch.c src/stdlib/strtod.c src/stdlib/strtol.c src/string/strdup.c src/string/strnlen.c src/string/strspn.c', DO NOT EDIT.
     2  
     3  package libc
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  )
    11  
    12  var _ = math.Pi
    13  var _ reflect.Kind
    14  var _ atomic.Value
    15  var _ unsafe.Pointer
    16  
    17  // musl as a whole is licensed under the following standard MIT license:
    18  //
    19  // ----------------------------------------------------------------------
    20  // Copyright © 2005-2020 Rich Felker, et al.
    21  //
    22  // Permission is hereby granted, free of charge, to any person obtaining
    23  // a copy of this software and associated documentation files (the
    24  // "Software"), to deal in the Software without restriction, including
    25  // without limitation the rights to use, copy, modify, merge, publish,
    26  // distribute, sublicense, and/or sell copies of the Software, and to
    27  // permit persons to whom the Software is furnished to do so, subject to
    28  // the following conditions:
    29  //
    30  // The above copyright notice and this permission notice shall be
    31  // included in all copies or substantial portions of the Software.
    32  //
    33  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    34  // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    35  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    36  // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    37  // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    38  // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    39  // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    40  // ----------------------------------------------------------------------
    41  //
    42  // Authors/contributors include:
    43  //
    44  // A. Wilcox
    45  // Ada Worcester
    46  // Alex Dowad
    47  // Alex Suykov
    48  // Alexander Monakov
    49  // Andre McCurdy
    50  // Andrew Kelley
    51  // Anthony G. Basile
    52  // Aric Belsito
    53  // Arvid Picciani
    54  // Bartosz Brachaczek
    55  // Benjamin Peterson
    56  // Bobby Bingham
    57  // Boris Brezillon
    58  // Brent Cook
    59  // Chris Spiegel
    60  // Clément Vasseur
    61  // Daniel Micay
    62  // Daniel Sabogal
    63  // Daurnimator
    64  // David Carlier
    65  // David Edelsohn
    66  // Denys Vlasenko
    67  // Dmitry Ivanov
    68  // Dmitry V. Levin
    69  // Drew DeVault
    70  // Emil Renner Berthing
    71  // Fangrui Song
    72  // Felix Fietkau
    73  // Felix Janda
    74  // Gianluca Anzolin
    75  // Hauke Mehrtens
    76  // He X
    77  // Hiltjo Posthuma
    78  // Isaac Dunham
    79  // Jaydeep Patil
    80  // Jens Gustedt
    81  // Jeremy Huntwork
    82  // Jo-Philipp Wich
    83  // Joakim Sindholt
    84  // John Spencer
    85  // Julien Ramseier
    86  // Justin Cormack
    87  // Kaarle Ritvanen
    88  // Khem Raj
    89  // Kylie McClain
    90  // Leah Neukirchen
    91  // Luca Barbato
    92  // Luka Perkov
    93  // M Farkas-Dyck (Strake)
    94  // Mahesh Bodapati
    95  // Markus Wichmann
    96  // Masanori Ogino
    97  // Michael Clark
    98  // Michael Forney
    99  // Mikhail Kremnyov
   100  // Natanael Copa
   101  // Nicholas J. Kain
   102  // orc
   103  // Pascal Cuoq
   104  // Patrick Oppenlander
   105  // Petr Hosek
   106  // Petr Skocik
   107  // Pierre Carrier
   108  // Reini Urban
   109  // Rich Felker
   110  // Richard Pennington
   111  // Ryan Fairfax
   112  // Samuel Holland
   113  // Segev Finer
   114  // Shiz
   115  // sin
   116  // Solar Designer
   117  // Stefan Kristiansson
   118  // Stefan O'Rear
   119  // Szabolcs Nagy
   120  // Timo Teräs
   121  // Trutz Behn
   122  // Valentin Ochs
   123  // Will Dietz
   124  // William Haddon
   125  // William Pitcock
   126  //
   127  // Portions of this software are derived from third-party works licensed
   128  // under terms compatible with the above MIT license:
   129  //
   130  // The TRE regular expression implementation (src/regex/reg* and
   131  // src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
   132  // under a 2-clause BSD license (license text in the source files). The
   133  // included version has been heavily modified by Rich Felker in 2012, in
   134  // the interests of size, simplicity, and namespace cleanliness.
   135  //
   136  // Much of the math library code (src/math/* and src/complex/*) is
   137  // Copyright © 1993,2004 Sun Microsystems or
   138  // Copyright © 2003-2011 David Schultz or
   139  // Copyright © 2003-2009 Steven G. Kargl or
   140  // Copyright © 2003-2009 Bruce D. Evans or
   141  // Copyright © 2008 Stephen L. Moshier or
   142  // Copyright © 2017-2018 Arm Limited
   143  // and labelled as such in comments in the individual source files. All
   144  // have been licensed under extremely permissive terms.
   145  //
   146  // The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008
   147  // The Android Open Source Project and is licensed under a two-clause BSD
   148  // license. It was taken from Bionic libc, used on Android.
   149  //
   150  // The AArch64 memcpy and memset code (src/string/aarch64/*) are
   151  // Copyright © 1999-2019, Arm Limited.
   152  //
   153  // The implementation of DES for crypt (src/crypt/crypt_des.c) is
   154  // Copyright © 1994 David Burren. It is licensed under a BSD license.
   155  //
   156  // The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
   157  // originally written by Solar Designer and placed into the public
   158  // domain. The code also comes with a fallback permissive license for use
   159  // in jurisdictions that may not recognize the public domain.
   160  //
   161  // The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
   162  // Valentin Ochs and is licensed under an MIT-style license.
   163  //
   164  // The x86_64 port was written by Nicholas J. Kain and is licensed under
   165  // the standard MIT terms.
   166  //
   167  // The mips and microblaze ports were originally written by Richard
   168  // Pennington for use in the ellcc project. The original code was adapted
   169  // by Rich Felker for build system and code conventions during upstream
   170  // integration. It is licensed under the standard MIT terms.
   171  //
   172  // The mips64 port was contributed by Imagination Technologies and is
   173  // licensed under the standard MIT terms.
   174  //
   175  // The powerpc port was also originally written by Richard Pennington,
   176  // and later supplemented and integrated by John Spencer. It is licensed
   177  // under the standard MIT terms.
   178  //
   179  // All other files which have no copyright comments are original works
   180  // produced specifically for use as part of this library, written either
   181  // by Rich Felker, the main author of the library, or by one or more
   182  // contibutors listed above. Details on authorship of individual files
   183  // can be found in the git version control history of the project. The
   184  // omission of copyright and license comments in each file is in the
   185  // interest of source tree size.
   186  //
   187  // In addition, permission is hereby granted for all public header files
   188  // (include/* and arch/*/bits/*) and crt files intended to be linked into
   189  // applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
   190  // the copyright notice and permission notice otherwise required by the
   191  // license, and to use these files without any requirement of
   192  // attribution. These files include substantial contributions from:
   193  //
   194  // Bobby Bingham
   195  // John Spencer
   196  // Nicholas J. Kain
   197  // Rich Felker
   198  // Richard Pennington
   199  // Stefan Kristiansson
   200  // Szabolcs Nagy
   201  //
   202  // all of whom have explicitly granted such permission.
   203  //
   204  // This file previously contained text expressing a belief that most of
   205  // the files covered by the above exception were sufficiently trivial not
   206  // to be subject to copyright, resulting in confusion over whether it
   207  // negated the permissions granted in the license. In the spirit of
   208  // permissive licensing, and of not having licensing issues being an
   209  // obstacle to adoption, that text has been removed.
   210  const ( /* copyright.c:194:1: */
   211  	__musl__copyright__ = 0
   212  )
   213  
   214  const ( /* nameser.h:117:1: */
   215  	ns_uop_delete = 0
   216  	ns_uop_add    = 1
   217  	ns_uop_max    = 2
   218  )
   219  
   220  const ( /* nameser.h:147:1: */
   221  	ns_t_invalid  = 0
   222  	ns_t_a        = 1
   223  	ns_t_ns       = 2
   224  	ns_t_md       = 3
   225  	ns_t_mf       = 4
   226  	ns_t_cname    = 5
   227  	ns_t_soa      = 6
   228  	ns_t_mb       = 7
   229  	ns_t_mg       = 8
   230  	ns_t_mr       = 9
   231  	ns_t_null     = 10
   232  	ns_t_wks      = 11
   233  	ns_t_ptr      = 12
   234  	ns_t_hinfo    = 13
   235  	ns_t_minfo    = 14
   236  	ns_t_mx       = 15
   237  	ns_t_txt      = 16
   238  	ns_t_rp       = 17
   239  	ns_t_afsdb    = 18
   240  	ns_t_x25      = 19
   241  	ns_t_isdn     = 20
   242  	ns_t_rt       = 21
   243  	ns_t_nsap     = 22
   244  	ns_t_nsap_ptr = 23
   245  	ns_t_sig      = 24
   246  	ns_t_key      = 25
   247  	ns_t_px       = 26
   248  	ns_t_gpos     = 27
   249  	ns_t_aaaa     = 28
   250  	ns_t_loc      = 29
   251  	ns_t_nxt      = 30
   252  	ns_t_eid      = 31
   253  	ns_t_nimloc   = 32
   254  	ns_t_srv      = 33
   255  	ns_t_atma     = 34
   256  	ns_t_naptr    = 35
   257  	ns_t_kx       = 36
   258  	ns_t_cert     = 37
   259  	ns_t_a6       = 38
   260  	ns_t_dname    = 39
   261  	ns_t_sink     = 40
   262  	ns_t_opt      = 41
   263  	ns_t_apl      = 42
   264  	ns_t_tkey     = 249
   265  	ns_t_tsig     = 250
   266  	ns_t_ixfr     = 251
   267  	ns_t_axfr     = 252
   268  	ns_t_mailb    = 253
   269  	ns_t_maila    = 254
   270  	ns_t_any      = 255
   271  	ns_t_zxfr     = 256
   272  	ns_t_max      = 65536
   273  )
   274  
   275  const ( /* nameser.h:210:1: */
   276  	ns_c_invalid = 0
   277  	ns_c_in      = 1
   278  	ns_c_2       = 2
   279  	ns_c_chaos   = 3
   280  	ns_c_hs      = 4
   281  	ns_c_none    = 254
   282  	ns_c_any     = 255
   283  	ns_c_max     = 65536
   284  )
   285  
   286  const ( /* nameser.h:221:1: */
   287  	ns_kt_rsa     = 1
   288  	ns_kt_dh      = 2
   289  	ns_kt_dsa     = 3
   290  	ns_kt_private = 254
   291  )
   292  
   293  const ( /* nameser.h:228:1: */
   294  	cert_t_pkix = 1
   295  	cert_t_spki = 2
   296  	cert_t_pgp  = 3
   297  	cert_t_url  = 253
   298  	cert_t_oid  = 254
   299  )
   300  
   301  const ( /* nameser.h:28:1: */
   302  	ns_s_qd  = 0
   303  	ns_s_zn  = 0
   304  	ns_s_an  = 1
   305  	ns_s_pr  = 1
   306  	ns_s_ns  = 2
   307  	ns_s_ud  = 2
   308  	ns_s_ar  = 3
   309  	ns_s_max = 4
   310  )
   311  
   312  const ( /* nameser.h:75:1: */
   313  	ns_f_qr     = 0
   314  	ns_f_opcode = 1
   315  	ns_f_aa     = 2
   316  	ns_f_tc     = 3
   317  	ns_f_rd     = 4
   318  	ns_f_ra     = 5
   319  	ns_f_z      = 6
   320  	ns_f_ad     = 7
   321  	ns_f_cd     = 8
   322  	ns_f_rcode  = 9
   323  	ns_f_max    = 10
   324  )
   325  
   326  const ( /* nameser.h:89:1: */
   327  	ns_o_query  = 0
   328  	ns_o_iquery = 1
   329  	ns_o_status = 2
   330  	ns_o_notify = 4
   331  	ns_o_update = 5
   332  	ns_o_max    = 6
   333  )
   334  
   335  const ( /* nameser.h:98:1: */
   336  	ns_r_noerror  = 0
   337  	ns_r_formerr  = 1
   338  	ns_r_servfail = 2
   339  	ns_r_nxdomain = 3
   340  	ns_r_notimpl  = 4
   341  	ns_r_refused  = 5
   342  	ns_r_yxdomain = 6
   343  	ns_r_yxrrset  = 7
   344  	ns_r_nxrrset  = 8
   345  	ns_r_notauth  = 9
   346  	ns_r_notzone  = 10
   347  	ns_r_max      = 11
   348  	ns_r_badvers  = 16
   349  	ns_r_badsig   = 16
   350  	ns_r_badkey   = 17
   351  	ns_r_badtime  = 18
   352  )
   353  
   354  type ptrdiff_t = int32 /* <builtin>:3:26 */
   355  
   356  type size_t = uint32 /* <builtin>:9:23 */
   357  
   358  type wchar_t = uint32 /* <builtin>:15:24 */
   359  
   360  ///	typedef __ct_rune_t __wint_t;
   361  ///
   362  ///
   363  ///
   364  ///	typedef __uint_least16_t __char16_t;
   365  ///	typedef __uint_least32_t __char32_t;
   366  ///
   367  ///
   368  ///
   369  ///
   370  ///
   371  ///
   372  ///
   373  ///	typedef struct {
   374  ///	 long long __max_align1 __attribute__((__aligned__(_Alignof(long long))));
   375  ///
   376  ///	 long double __max_align2 __attribute__((__aligned__(_Alignof(long double))));
   377  ///
   378  ///	} __max_align_t;
   379  ///
   380  ///	typedef __uint64_t __dev_t;
   381  ///
   382  ///	typedef __uint32_t __fixpt_t;
   383  ///
   384  ///
   385  ///
   386  ///
   387  ///
   388  ///	typedef union {
   389  ///	 char __mbstate8[128];
   390  ///	 __int64_t _mbstateL;
   391  ///	} __mbstate_t;
   392  ///
   393  ///	typedef __uintmax_t __rman_res_t;
   394  ///
   395  ///
   396  ///
   397  ///
   398  ///
   399  ///
   400  ///	typedef __builtin_va_list __va_list;
   401  ///
   402  ///
   403  ///
   404  ///
   405  ///
   406  ///
   407  ///	typedef __va_list __gnuc_va_list;
   408  ///
   409  ///
   410  ///
   411  ///
   412  ///	unsigned long ___runetype(__ct_rune_t) __attribute__((__pure__));
   413  ///	__ct_rune_t ___tolower(__ct_rune_t) __attribute__((__pure__));
   414  ///	__ct_rune_t ___toupper(__ct_rune_t) __attribute__((__pure__));
   415  ///
   416  ///
   417  ///	extern int __mb_sb_limit;
   418  
   419  type _RuneEntry = struct {
   420  	F__min   int32
   421  	F__max   int32
   422  	F__map   int32
   423  	F__types uintptr
   424  } /* table.cpp.c:290:3 */
   425  
   426  type _RuneRange = struct {
   427  	F__nranges int32
   428  	F__ranges  uintptr
   429  } /* table.cpp.c:295:3 */
   430  
   431  type _RuneLocale = struct {
   432  	F__magic        [8]uint8
   433  	F__encoding     [32]uint8
   434  	F__sgetrune     uintptr
   435  	F__sputrune     uintptr
   436  	F__invalid_rune int32
   437  	F__runetype     [256]uint32
   438  	F__maplower     [256]int32
   439  	F__mapupper     [256]int32
   440  	F__runetype_ext _RuneRange
   441  	F__maplower_ext _RuneRange
   442  	F__mapupper_ext _RuneRange
   443  	F__variable     uintptr
   444  	F__variable_len int32
   445  } /* table.cpp.c:320:3 */
   446  ///
   447  ///	extern const _RuneLocale _DefaultRuneLocale;
   448  ///	extern const _RuneLocale *_CurrentRuneLocale;
   449  ///
   450  ///
   451  ///
   452  ///	extern _Thread_local const _RuneLocale *_ThreadRuneLocale;
   453  ///	static __inline const _RuneLocale *__getCurrentRuneLocale(void)
   454  ///	{
   455  ///
   456  ///	 if (_ThreadRuneLocale)
   457  ///	  return _ThreadRuneLocale;
   458  ///	 return _CurrentRuneLocale;
   459  ///	}
   460  ///
   461  ///
   462  ///
   463  ///
   464  ///
   465  ///	static __inline int
   466  ///	__maskrune(__ct_rune_t _c, unsigned long _f)
   467  ///	{
   468  ///	 return ((_c < 0 || _c >= (1 <<8 )) ? ___runetype(_c) :
   469  ///	  (__getCurrentRuneLocale())->__runetype[_c]) & _f;
   470  ///	}
   471  ///
   472  ///	static __inline int
   473  ///	__sbmaskrune(__ct_rune_t _c, unsigned long _f)
   474  ///	{
   475  ///	 return (_c < 0 || _c >= __mb_sb_limit) ? 0 :
   476  ///	        (__getCurrentRuneLocale())->__runetype[_c] & _f;
   477  ///	}
   478  ///
   479  ///	static __inline int
   480  ///	__istype(__ct_rune_t _c, unsigned long _f)
   481  ///	{
   482  ///	 return (!!__maskrune(_c, _f));
   483  ///	}
   484  ///
   485  ///	static __inline int
   486  ///	__sbistype(__ct_rune_t _c, unsigned long _f)
   487  ///	{
   488  ///	 return (!!__sbmaskrune(_c, _f));
   489  ///	}
   490  ///
   491  ///	static __inline int
   492  ///	__isctype(__ct_rune_t _c, unsigned long _f)
   493  ///	{
   494  ///	 return (_c < 0 || _c >= 128) ? 0 :
   495  ///	        !!(_DefaultRuneLocale.__runetype[_c] & _f);
   496  ///	}
   497  ///
   498  ///	static __inline __ct_rune_t
   499  ///	__toupper(__ct_rune_t _c)
   500  ///	{
   501  ///	 return (_c < 0 || _c >= (1 <<8 )) ? ___toupper(_c) :
   502  ///	        (__getCurrentRuneLocale())->__mapupper[_c];
   503  ///	}
   504  ///
   505  ///	static __inline __ct_rune_t
   506  ///	__sbtoupper(__ct_rune_t _c)
   507  ///	{
   508  ///	 return (_c < 0 || _c >= __mb_sb_limit) ? _c :
   509  ///	        (__getCurrentRuneLocale())->__mapupper[_c];
   510  ///	}
   511  ///
   512  ///	static __inline __ct_rune_t
   513  ///	__tolower(__ct_rune_t _c)
   514  ///	{
   515  ///	 return (_c < 0 || _c >= (1 <<8 )) ? ___tolower(_c) :
   516  ///	        (__getCurrentRuneLocale())->__maplower[_c];
   517  ///	}
   518  ///
   519  ///	static __inline __ct_rune_t
   520  ///	__sbtolower(__ct_rune_t _c)
   521  ///	{
   522  ///	 return (_c < 0 || _c >= __mb_sb_limit) ? _c :
   523  ///	        (__getCurrentRuneLocale())->__maplower[_c];
   524  ///	}
   525  ///
   526  ///	static __inline int
   527  ///	__wcwidth(__ct_rune_t _c)
   528  ///	{
   529  ///	 unsigned int _x;
   530  ///
   531  ///	 if (_c == 0)
   532  ///	  return (0);
   533  ///	 _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L);
   534  ///	 if ((_x & 0xe0000000L) != 0)
   535  ///	  return ((_x & 0xe0000000L) >> 30);
   536  ///	 return ((_x & 0x00040000L) != 0 ? 1 : -1);
   537  ///	}
   538  ///
   539  ///
   540  ///
   541  ///	int isalnum(int);
   542  ///	int isalpha(int);
   543  ///	int iscntrl(int);
   544  ///	int isdigit(int);
   545  ///	int isgraph(int);
   546  ///	int islower(int);
   547  ///	int isprint(int);
   548  ///	int ispunct(int);
   549  ///	int isspace(int);
   550  ///	int isupper(int);
   551  ///	int isxdigit(int);
   552  ///	int tolower(int);
   553  ///	int toupper(int);
   554  ///
   555  ///
   556  ///	int isascii(int);
   557  ///	int toascii(int);
   558  ///
   559  ///
   560  ///
   561  ///	int isblank(int);
   562  ///
   563  ///
   564  ///
   565  ///	int digittoint(int);
   566  ///	int ishexnumber(int);
   567  ///	int isideogram(int);
   568  ///	int isnumber(int);
   569  ///	int isphonogram(int);
   570  ///	int isrune(int);
   571  ///	int isspecial(int);
   572  ///
   573  ///
   574  ///
   575  ///
   576  ///
   577  ///	typedef struct _xlocale *locale_t;
   578  ///
   579  ///
   580  ///
   581  ///
   582  ///	unsigned long ___runetype_l(__ct_rune_t, locale_t) __attribute__((__pure__));
   583  ///	__ct_rune_t ___tolower_l(__ct_rune_t, locale_t) __attribute__((__pure__));
   584  ///	__ct_rune_t ___toupper_l(__ct_rune_t, locale_t) __attribute__((__pure__));
   585  ///	_RuneLocale *__runes_for_locale(locale_t, int*);
   586  ///
   587  ///	inline int
   588  ///	__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
   589  ///	inline int
   590  ///	__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc);
   591  ///
   592  ///	inline int
   593  ///	__sbmaskrune_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
   594  ///	{
   595  ///	 int __limit;
   596  ///	 _RuneLocale *runes = __runes_for_locale(__loc, &__limit);
   597  ///	 return (__c < 0 || __c >= __limit) ? 0 :
   598  ///	        runes->__runetype[__c] & __f;
   599  ///	}
   600  ///
   601  ///	inline int
   602  ///	__sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
   603  ///	{
   604  ///	 return (!!__sbmaskrune_l(__c, __f, __loc));
   605  ///	}
   606  ///
   607  ///
   608  ///
   609  ///
   610  ///
   611  ///
   612  ///
   613  ///	inline int isalnum_l(int, locale_t); inline int isalnum_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000100L|0x00000400L|0x00400000L, __l); }
   614  ///	inline int isalpha_l(int, locale_t); inline int isalpha_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000100L, __l); }
   615  ///	inline int isblank_l(int, locale_t); inline int isblank_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00020000L, __l); }
   616  ///	inline int iscntrl_l(int, locale_t); inline int iscntrl_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000200L, __l); }
   617  ///	inline int isdigit_l(int, locale_t); inline int isdigit_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000400L, __l); }
   618  ///	inline int isgraph_l(int, locale_t); inline int isgraph_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000800L, __l); }
   619  ///	inline int ishexnumber_l(int, locale_t); inline int ishexnumber_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00010000L, __l); }
   620  ///	inline int isideogram_l(int, locale_t); inline int isideogram_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00080000L, __l); }
   621  ///	inline int islower_l(int, locale_t); inline int islower_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00001000L, __l); }
   622  ///	inline int isnumber_l(int, locale_t); inline int isnumber_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00000400L|0x00400000L, __l); }
   623  ///	inline int isphonogram_l(int, locale_t); inline int isphonogram_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00200000L, __l); }
   624  ///	inline int isprint_l(int, locale_t); inline int isprint_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00040000L, __l); }
   625  ///	inline int ispunct_l(int, locale_t); inline int ispunct_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00002000L, __l); }
   626  ///	inline int isrune_l(int, locale_t); inline int isrune_l(int __c, locale_t __l) { return __sbistype_l(__c, 0xFFFFFF00L, __l); }
   627  ///	inline int isspace_l(int, locale_t); inline int isspace_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00004000L, __l); }
   628  ///	inline int isspecial_l(int, locale_t); inline int isspecial_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00100000L, __l); }
   629  ///	inline int isupper_l(int, locale_t); inline int isupper_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00008000L, __l); }
   630  ///	inline int isxdigit_l(int, locale_t); inline int isxdigit_l(int __c, locale_t __l) { return __sbistype_l(__c, 0x00010000L, __l); }
   631  ///
   632  ///	inline int digittoint_l(int, locale_t);
   633  ///	inline int tolower_l(int, locale_t);
   634  ///	inline int toupper_l(int, locale_t);
   635  ///
   636  ///	inline int digittoint_l(int __c, locale_t __l)
   637  ///	{ return __sbmaskrune_l((__c), 0xFF, __l); }
   638  ///
   639  ///	inline int tolower_l(int __c, locale_t __l)
   640  ///	{
   641  ///	 int __limit;
   642  ///	 _RuneLocale *__runes = __runes_for_locale(__l, &__limit);
   643  ///	 return (__c < 0 || __c >= __limit) ? __c :
   644  ///	        __runes->__maplower[__c];
   645  ///	}
   646  ///	inline int toupper_l(int __c, locale_t __l)
   647  ///	{
   648  ///	 int __limit;
   649  ///	 _RuneLocale *__runes = __runes_for_locale(__l, &__limit);
   650  ///	 return (__c < 0 || __c >= __limit) ? __c :
   651  ///	        __runes->__mapupper[__c];
   652  ///	}
   653  ///
   654  ///
   655  ///
   656  ///
   657  ///
   658  ///
   659  ///
   660  ///
   661  ///
   662  ///
   663  ///
   664  ///
   665  ///
   666  ///
   667  ///
   668  ///	typedef __mbstate_t mbstate_t;
   669  ///
   670  ///
   671  ///
   672  ///
   673  ///	typedef __size_t size_t;
   674  ///
   675  ///
   676  ///
   677  ///
   678  ///
   679  ///	typedef __va_list va_list;
   680  ///
   681  ///
   682  ///
   683  ///
   684  ///
   685  ///
   686  ///	typedef ___wchar_t wchar_t;
   687  ///
   688  ///
   689  ///
   690  ///
   691  ///
   692  ///	typedef __wint_t wint_t;
   693  ///
   694  ///	typedef struct __sFILE FILE;
   695  ///
   696  ///	struct tm;
   697  ///
   698  ///
   699  ///	wint_t btowc(int);
   700  ///	wint_t fgetwc(FILE *);
   701  ///	wchar_t *
   702  ///	 fgetws(wchar_t * restrict, int, FILE * restrict);
   703  ///	wint_t fputwc(wchar_t, FILE *);
   704  ///	int fputws(const wchar_t * restrict, FILE * restrict);
   705  ///	int fwide(FILE *, int);
   706  ///	int fwprintf(FILE * restrict, const wchar_t * restrict, ...);
   707  ///	int fwscanf(FILE * restrict, const wchar_t * restrict, ...);
   708  ///	wint_t getwc(FILE *);
   709  ///	wint_t getwchar(void);
   710  ///	size_t mbrlen(const char * restrict, size_t, mbstate_t * restrict);
   711  ///	size_t mbrtowc(wchar_t * restrict, const char * restrict, size_t,
   712  ///	     mbstate_t * restrict);
   713  ///	int mbsinit(const mbstate_t *);
   714  ///	size_t mbsrtowcs(wchar_t * restrict, const char ** restrict, size_t,
   715  ///	     mbstate_t * restrict);
   716  ///	wint_t putwc(wchar_t, FILE *);
   717  ///	wint_t putwchar(wchar_t);
   718  ///	int swprintf(wchar_t * restrict, size_t n, const wchar_t * restrict,
   719  ///	     ...);
   720  ///	int swscanf(const wchar_t * restrict, const wchar_t * restrict, ...);
   721  ///	wint_t ungetwc(wint_t, FILE *);
   722  ///	int vfwprintf(FILE * restrict, const wchar_t * restrict,
   723  ///	     __va_list);
   724  ///	int vswprintf(wchar_t * restrict, size_t n, const wchar_t * restrict,
   725  ///	     __va_list);
   726  ///	int vwprintf(const wchar_t * restrict, __va_list);
   727  ///	size_t wcrtomb(char * restrict, wchar_t, mbstate_t * restrict);
   728  ///	wchar_t *wcscat(wchar_t * restrict, const wchar_t * restrict);
   729  ///	wchar_t *wcschr(const wchar_t *, wchar_t) __attribute__((__pure__));
   730  ///	int wcscmp(const wchar_t *, const wchar_t *) __attribute__((__pure__));
   731  ///	int wcscoll(const wchar_t *, const wchar_t *);
   732  ///	wchar_t *wcscpy(wchar_t * restrict, const wchar_t * restrict);
   733  ///	size_t wcscspn(const wchar_t *, const wchar_t *) __attribute__((__pure__));
   734  ///	size_t wcsftime(wchar_t * restrict, size_t, const wchar_t * restrict,
   735  ///	     const struct tm * restrict);
   736  ///	size_t wcslen(const wchar_t *) __attribute__((__pure__));
   737  ///	wchar_t *wcsncat(wchar_t * restrict, const wchar_t * restrict,
   738  ///	     size_t);
   739  ///	int wcsncmp(const wchar_t *, const wchar_t *, size_t) __attribute__((__pure__));
   740  ///	wchar_t *wcsncpy(wchar_t * restrict , const wchar_t * restrict, size_t);
   741  ///	wchar_t *wcspbrk(const wchar_t *, const wchar_t *) __attribute__((__pure__));
   742  ///	wchar_t *wcsrchr(const wchar_t *, wchar_t) __attribute__((__pure__));
   743  ///	size_t wcsrtombs(char * restrict, const wchar_t ** restrict, size_t,
   744  ///	     mbstate_t * restrict);
   745  ///	size_t wcsspn(const wchar_t *, const wchar_t *) __attribute__((__pure__));
   746  ///	wchar_t *wcsstr(const wchar_t * restrict, const wchar_t * restrict)
   747  ///	     __attribute__((__pure__));
   748  ///	size_t wcsxfrm(wchar_t * restrict, const wchar_t * restrict, size_t);
   749  ///	int wctob(wint_t);
   750  ///	double wcstod(const wchar_t * restrict, wchar_t ** restrict);
   751  ///	wchar_t *wcstok(wchar_t * restrict, const wchar_t * restrict,
   752  ///	     wchar_t ** restrict);
   753  ///	long wcstol(const wchar_t * restrict, wchar_t ** restrict, int);
   754  ///	unsigned long
   755  ///	  wcstoul(const wchar_t * restrict, wchar_t ** restrict, int);
   756  ///	wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) __attribute__((__pure__));
   757  ///	int wmemcmp(const wchar_t *, const wchar_t *, size_t) __attribute__((__pure__));
   758  ///	wchar_t *wmemcpy(wchar_t * restrict, const wchar_t * restrict, size_t);
   759  ///	wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
   760  ///	wchar_t *wmemset(wchar_t *, wchar_t, size_t);
   761  ///	int wprintf(const wchar_t * restrict, ...);
   762  ///	int wscanf(const wchar_t * restrict, ...);
   763  ///
   764  ///
   765  ///	extern FILE *__stdinp;
   766  ///	extern FILE *__stdoutp;
   767  ///	extern FILE *__stderrp;
   768  ///
   769  ///	int vfwscanf(FILE * restrict, const wchar_t * restrict,
   770  ///	     __va_list);
   771  ///	int vswscanf(const wchar_t * restrict, const wchar_t * restrict,
   772  ///	     __va_list);
   773  ///	int vwscanf(const wchar_t * restrict, __va_list);
   774  ///	float wcstof(const wchar_t * restrict, wchar_t ** restrict);
   775  ///	long double
   776  ///	 wcstold(const wchar_t * restrict, wchar_t ** restrict);
   777  ///
   778  ///
   779  ///	long long
   780  ///	 wcstoll(const wchar_t * restrict, wchar_t ** restrict, int);
   781  ///
   782  ///	unsigned long long
   783  ///	  wcstoull(const wchar_t * restrict, wchar_t ** restrict, int);
   784  ///
   785  ///
   786  ///
   787  ///
   788  ///	int wcswidth(const wchar_t *, size_t);
   789  ///	int wcwidth(wchar_t);
   790  ///
   791  ///
   792  ///
   793  ///
   794  ///	size_t mbsnrtowcs(wchar_t * restrict, const char ** restrict, size_t,
   795  ///	     size_t, mbstate_t * restrict);
   796  ///	FILE *open_wmemstream(wchar_t **, size_t *);
   797  ///	wchar_t *wcpcpy(wchar_t * restrict, const wchar_t * restrict);
   798  ///	wchar_t *wcpncpy(wchar_t * restrict, const wchar_t * restrict, size_t);
   799  ///	wchar_t *wcsdup(const wchar_t *) __attribute__((__malloc__));
   800  ///	int wcscasecmp(const wchar_t *, const wchar_t *);
   801  ///	int wcsncasecmp(const wchar_t *, const wchar_t *, size_t n);
   802  ///	size_t wcsnlen(const wchar_t *, size_t) __attribute__((__pure__));
   803  ///	size_t wcsnrtombs(char * restrict, const wchar_t ** restrict, size_t,
   804  ///	     size_t, mbstate_t * restrict);
   805  ///
   806  ///
   807  ///
   808  ///	wchar_t *fgetwln(FILE * restrict, size_t * restrict);
   809  ///	size_t wcslcat(wchar_t *, const wchar_t *, size_t);
   810  ///	size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
   811  ///
   812  ///
   813  ///
   814  ///
   815  ///
   816  ///	int wcscasecmp_l(const wchar_t *, const wchar_t *,
   817  ///	      locale_t);
   818  ///	int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t,
   819  ///	      locale_t);
   820  ///	int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
   821  ///	size_t wcsxfrm_l(wchar_t * restrict,
   822  ///	      const wchar_t * restrict, size_t, locale_t);
   823  ///
   824  ///
   825  ///
   826  ///
   827  ///
   828  ///
   829  ///
   830  ///
   831  ///
   832  ///
   833  ///
   834  ///
   835  ///	struct lconv {
   836  ///	 char *decimal_point;
   837  ///	 char *thousands_sep;
   838  ///	 char *grouping;
   839  ///	 char *int_curr_symbol;
   840  ///	 char *currency_symbol;
   841  ///	 char *mon_decimal_point;
   842  ///	 char *mon_thousands_sep;
   843  ///	 char *mon_grouping;
   844  ///	 char *positive_sign;
   845  ///	 char *negative_sign;
   846  ///	 char int_frac_digits;
   847  ///	 char frac_digits;
   848  ///	 char p_cs_precedes;
   849  ///	 char p_sep_by_space;
   850  ///	 char n_cs_precedes;
   851  ///	 char n_sep_by_space;
   852  ///	 char p_sign_posn;
   853  ///	 char n_sign_posn;
   854  ///	 char int_p_cs_precedes;
   855  ///	 char int_n_cs_precedes;
   856  ///	 char int_p_sep_by_space;
   857  ///	 char int_n_sep_by_space;
   858  ///	 char int_p_sign_posn;
   859  ///	 char int_n_sign_posn;
   860  ///	};
   861  ///
   862  ///
   863  ///	struct lconv *localeconv(void);
   864  ///	char *setlocale(int, const char *);
   865  ///
   866  ///
   867  ///
   868  ///
   869  ///	locale_t duplocale(locale_t base);
   870  ///	void freelocale(locale_t loc);
   871  ///	locale_t newlocale(int mask, const char *locale, locale_t base);
   872  ///	const char *querylocale(int mask, locale_t loc);
   873  ///	locale_t uselocale(locale_t loc);
   874  ///
   875  ///
   876  ///
   877  ///
   878  ///
   879  ///
   880  ///
   881  ///
   882  ///
   883  ///
   884  ///
   885  ///	wint_t btowc_l(int, locale_t);
   886  ///	wint_t fgetwc_l(FILE *, locale_t);
   887  ///	wchar_t *fgetws_l(wchar_t * restrict, int, FILE * restrict,
   888  ///	       locale_t);
   889  ///	wint_t fputwc_l(wchar_t, FILE *, locale_t);
   890  ///	int fputws_l(const wchar_t * restrict, FILE * restrict,
   891  ///	      locale_t);
   892  ///	int fwprintf_l(FILE * restrict, locale_t,
   893  ///	       const wchar_t * restrict, ...);
   894  ///	int fwscanf_l(FILE * restrict, locale_t,
   895  ///	       const wchar_t * restrict, ...);
   896  ///	wint_t getwc_l(FILE *, locale_t);
   897  ///	wint_t getwchar_l(locale_t);
   898  ///	size_t mbrlen_l(const char * restrict, size_t,
   899  ///	      mbstate_t * restrict, locale_t);
   900  ///	size_t mbrtowc_l(wchar_t * restrict,
   901  ///	       const char * restrict, size_t,
   902  ///	       mbstate_t * restrict, locale_t);
   903  ///	int mbsinit_l(const mbstate_t *, locale_t);
   904  ///	size_t mbsrtowcs_l(wchar_t * restrict,
   905  ///	       const char ** restrict, size_t,
   906  ///	       mbstate_t * restrict, locale_t);
   907  ///	wint_t putwc_l(wchar_t, FILE *, locale_t);
   908  ///	wint_t putwchar_l(wchar_t, locale_t);
   909  ///	int swprintf_l(wchar_t * restrict, size_t n, locale_t,
   910  ///	       const wchar_t * restrict, ...);
   911  ///	int swscanf_l(const wchar_t * restrict, locale_t,
   912  ///	      const wchar_t * restrict, ...);
   913  ///	wint_t ungetwc_l(wint_t, FILE *, locale_t);
   914  ///	int vfwprintf_l(FILE * restrict, locale_t,
   915  ///	       const wchar_t * restrict, __va_list);
   916  ///	int vswprintf_l(wchar_t * restrict, size_t n, locale_t,
   917  ///	       const wchar_t * restrict, __va_list);
   918  ///	int vwprintf_l(locale_t, const wchar_t * restrict,
   919  ///	       __va_list);
   920  ///	size_t wcrtomb_l(char * restrict, wchar_t,
   921  ///	       mbstate_t * restrict, locale_t);
   922  ///	size_t wcsftime_l(wchar_t * restrict, size_t,
   923  ///	       const wchar_t * restrict,
   924  ///	       const struct tm * restrict, locale_t);
   925  ///	size_t wcsrtombs_l(char * restrict,
   926  ///	       const wchar_t ** restrict, size_t,
   927  ///	       mbstate_t * restrict, locale_t);
   928  ///	double wcstod_l(const wchar_t * restrict,
   929  ///	       wchar_t ** restrict, locale_t);
   930  ///	long wcstol_l(const wchar_t * restrict,
   931  ///	       wchar_t ** restrict, int, locale_t);
   932  ///	unsigned long wcstoul_l(const wchar_t * restrict,
   933  ///	       wchar_t ** restrict, int, locale_t);
   934  ///	int wcswidth_l(const wchar_t *, size_t, locale_t);
   935  ///	int wctob_l(wint_t, locale_t);
   936  ///	int wcwidth_l(wchar_t, locale_t);
   937  ///	int wprintf_l(locale_t, const wchar_t * restrict, ...);
   938  ///	int wscanf_l(locale_t, const wchar_t * restrict, ...);
   939  ///	int vfwscanf_l(FILE * restrict, locale_t,
   940  ///	       const wchar_t * restrict, __va_list);
   941  ///	int vswscanf_l(const wchar_t * restrict, locale_t,
   942  ///	       const wchar_t *restrict, __va_list);
   943  ///	int vwscanf_l(locale_t, const wchar_t * restrict,
   944  ///	       __va_list);
   945  ///	float wcstof_l(const wchar_t * restrict,
   946  ///	       wchar_t ** restrict, locale_t);
   947  ///	long double wcstold_l(const wchar_t * restrict,
   948  ///	       wchar_t ** restrict, locale_t);
   949  ///	long long wcstoll_l(const wchar_t * restrict,
   950  ///	       wchar_t ** restrict, int, locale_t);
   951  ///	unsigned long long wcstoull_l(const wchar_t * restrict,
   952  ///	       wchar_t ** restrict, int, locale_t);
   953  ///	size_t mbsnrtowcs_l(wchar_t * restrict,
   954  ///	       const char ** restrict, size_t, size_t,
   955  ///	       mbstate_t * restrict, locale_t);
   956  ///	size_t wcsnrtombs_l(char * restrict,
   957  ///	       const wchar_t ** restrict, size_t, size_t,
   958  ///	       mbstate_t * restrict, locale_t);
   959  ///
   960  ///
   961  ///
   962  ///
   963  ///
   964  ///	struct lconv *localeconv_l(locale_t);
   965  ///
   966  ///
   967  ///
   968  ///
   969  ///
   970  ///
   971  ///
   972  ///
   973  ///
   974  ///	typedef __rune_t rune_t;
   975  ///
   976  ///	typedef struct {
   977  ///	 int quot;
   978  ///	 int rem;
   979  ///	} div_t;
   980  ///
   981  ///	typedef struct {
   982  ///	 long quot;
   983  ///	 long rem;
   984  ///	} ldiv_t;
   985  ///
   986  ///
   987  ///
   988  ///
   989  ///
   990  ///	double atof_l(const char *, locale_t);
   991  ///	int atoi_l(const char *, locale_t);
   992  ///	long atol_l(const char *, locale_t);
   993  ///	long long atoll_l(const char *, locale_t);
   994  ///	int mblen_l(const char *, size_t, locale_t);
   995  ///	size_t mbstowcs_l(wchar_t * restrict,
   996  ///	       const char * restrict, size_t, locale_t);
   997  ///	int mbtowc_l(wchar_t * restrict,
   998  ///	       const char * restrict, size_t, locale_t);
   999  ///	double strtod_l(const char *, char **, locale_t);
  1000  ///	float strtof_l(const char *, char **, locale_t);
  1001  ///	long strtol_l(const char *, char **, int, locale_t);
  1002  ///	long double strtold_l(const char *, char **, locale_t);
  1003  ///	long long strtoll_l(const char *, char **, int, locale_t);
  1004  ///	unsigned long strtoul_l(const char *, char **, int, locale_t);
  1005  ///	unsigned long long strtoull_l(const char *, char **, int, locale_t);
  1006  ///	size_t wcstombs_l(char * restrict,
  1007  ///	       const wchar_t * restrict, size_t, locale_t);
  1008  ///	int wctomb_l(char *, wchar_t, locale_t);
  1009  ///
  1010  ///	int ___mb_cur_max_l(locale_t);
  1011  ///
  1012  ///
  1013  ///	extern int __mb_cur_max;
  1014  ///	extern int ___mb_cur_max(void);
  1015  ///
  1016  ///
  1017  ///	_Noreturn void abort(void);
  1018  ///	int abs(int) __attribute__((__const__));
  1019  ///	int atexit(void (* )(void));
  1020  ///	double atof(const char *);
  1021  ///	int atoi(const char *);
  1022  ///	long atol(const char *);
  1023  ///	void *bsearch(const void *, const void *, size_t,
  1024  ///	     size_t, int (*)(const void * , const void *));
  1025  ///	void *calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
  1026  ///	      __attribute__((__alloc_size__(1, 2)));
  1027  ///	div_t div(int, int) __attribute__((__const__));
  1028  ///	_Noreturn void exit(int);
  1029  ///	void free(void *);
  1030  ///	char *getenv(const char *);
  1031  ///	long labs(long) __attribute__((__const__));
  1032  ///	ldiv_t ldiv(long, long) __attribute__((__const__));
  1033  ///	void *malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1)));
  1034  ///	int mblen(const char *, size_t);
  1035  ///	size_t mbstowcs(wchar_t * restrict , const char * restrict, size_t);
  1036  ///	int mbtowc(wchar_t * restrict, const char * restrict, size_t);
  1037  ///	void qsort(void *, size_t, size_t,
  1038  ///	     int (* )(const void *, const void *));
  1039  ///	int rand(void);
  1040  ///	void *realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)));
  1041  ///	void srand(unsigned);
  1042  ///	double strtod(const char * restrict, char ** restrict);
  1043  ///	float strtof(const char * restrict, char ** restrict);
  1044  ///	long strtol(const char * restrict, char ** restrict, int);
  1045  ///	long double
  1046  ///	  strtold(const char * restrict, char ** restrict);
  1047  ///	unsigned long
  1048  ///	  strtoul(const char * restrict, char ** restrict, int);
  1049  ///	int system(const char *);
  1050  ///	int wctomb(char *, wchar_t);
  1051  ///	size_t wcstombs(char * restrict, const wchar_t * restrict, size_t);
  1052  ///
  1053  ///	typedef struct {
  1054  ///	 long long quot;
  1055  ///	 long long rem;
  1056  ///	} lldiv_t;
  1057  ///
  1058  ///
  1059  ///	long long
  1060  ///	  atoll(const char *);
  1061  ///
  1062  ///	long long
  1063  ///	  llabs(long long) __attribute__((__const__));
  1064  ///
  1065  ///	lldiv_t lldiv(long long, long long) __attribute__((__const__));
  1066  ///
  1067  ///	long long
  1068  ///	  strtoll(const char * restrict, char ** restrict, int);
  1069  ///
  1070  ///	unsigned long long
  1071  ///	  strtoull(const char * restrict, char ** restrict, int);
  1072  ///
  1073  ///
  1074  ///	_Noreturn void _Exit(int);
  1075  ///
  1076  ///
  1077  ///
  1078  ///
  1079  ///
  1080  ///
  1081  ///	void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1)))
  1082  ///	     __attribute__((__alloc_size__(2)));
  1083  ///	int at_quick_exit(void (*)(void));
  1084  ///	_Noreturn void
  1085  ///	 quick_exit(int);
  1086  ///
  1087  ///
  1088  ///
  1089  ///
  1090  ///
  1091  ///	char *realpath(const char * restrict, char * restrict);
  1092  ///
  1093  ///
  1094  ///	int rand_r(unsigned *);
  1095  ///
  1096  ///
  1097  ///	int posix_memalign(void **, size_t, size_t);
  1098  ///	int setenv(const char *, const char *, int);
  1099  ///	int unsetenv(const char *);
  1100  ///
  1101  ///
  1102  ///
  1103  ///	int getsubopt(char **, char *const *, char **);
  1104  ///
  1105  ///	char *mkdtemp(char *);
  1106  ///
  1107  ///
  1108  ///
  1109  ///	int mkstemp(char *);
  1110  ///
  1111  ///	long a64l(const char *);
  1112  ///	double drand48(void);
  1113  ///
  1114  ///	double erand48(unsigned short[3]);
  1115  ///
  1116  ///
  1117  ///	char *initstate(unsigned int, char *, size_t);
  1118  ///	long jrand48(unsigned short[3]);
  1119  ///	char *l64a(long);
  1120  ///	void lcong48(unsigned short[7]);
  1121  ///	long lrand48(void);
  1122  ///
  1123  ///	char *mktemp(char *);
  1124  ///
  1125  ///
  1126  ///	long mrand48(void);
  1127  ///	long nrand48(unsigned short[3]);
  1128  ///	int putenv(char *);
  1129  ///	long random(void);
  1130  ///	unsigned short
  1131  ///	 *seed48(unsigned short[3]);
  1132  ///	char *setstate( char *);
  1133  ///	void srand48(long);
  1134  ///	void srandom(unsigned int);
  1135  ///
  1136  ///
  1137  ///
  1138  ///	int grantpt(int);
  1139  ///	int posix_openpt(int);
  1140  ///	char *ptsname(int);
  1141  ///	int unlockpt(int);
  1142  ///
  1143  ///
  1144  ///
  1145  ///	int ptsname_r(int, char *, size_t);
  1146  ///
  1147  ///
  1148  ///
  1149  ///	extern const char *malloc_conf;
  1150  ///	extern void (*malloc_message)(void *, const char *);
  1151  ///
  1152  ///	void abort2(const char *, int, void **) __attribute__((__noreturn__));
  1153  ///	__uint32_t
  1154  ///	  arc4random(void);
  1155  ///	void arc4random_buf(void *, size_t);
  1156  ///	__uint32_t
  1157  ///	  arc4random_uniform(__uint32_t);
  1158  ///
  1159  ///
  1160  ///
  1161  ///
  1162  ///
  1163  ///
  1164  ///	char *getbsize(int *, long *);
  1165  ///
  1166  ///	char *cgetcap(char *, const char *, int);
  1167  ///	int cgetclose(void);
  1168  ///	int cgetent(char **, char **, const char *);
  1169  ///	int cgetfirst(char **, char **);
  1170  ///	int cgetmatch(const char *, const char *);
  1171  ///	int cgetnext(char **, char **);
  1172  ///	int cgetnum(char *, const char *, long *);
  1173  ///	int cgetset(const char *);
  1174  ///	int cgetstr(char *, const char *, char **);
  1175  ///	int cgetustr(char *, const char *, char **);
  1176  ///
  1177  ///	int daemon(int, int);
  1178  ///	int daemonfd(int, int);
  1179  ///	char *devname(__dev_t, __mode_t);
  1180  ///	char *devname_r(__dev_t, __mode_t, char *, int);
  1181  ///	char *fdevname(int);
  1182  ///	char *fdevname_r(int, char *, int);
  1183  ///	int getloadavg(double [], int);
  1184  ///	const char *
  1185  ///	  getprogname(void);
  1186  ///
  1187  ///	int heapsort(void *, size_t, size_t,
  1188  ///	     int (* )(const void *, const void *));
  1189  ///
  1190  ///
  1191  ///
  1192  ///
  1193  ///
  1194  ///
  1195  ///	int l64a_r(long, char *, int);
  1196  ///	int mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
  1197  ///
  1198  ///
  1199  ///
  1200  ///	int mkostemp(char *, int);
  1201  ///	int mkostemps(char *, int, int);
  1202  ///	int mkostempsat(int, char *, int, int);
  1203  ///	void qsort_r(void *, size_t, size_t, void *,
  1204  ///	     int (*)(void *, const void *, const void *));
  1205  ///	int radixsort(const unsigned char **, int, const unsigned char *,
  1206  ///	     unsigned);
  1207  ///	void *reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__))
  1208  ///	     __attribute__((__alloc_size__(2, 3)));
  1209  ///	void *reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)));
  1210  ///	int rpmatch(const char *);
  1211  ///	void setprogname(const char *);
  1212  ///	int sradixsort(const unsigned char **, int, const unsigned char *,
  1213  ///	     unsigned);
  1214  ///	void srandomdev(void);
  1215  ///	long long
  1216  ///	 strtonum(const char *, long long, long long, const char **);
  1217  ///
  1218  ///
  1219  ///	__int64_t
  1220  ///	  strtoq(const char *, char **, int);
  1221  ///	__uint64_t
  1222  ///	  strtouq(const char *, char **, int);
  1223  ///
  1224  ///	extern char *suboptarg;
  1225  ///
  1226  ///
  1227  ///
  1228  ///
  1229  ///
  1230  ///
  1231  ///	typedef size_t rsize_t;
  1232  ///
  1233  ///
  1234  ///
  1235  ///
  1236  ///	typedef int errno_t;
  1237  ///
  1238  ///
  1239  ///
  1240  ///	typedef void (*constraint_handler_t)(const char * restrict,
  1241  ///	    void * restrict, errno_t);
  1242  ///
  1243  ///	constraint_handler_t set_constraint_handler_s(constraint_handler_t handler);
  1244  ///
  1245  ///	_Noreturn void abort_handler_s(const char * restrict, void * restrict,
  1246  ///	    errno_t);
  1247  ///
  1248  ///	void ignore_handler_s(const char * restrict, void * restrict, errno_t);
  1249  ///
  1250  ///	errno_t qsort_s(void *, rsize_t, rsize_t,
  1251  ///	    int (*)(const void *, const void *, void *), void *);
  1252  ///
  1253  ///
  1254  ///
  1255  ///
  1256  ///
  1257  ///
  1258  ///
  1259  ///
  1260  ///
  1261  ///
  1262  ///
  1263  ///
  1264  ///
  1265  ///
  1266  ///
  1267  ///
  1268  ///
  1269  ///
  1270  ///
  1271  ///
  1272  ///
  1273  ///
  1274  ///
  1275  ///	typedef __int8_t int8_t;
  1276  ///
  1277  ///
  1278  ///
  1279  ///
  1280  ///	typedef __int16_t int16_t;
  1281  ///
  1282  ///
  1283  ///
  1284  ///
  1285  ///	typedef __int32_t int32_t;
  1286  ///
  1287  ///
  1288  ///
  1289  ///
  1290  ///	typedef __int64_t int64_t;
  1291  ///
  1292  ///
  1293  ///
  1294  ///
  1295  ///	typedef __uint8_t uint8_t;
  1296  ///
  1297  ///
  1298  ///
  1299  ///
  1300  ///	typedef __uint16_t uint16_t;
  1301  ///
  1302  ///
  1303  ///
  1304  ///
  1305  ///	typedef __uint32_t uint32_t;
  1306  ///
  1307  ///
  1308  ///
  1309  ///
  1310  ///	typedef __uint64_t uint64_t;
  1311  ///
  1312  ///
  1313  ///
  1314  ///
  1315  ///	typedef __intptr_t intptr_t;
  1316  ///
  1317  ///
  1318  ///
  1319  ///	typedef __uintptr_t uintptr_t;
  1320  ///
  1321  ///
  1322  ///
  1323  ///	typedef __intmax_t intmax_t;
  1324  ///
  1325  ///
  1326  ///
  1327  ///	typedef __uintmax_t uintmax_t;
  1328  ///
  1329  ///
  1330  ///	typedef __int_least8_t int_least8_t;
  1331  ///	typedef __int_least16_t int_least16_t;
  1332  ///	typedef __int_least32_t int_least32_t;
  1333  ///	typedef __int_least64_t int_least64_t;
  1334  ///
  1335  ///	typedef __uint_least8_t uint_least8_t;
  1336  ///	typedef __uint_least16_t uint_least16_t;
  1337  ///	typedef __uint_least32_t uint_least32_t;
  1338  ///	typedef __uint_least64_t uint_least64_t;
  1339  ///
  1340  ///	typedef __int_fast8_t int_fast8_t;
  1341  ///	typedef __int_fast16_t int_fast16_t;
  1342  ///	typedef __int_fast32_t int_fast32_t;
  1343  ///	typedef __int_fast64_t int_fast64_t;
  1344  ///
  1345  ///	typedef __uint_fast8_t uint_fast8_t;
  1346  ///	typedef __uint_fast16_t uint_fast16_t;
  1347  ///	typedef __uint_fast32_t uint_fast32_t;
  1348  ///	typedef __uint_fast64_t uint_fast64_t;
  1349  ///
  1350  ///
  1351  ///
  1352  ///
  1353  ///
  1354  ///
  1355  ///
  1356  ///
  1357  ///
  1358  ///
  1359  ///
  1360  ///
  1361  ///
  1362  ///
  1363  ///
  1364  ///
  1365  ///
  1366  ///	struct pthread;
  1367  ///	struct pthread_attr;
  1368  ///	struct pthread_cond;
  1369  ///	struct pthread_cond_attr;
  1370  ///	struct pthread_mutex;
  1371  ///	struct pthread_mutex_attr;
  1372  ///	struct pthread_once;
  1373  ///	struct pthread_rwlock;
  1374  ///	struct pthread_rwlockattr;
  1375  ///	struct pthread_barrier;
  1376  ///	struct pthread_barrier_attr;
  1377  ///	struct pthread_spinlock;
  1378  ///
  1379  ///	typedef struct pthread *pthread_t;
  1380  ///
  1381  ///
  1382  ///	typedef struct pthread_attr *pthread_attr_t;
  1383  ///	typedef struct pthread_mutex *pthread_mutex_t;
  1384  ///	typedef struct pthread_mutex_attr *pthread_mutexattr_t;
  1385  ///	typedef struct pthread_cond *pthread_cond_t;
  1386  ///	typedef struct pthread_cond_attr *pthread_condattr_t;
  1387  ///	typedef int pthread_key_t;
  1388  ///	typedef struct pthread_once pthread_once_t;
  1389  ///	typedef struct pthread_rwlock *pthread_rwlock_t;
  1390  ///	typedef struct pthread_rwlockattr *pthread_rwlockattr_t;
  1391  ///	typedef struct pthread_barrier *pthread_barrier_t;
  1392  ///	typedef struct pthread_barrierattr *pthread_barrierattr_t;
  1393  ///	typedef struct pthread_spinlock *pthread_spinlock_t;
  1394  ///
  1395  ///
  1396  ///
  1397  ///
  1398  ///
  1399  ///
  1400  ///
  1401  ///	typedef void *pthread_addr_t;
  1402  ///	typedef void *(*pthread_startroutine_t)(void *);
  1403  ///
  1404  ///
  1405  ///
  1406  ///
  1407  ///	struct pthread_once {
  1408  ///	 int state;
  1409  ///	 pthread_mutex_t mutex;
  1410  ///	};
  1411  ///
  1412  ///
  1413  ///
  1414  ///	typedef unsigned char u_char;
  1415  ///	typedef unsigned short u_short;
  1416  ///	typedef unsigned int u_int;
  1417  ///	typedef unsigned long u_long;
  1418  ///
  1419  ///	typedef unsigned short ushort;
  1420  ///	typedef unsigned int uint;
  1421  ///
  1422  ///	typedef __uint8_t u_int8_t;
  1423  ///	typedef __uint16_t u_int16_t;
  1424  ///	typedef __uint32_t u_int32_t;
  1425  ///	typedef __uint64_t u_int64_t;
  1426  ///
  1427  ///	typedef __uint64_t u_quad_t;
  1428  ///	typedef __int64_t quad_t;
  1429  ///	typedef quad_t * qaddr_t;
  1430  ///
  1431  ///	typedef char * caddr_t;
  1432  ///	typedef const char * c_caddr_t;
  1433  ///
  1434  ///
  1435  ///	typedef __blksize_t blksize_t;
  1436  ///
  1437  ///
  1438  ///
  1439  ///	typedef __cpuwhich_t cpuwhich_t;
  1440  ///	typedef __cpulevel_t cpulevel_t;
  1441  ///	typedef __cpusetid_t cpusetid_t;
  1442  ///
  1443  ///
  1444  ///	typedef __blkcnt_t blkcnt_t;
  1445  ///
  1446  ///
  1447  ///
  1448  ///
  1449  ///	typedef __clock_t clock_t;
  1450  ///
  1451  ///
  1452  ///
  1453  ///
  1454  ///	typedef __clockid_t clockid_t;
  1455  ///
  1456  ///
  1457  ///
  1458  ///	typedef __critical_t critical_t;
  1459  ///	typedef __daddr_t daddr_t;
  1460  ///
  1461  ///
  1462  ///	typedef __dev_t dev_t;
  1463  ///
  1464  ///
  1465  ///
  1466  ///
  1467  ///	typedef __fflags_t fflags_t;
  1468  ///
  1469  ///
  1470  ///
  1471  ///	typedef __fixpt_t fixpt_t;
  1472  ///
  1473  ///
  1474  ///	typedef __fsblkcnt_t fsblkcnt_t;
  1475  ///	typedef __fsfilcnt_t fsfilcnt_t;
  1476  ///
  1477  ///
  1478  ///
  1479  ///
  1480  ///	typedef __gid_t gid_t;
  1481  ///
  1482  ///
  1483  ///
  1484  ///
  1485  ///	typedef __uint32_t in_addr_t;
  1486  ///
  1487  ///
  1488  ///
  1489  ///
  1490  ///	typedef __uint16_t in_port_t;
  1491  ///
  1492  ///
  1493  ///
  1494  ///
  1495  ///	typedef __id_t id_t;
  1496  ///
  1497  ///
  1498  ///
  1499  ///
  1500  ///	typedef __ino_t ino_t;
  1501  ///
  1502  ///
  1503  ///
  1504  ///
  1505  ///	typedef __key_t key_t;
  1506  ///
  1507  ///
  1508  ///
  1509  ///
  1510  ///	typedef __lwpid_t lwpid_t;
  1511  ///
  1512  ///
  1513  ///
  1514  ///
  1515  ///	typedef __mode_t mode_t;
  1516  ///
  1517  ///
  1518  ///
  1519  ///
  1520  ///	typedef __accmode_t accmode_t;
  1521  ///
  1522  ///
  1523  ///
  1524  ///
  1525  ///	typedef __nlink_t nlink_t;
  1526  ///
  1527  ///
  1528  ///
  1529  ///
  1530  ///	typedef __off_t off_t;
  1531  ///
  1532  ///
  1533  ///
  1534  ///
  1535  ///	typedef __off64_t off64_t;
  1536  ///
  1537  ///
  1538  ///
  1539  ///
  1540  ///	typedef __pid_t pid_t;
  1541  ///
  1542  ///
  1543  ///
  1544  ///	typedef __register_t register_t;
  1545  ///
  1546  ///
  1547  ///	typedef __rlim_t rlim_t;
  1548  ///
  1549  ///
  1550  ///
  1551  ///	typedef __int64_t sbintime_t;
  1552  ///
  1553  ///	typedef __segsz_t segsz_t;
  1554  ///
  1555  ///
  1556  ///
  1557  ///
  1558  ///
  1559  ///
  1560  ///
  1561  ///	typedef __ssize_t ssize_t;
  1562  ///
  1563  ///
  1564  ///
  1565  ///
  1566  ///	typedef __suseconds_t suseconds_t;
  1567  ///
  1568  ///
  1569  ///
  1570  ///
  1571  ///	typedef __time_t time_t;
  1572  ///
  1573  ///
  1574  ///
  1575  ///
  1576  ///	typedef __timer_t timer_t;
  1577  ///
  1578  ///
  1579  ///
  1580  ///
  1581  ///	typedef __mqd_t mqd_t;
  1582  ///
  1583  ///
  1584  ///
  1585  ///	typedef __u_register_t u_register_t;
  1586  ///
  1587  ///
  1588  ///	typedef __uid_t uid_t;
  1589  ///
  1590  ///
  1591  ///
  1592  ///
  1593  ///	typedef __useconds_t useconds_t;
  1594  ///
  1595  ///
  1596  ///
  1597  ///
  1598  ///
  1599  ///	typedef unsigned long cap_ioctl_t;
  1600  ///
  1601  ///
  1602  ///
  1603  ///
  1604  ///	struct cap_rights;
  1605  ///
  1606  ///	typedef struct cap_rights cap_rights_t;
  1607  ///
  1608  ///	typedef __uint64_t kpaddr_t;
  1609  ///	typedef __uint64_t kvaddr_t;
  1610  ///	typedef __uint64_t ksize_t;
  1611  ///	typedef __int64_t kssize_t;
  1612  ///
  1613  ///	typedef __vm_offset_t vm_offset_t;
  1614  ///	typedef __uint64_t vm_ooffset_t;
  1615  ///	typedef __vm_paddr_t vm_paddr_t;
  1616  ///	typedef __uint64_t vm_pindex_t;
  1617  ///	typedef __vm_size_t vm_size_t;
  1618  ///
  1619  ///	typedef __rman_res_t rman_res_t;
  1620  ///
  1621  ///	static __inline __uint16_t
  1622  ///	__bitcount16(__uint16_t _x)
  1623  ///	{
  1624  ///
  1625  ///	 _x = (_x & 0x5555) + ((_x & 0xaaaa) >> 1);
  1626  ///	 _x = (_x & 0x3333) + ((_x & 0xcccc) >> 2);
  1627  ///	 _x = (_x + (_x >> 4)) & 0x0f0f;
  1628  ///	 _x = (_x + (_x >> 8)) & 0x00ff;
  1629  ///	 return (_x);
  1630  ///	}
  1631  ///
  1632  ///	static __inline __uint32_t
  1633  ///	__bitcount32(__uint32_t _x)
  1634  ///	{
  1635  ///
  1636  ///	 _x = (_x & 0x55555555) + ((_x & 0xaaaaaaaa) >> 1);
  1637  ///	 _x = (_x & 0x33333333) + ((_x & 0xcccccccc) >> 2);
  1638  ///	 _x = (_x + (_x >> 4)) & 0x0f0f0f0f;
  1639  ///	 _x = (_x + (_x >> 8));
  1640  ///	 _x = (_x + (_x >> 16)) & 0x000000ff;
  1641  ///	 return (_x);
  1642  ///	}
  1643  ///
  1644  ///
  1645  ///	static __inline __uint64_t
  1646  ///	__bitcount64(__uint64_t _x)
  1647  ///	{
  1648  ///
  1649  ///	 _x = (_x & 0x5555555555555555) + ((_x & 0xaaaaaaaaaaaaaaaa) >> 1);
  1650  ///	 _x = (_x & 0x3333333333333333) + ((_x & 0xcccccccccccccccc) >> 2);
  1651  ///	 _x = (_x + (_x >> 4)) & 0x0f0f0f0f0f0f0f0f;
  1652  ///	 _x = (_x + (_x >> 8));
  1653  ///	 _x = (_x + (_x >> 16));
  1654  ///	 _x = (_x + (_x >> 32)) & 0x000000ff;
  1655  ///	 return (_x);
  1656  ///	}
  1657  ///
  1658  ///
  1659  ///
  1660  ///
  1661  ///
  1662  ///	typedef struct __sigset {
  1663  ///	 __uint32_t __bits[4];
  1664  ///	} __sigset_t;
  1665  ///
  1666  ///
  1667  ///
  1668  ///	struct timeval {
  1669  ///	 time_t tv_sec;
  1670  ///	 suseconds_t tv_usec;
  1671  ///	};
  1672  ///
  1673  ///
  1674  ///
  1675  ///
  1676  ///
  1677  ///	struct timespec {
  1678  ///	 time_t tv_sec;
  1679  ///	 long tv_nsec;
  1680  ///	};
  1681  ///
  1682  ///
  1683  ///	struct itimerspec {
  1684  ///	 struct timespec it_interval;
  1685  ///	 struct timespec it_value;
  1686  ///	};
  1687  ///
  1688  ///
  1689  ///	typedef unsigned long __fd_mask;
  1690  ///
  1691  ///	typedef __fd_mask fd_mask;
  1692  ///
  1693  ///
  1694  ///
  1695  ///
  1696  ///	typedef __sigset_t sigset_t;
  1697  ///
  1698  ///	typedef struct fd_set {
  1699  ///	 __fd_mask __fds_bits[(((1024) + (((sizeof(__fd_mask) * 8)) - 1)) / ((sizeof(__fd_mask) * 8)))];
  1700  ///	} fd_set;
  1701  ///
  1702  ///
  1703  ///	int pselect(int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
  1704  ///	 const struct timespec *restrict, const sigset_t *restrict);
  1705  ///
  1706  ///
  1707  ///
  1708  ///	int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
  1709  ///
  1710  ///
  1711  ///
  1712  ///
  1713  ///	static __inline int
  1714  ///	__major(dev_t _d)
  1715  ///	{
  1716  ///	 return (((_d >> 32) & 0xffffff00) | ((_d >> 8) & 0xff));
  1717  ///	}
  1718  ///
  1719  ///	static __inline int
  1720  ///	__minor(dev_t _d)
  1721  ///	{
  1722  ///	 return (((_d >> 24) & 0xff00) | (_d & 0xffff00ff));
  1723  ///	}
  1724  ///
  1725  ///	static __inline dev_t
  1726  ///	__makedev(int _Major, int _Minor)
  1727  ///	{
  1728  ///	 return (((dev_t)(_Major & 0xffffff00) << 32) | ((_Major & 0xff) << 8) |
  1729  ///	     ((dev_t)(_Minor & 0xff00) << 24) | (_Minor & 0xffff00ff));
  1730  ///	}
  1731  ///
  1732  ///
  1733  ///
  1734  ///
  1735  ///
  1736  ///
  1737  ///
  1738  ///
  1739  ///
  1740  ///
  1741  ///	int ftruncate(int, off_t);
  1742  ///
  1743  ///
  1744  ///
  1745  ///	off_t lseek(int, off_t, int);
  1746  ///
  1747  ///
  1748  ///
  1749  ///	void * mmap(void *, size_t, int, int, int, off_t);
  1750  ///
  1751  ///
  1752  ///
  1753  ///	int truncate(const char *, off_t);
  1754  ///
  1755  ///
  1756  ///
  1757  ///
  1758  ///
  1759  ///
  1760  ///
  1761  ///
  1762  ///	static __inline int atomic_cmpset_char(volatile u_char *dst, u_char expect, u_char src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;	" "# atomic_cmpset_" "char" "	" : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_char(volatile u_char *dst, u_char *expect, u_char src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;		" "# atomic_fcmpset_" "char" "	" : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); };
  1763  ///	static __inline int atomic_cmpset_short(volatile u_short *dst, u_short expect, u_short src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;	" "# atomic_cmpset_" "short" "	" : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_short(volatile u_short *dst, u_short *expect, u_short src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;		" "# atomic_fcmpset_" "short" "	" : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); };
  1764  ///	static __inline int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;	" "# atomic_cmpset_" "int" "	" : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_int(volatile u_int *dst, u_int *expect, u_int src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;		" "# atomic_fcmpset_" "int" "	" : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); };
  1765  ///	static __inline int atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;	" "# atomic_cmpset_" "long" "	" : "=@cce" (res), "+m" (*dst), "+a" (expect) : "r" (src) : "memory", "cc"); return (res); } static __inline int atomic_fcmpset_long(volatile u_long *dst, u_long *expect, u_long src) { u_char res; __asm volatile( "	" "lock ; " "		" "	cmpxchg %3,%1 ;		" "# atomic_fcmpset_" "long" "	" : "=@cce" (res), "+m" (*dst), "+a" (*expect) : "r" (src) : "memory", "cc"); return (res); };
  1766  ///
  1767  ///
  1768  ///
  1769  ///
  1770  ///
  1771  ///	static __inline u_int
  1772  ///	atomic_fetchadd_int(volatile u_int *p, u_int v)
  1773  ///	{
  1774  ///
  1775  ///	 __asm volatile(
  1776  ///	 "	" "lock ; " "		"
  1777  ///	 "	xaddl	%0,%1 ;		"
  1778  ///	 "# atomic_fetchadd_int"
  1779  ///	 : "+r" (v),
  1780  ///	   "+m" (*p)
  1781  ///	 : : "cc");
  1782  ///	 return (v);
  1783  ///	}
  1784  ///
  1785  ///
  1786  ///
  1787  ///
  1788  ///
  1789  ///	static __inline u_long
  1790  ///	atomic_fetchadd_long(volatile u_long *p, u_long v)
  1791  ///	{
  1792  ///
  1793  ///	 __asm volatile(
  1794  ///	 "	" "lock ; " "		"
  1795  ///	 "	xaddq	%0,%1 ;		"
  1796  ///	 "# atomic_fetchadd_long"
  1797  ///	 : "+r" (v),
  1798  ///	   "+m" (*p)
  1799  ///	 : : "cc");
  1800  ///	 return (v);
  1801  ///	}
  1802  ///
  1803  ///	static __inline int
  1804  ///	atomic_testandset_int(volatile u_int *p, u_int v)
  1805  ///	{
  1806  ///	 u_char res;
  1807  ///
  1808  ///	 __asm volatile(
  1809  ///	 "	" "lock ; " "		"
  1810  ///	 "	btsl	%2,%1 ;		"
  1811  ///	 "# atomic_testandset_int"
  1812  ///	 : "=@ccc" (res),
  1813  ///	   "+m" (*p)
  1814  ///	 : "Ir" (v & 0x1f)
  1815  ///	 : "cc");
  1816  ///	 return (res);
  1817  ///	}
  1818  ///
  1819  ///	static __inline int
  1820  ///	atomic_testandset_long(volatile u_long *p, u_int v)
  1821  ///	{
  1822  ///	 u_char res;
  1823  ///
  1824  ///	 __asm volatile(
  1825  ///	 "	" "lock ; " "		"
  1826  ///	 "	btsq	%2,%1 ;		"
  1827  ///	 "# atomic_testandset_long"
  1828  ///	 : "=@ccc" (res),
  1829  ///	   "+m" (*p)
  1830  ///	 : "Jr" ((u_long)(v & 0x3f))
  1831  ///	 : "cc");
  1832  ///	 return (res);
  1833  ///	}
  1834  ///
  1835  ///	static __inline int
  1836  ///	atomic_testandclear_int(volatile u_int *p, u_int v)
  1837  ///	{
  1838  ///	 u_char res;
  1839  ///
  1840  ///	 __asm volatile(
  1841  ///	 "	" "lock ; " "		"
  1842  ///	 "	btrl	%2,%1 ;		"
  1843  ///	 "# atomic_testandclear_int"
  1844  ///	 : "=@ccc" (res),
  1845  ///	   "+m" (*p)
  1846  ///	 : "Ir" (v & 0x1f)
  1847  ///	 : "cc");
  1848  ///	 return (res);
  1849  ///	}
  1850  ///
  1851  ///	static __inline int
  1852  ///	atomic_testandclear_long(volatile u_long *p, u_int v)
  1853  ///	{
  1854  ///	 u_char res;
  1855  ///
  1856  ///	 __asm volatile(
  1857  ///	 "	" "lock ; " "		"
  1858  ///	 "	btrq	%2,%1 ;		"
  1859  ///	 "# atomic_testandclear_long"
  1860  ///	 : "=@ccc" (res),
  1861  ///	   "+m" (*p)
  1862  ///	 : "Jr" ((u_long)(v & 0x3f))
  1863  ///	 : "cc");
  1864  ///	 return (res);
  1865  ///	}
  1866  ///
  1867  ///	static __inline void
  1868  ///	__storeload_barrier(void)
  1869  ///	{
  1870  ///
  1871  ///	 __asm volatile("lock; addl $0,-8(%%rsp)" : : : "memory", "cc");
  1872  ///	}
  1873  ///
  1874  ///	static __inline void
  1875  ///	atomic_thread_fence_acq(void)
  1876  ///	{
  1877  ///
  1878  ///	 __asm volatile(" " : : : "memory");
  1879  ///	}
  1880  ///
  1881  ///	static __inline void
  1882  ///	atomic_thread_fence_rel(void)
  1883  ///	{
  1884  ///
  1885  ///	 __asm volatile(" " : : : "memory");
  1886  ///	}
  1887  ///
  1888  ///	static __inline void
  1889  ///	atomic_thread_fence_acq_rel(void)
  1890  ///	{
  1891  ///
  1892  ///	 __asm volatile(" " : : : "memory");
  1893  ///	}
  1894  ///
  1895  ///	static __inline void
  1896  ///	atomic_thread_fence_seq_cst(void)
  1897  ///	{
  1898  ///
  1899  ///	 __storeload_barrier();
  1900  ///	}
  1901  ///
  1902  ///
  1903  ///
  1904  ///	static __inline void atomic_set_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "orb %b1,%0" : "+m" (*p) : "iq" (v) : "cc"); } static __inline void atomic_set_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "orb %b1,%0" : "+m" (*p) : "iq" (v) : "memory", "cc"); } struct __hack;
  1905  ///	static __inline void atomic_clear_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "andb %b1,%0" : "+m" (*p) : "iq" (~v) : "cc"); } static __inline void atomic_clear_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "andb %b1,%0" : "+m" (*p) : "iq" (~v) : "memory", "cc"); } struct __hack;
  1906  ///	static __inline void atomic_add_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "addb %b1,%0" : "+m" (*p) : "iq" (v) : "cc"); } static __inline void atomic_add_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "addb %b1,%0" : "+m" (*p) : "iq" (v) : "memory", "cc"); } struct __hack;
  1907  ///	static __inline void atomic_subtract_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "subb %b1,%0" : "+m" (*p) : "iq" (v) : "cc"); } static __inline void atomic_subtract_barr_char(volatile u_char *p, u_char v){ __asm volatile("lock ; " "subb %b1,%0" : "+m" (*p) : "iq" (v) : "memory", "cc"); } struct __hack;
  1908  ///
  1909  ///	static __inline void atomic_set_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "orw %w1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_set_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "orw %w1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack;
  1910  ///	static __inline void atomic_clear_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "andw %w1,%0" : "+m" (*p) : "ir" (~v) : "cc"); } static __inline void atomic_clear_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "andw %w1,%0" : "+m" (*p) : "ir" (~v) : "memory", "cc"); } struct __hack;
  1911  ///	static __inline void atomic_add_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "addw %w1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_add_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "addw %w1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack;
  1912  ///	static __inline void atomic_subtract_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "subw %w1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_subtract_barr_short(volatile u_short *p, u_short v){ __asm volatile("lock ; " "subw %w1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack;
  1913  ///
  1914  ///	static __inline void atomic_set_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "orl %1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_set_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "orl %1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack;
  1915  ///	static __inline void atomic_clear_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "andl %1,%0" : "+m" (*p) : "ir" (~v) : "cc"); } static __inline void atomic_clear_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "andl %1,%0" : "+m" (*p) : "ir" (~v) : "memory", "cc"); } struct __hack;
  1916  ///	static __inline void atomic_add_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "addl %1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_add_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "addl %1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack;
  1917  ///	static __inline void atomic_subtract_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "subl %1,%0" : "+m" (*p) : "ir" (v) : "cc"); } static __inline void atomic_subtract_barr_int(volatile u_int *p, u_int v){ __asm volatile("lock ; " "subl %1,%0" : "+m" (*p) : "ir" (v) : "memory", "cc"); } struct __hack;
  1918  ///
  1919  ///	static __inline void atomic_set_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "orq %1,%0" : "+m" (*p) : "er" (v) : "cc"); } static __inline void atomic_set_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "orq %1,%0" : "+m" (*p) : "er" (v) : "memory", "cc"); } struct __hack;
  1920  ///	static __inline void atomic_clear_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "andq %1,%0" : "+m" (*p) : "er" (~v) : "cc"); } static __inline void atomic_clear_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "andq %1,%0" : "+m" (*p) : "er" (~v) : "memory", "cc"); } struct __hack;
  1921  ///	static __inline void atomic_add_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "addq %1,%0" : "+m" (*p) : "er" (v) : "cc"); } static __inline void atomic_add_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "addq %1,%0" : "+m" (*p) : "er" (v) : "memory", "cc"); } struct __hack;
  1922  ///	static __inline void atomic_subtract_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "subq %1,%0" : "+m" (*p) : "er" (v) : "cc"); } static __inline void atomic_subtract_barr_long(volatile u_long *p, u_long v){ __asm volatile("lock ; " "subq %1,%0" : "+m" (*p) : "er" (v) : "memory", "cc"); } struct __hack;
  1923  ///
  1924  ///
  1925  ///
  1926  ///
  1927  ///
  1928  ///	static __inline u_char atomic_load_acq_char(volatile u_char *p) { u_char res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_char(volatile u_char *p, u_char v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack;
  1929  ///	static __inline u_short atomic_load_acq_short(volatile u_short *p) { u_short res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_short(volatile u_short *p, u_short v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack;
  1930  ///	static __inline u_int atomic_load_acq_int(volatile u_int *p) { u_int res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_int(volatile u_int *p, u_int v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack;
  1931  ///	static __inline u_long atomic_load_acq_long(volatile u_long *p) { u_long res; res = *p; __asm volatile(" " : : : "memory"); return (res); } struct __hack; static __inline void atomic_store_rel_long(volatile u_long *p, u_long v) { __asm volatile(" " : : : "memory"); *p = v; } struct __hack;
  1932  ///
  1933  ///	static __inline u_int
  1934  ///	atomic_swap_int(volatile u_int *p, u_int v)
  1935  ///	{
  1936  ///
  1937  ///	 __asm volatile(
  1938  ///	 "	xchgl	%1,%0 ;		"
  1939  ///	 "# atomic_swap_int"
  1940  ///	 : "+r" (v),
  1941  ///	   "+m" (*p));
  1942  ///	 return (v);
  1943  ///	}
  1944  ///
  1945  ///	static __inline u_long
  1946  ///	atomic_swap_long(volatile u_long *p, u_long v)
  1947  ///	{
  1948  ///
  1949  ///	 __asm volatile(
  1950  ///	 "	xchgq	%1,%0 ;		"
  1951  ///	 "# atomic_swap_long"
  1952  ///	 : "+r" (v),
  1953  ///	   "+m" (*p));
  1954  ///	 return (v);
  1955  ///	}
  1956  ///
  1957  ///
  1958  ///
  1959  ///
  1960  ///
  1961  ///	extern char *_PathLocale;
  1962  ///
  1963  ///	int __detect_path_locale(void);
  1964  ///	int __wrap_setrunelocale(const char *);
  1965  ///
  1966  ///
  1967  ///	enum {
  1968  ///	 XLC_COLLATE = 0,
  1969  ///	 XLC_CTYPE,
  1970  ///	 XLC_MONETARY,
  1971  ///	 XLC_NUMERIC,
  1972  ///	 XLC_TIME,
  1973  ///	 XLC_MESSAGES,
  1974  ///	 XLC_LAST
  1975  ///	};
  1976  ///
  1977  ///	_Static_assert(XLC_LAST - XLC_COLLATE == 6, "XLC values should be contiguous");
  1978  ///	_Static_assert(XLC_COLLATE ==
  1979  ///
  1980  ///	                             1
  1981  ///
  1982  ///	                                        - 1,
  1983  ///	               "XLC_COLLATE doesn't match the LC_COLLATE value.");
  1984  ///	_Static_assert(XLC_CTYPE ==
  1985  ///
  1986  ///	                           2
  1987  ///
  1988  ///	                                    - 1,
  1989  ///	               "XLC_CTYPE doesn't match the LC_CTYPE value.");
  1990  ///	_Static_assert(XLC_MONETARY ==
  1991  ///
  1992  ///	                              3
  1993  ///
  1994  ///	                                          - 1,
  1995  ///	               "XLC_MONETARY doesn't match the LC_MONETARY value.");
  1996  ///	_Static_assert(XLC_NUMERIC ==
  1997  ///
  1998  ///	                             4
  1999  ///
  2000  ///	                                        - 1,
  2001  ///	               "XLC_NUMERIC doesn't match the LC_NUMERIC value.");
  2002  ///	_Static_assert(XLC_TIME ==
  2003  ///
  2004  ///	                          5
  2005  ///
  2006  ///	                                  - 1,
  2007  ///	               "XLC_TIME doesn't match the LC_TIME value.");
  2008  ///	_Static_assert(XLC_MESSAGES ==
  2009  ///
  2010  ///	                              6
  2011  ///
  2012  ///	                                          - 1,
  2013  ///	               "XLC_MESSAGES doesn't match the LC_MESSAGES value.");
  2014  ///
  2015  ///	struct xlocale_refcounted {
  2016  ///
  2017  ///	 long retain_count;
  2018  ///
  2019  ///	 void(*destructor)(void*);
  2020  ///	};
  2021  ///
  2022  ///
  2023  ///
  2024  ///
  2025  ///
  2026  ///
  2027  ///
  2028  ///	struct xlocale_component {
  2029  ///	 struct xlocale_refcounted header;
  2030  ///
  2031  ///	 char locale[31 +1];
  2032  ///
  2033  ///	 char version[12];
  2034  ///	};
  2035  ///
  2036  ///
  2037  ///
  2038  ///
  2039  ///	struct _xlocale {
  2040  ///	 struct xlocale_refcounted header;
  2041  ///
  2042  ///	 struct xlocale_component *components[XLC_LAST];
  2043  ///
  2044  ///
  2045  ///	 int monetary_locale_changed;
  2046  ///
  2047  ///
  2048  ///	 int using_monetary_locale;
  2049  ///
  2050  ///
  2051  ///	 int numeric_locale_changed;
  2052  ///
  2053  ///
  2054  ///	 int using_numeric_locale;
  2055  ///
  2056  ///
  2057  ///	 int using_time_locale;
  2058  ///
  2059  ///
  2060  ///	 int using_messages_locale;
  2061  ///
  2062  ///	 struct lconv lconv;
  2063  ///
  2064  ///	 char *csym;
  2065  ///	};
  2066  ///
  2067  ///
  2068  ///
  2069  ///
  2070  ///	__attribute__((unused)) static void*
  2071  ///	xlocale_retain(void *val)
  2072  ///	{
  2073  ///	 struct xlocale_refcounted *obj = val;
  2074  ///	 atomic_add_long(&(obj->retain_count), 1);
  2075  ///	 return (val);
  2076  ///	}
  2077  ///
  2078  ///
  2079  ///
  2080  ///
  2081  ///	__attribute__((unused)) static void
  2082  ///	xlocale_release(void *val)
  2083  ///	{
  2084  ///	 struct xlocale_refcounted *obj = val;
  2085  ///	 long count;
  2086  ///
  2087  ///	 count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1;
  2088  ///	 if (count < 0 && obj->destructor !=
  2089  ///
  2090  ///	                                    ((void *)0)
  2091  ///
  2092  ///	                                        )
  2093  ///	  obj->destructor(obj);
  2094  ///	}
  2095  ///
  2096  ///
  2097  ///
  2098  ///
  2099  ///
  2100  ///	extern void* __collate_load(const char*, locale_t);
  2101  ///	extern void* __ctype_load(const char*, locale_t);
  2102  ///	extern void* __messages_load(const char*, locale_t);
  2103  ///	extern void* __monetary_load(const char*, locale_t);
  2104  ///	extern void* __numeric_load(const char*, locale_t);
  2105  ///	extern void* __time_load(const char*, locale_t);
  2106  ///
  2107  ///	extern struct _xlocale __xlocale_global_locale;
  2108  ///	extern struct _xlocale __xlocale_C_locale;
  2109  ///
  2110  ///
  2111  ///
  2112  ///
  2113  ///	void __set_thread_rune_locale(locale_t loc);
  2114  ///
  2115  ///
  2116  ///
  2117  ///
  2118  ///	extern int __has_thread_locale;
  2119  ///
  2120  ///
  2121  ///
  2122  ///
  2123  ///
  2124  ///	extern _Thread_local locale_t __thread_locale;
  2125  ///
  2126  ///
  2127  ///
  2128  ///
  2129  ///
  2130  ///
  2131  ///
  2132  ///	static inline locale_t __get_locale(void)
  2133  ///	{
  2134  ///
  2135  ///	 if (!__has_thread_locale) {
  2136  ///	  return (&__xlocale_global_locale);
  2137  ///	 }
  2138  ///	 return (__thread_locale ? __thread_locale : &__xlocale_global_locale);
  2139  ///	}
  2140  ///
  2141  ///
  2142  ///
  2143  ///
  2144  ///
  2145  ///	static inline locale_t get_real_locale(locale_t locale)
  2146  ///	{
  2147  ///	 switch ((intptr_t)locale) {
  2148  ///	  case 0: return (&__xlocale_C_locale);
  2149  ///	  case -1: return (&__xlocale_global_locale);
  2150  ///	  default: return (locale);
  2151  ///	 }
  2152  ///	}
  2153  ///
  2154  ///
  2155  ///
  2156  ///
  2157  ///
  2158  ///
  2159  ///
  2160  ///
  2161  ///	struct xlocale_ctype {
  2162  ///	 struct xlocale_component header;
  2163  ///	 _RuneLocale *runes;
  2164  ///	 size_t (*__mbrtowc)(wchar_t *
  2165  ///
  2166  ///	                              restrict
  2167  ///
  2168  ///	                                        , const char *
  2169  ///
  2170  ///	                                                       restrict
  2171  ///
  2172  ///	                                                                 ,
  2173  ///	  size_t, mbstate_t *
  2174  ///
  2175  ///	                     restrict
  2176  ///
  2177  ///	                               );
  2178  ///	 int (*__mbsinit)(const mbstate_t *);
  2179  ///	 size_t (*__mbsnrtowcs)(wchar_t *
  2180  ///
  2181  ///	                                 restrict
  2182  ///
  2183  ///	                                           , const char **
  2184  ///
  2185  ///	                                                           restrict
  2186  ///
  2187  ///	                                                                     ,
  2188  ///	  size_t, size_t, mbstate_t *
  2189  ///
  2190  ///	                             restrict
  2191  ///
  2192  ///	                                       );
  2193  ///	 size_t (*__wcrtomb)(char *
  2194  ///
  2195  ///	                           restrict
  2196  ///
  2197  ///	                                     , wchar_t, mbstate_t *
  2198  ///
  2199  ///	                                                            restrict
  2200  ///
  2201  ///	                                                                      );
  2202  ///	 size_t (*__wcsnrtombs)(char *
  2203  ///
  2204  ///	                              restrict
  2205  ///
  2206  ///	                                        , const wchar_t **
  2207  ///
  2208  ///	                                                           restrict
  2209  ///
  2210  ///	                                                                     ,
  2211  ///	  size_t, size_t, mbstate_t *
  2212  ///
  2213  ///	                             restrict
  2214  ///
  2215  ///	                                       );
  2216  ///	 int __mb_cur_max;
  2217  ///	 int __mb_sb_limit;
  2218  ///
  2219  ///	 __mbstate_t mblen;
  2220  ///
  2221  ///	 __mbstate_t mbrlen;
  2222  ///
  2223  ///	 __mbstate_t mbrtoc16;
  2224  ///
  2225  ///	 __mbstate_t mbrtoc32;
  2226  ///
  2227  ///	 __mbstate_t mbrtowc;
  2228  ///
  2229  ///	 __mbstate_t mbsnrtowcs;
  2230  ///
  2231  ///	 __mbstate_t mbsrtowcs;
  2232  ///
  2233  ///	 __mbstate_t mbtowc;
  2234  ///
  2235  ///	 __mbstate_t c16rtomb;
  2236  ///
  2237  ///	 __mbstate_t c32rtomb;
  2238  ///
  2239  ///	 __mbstate_t wcrtomb;
  2240  ///
  2241  ///	 __mbstate_t wcsnrtombs;
  2242  ///
  2243  ///	 __mbstate_t wcsrtombs;
  2244  ///
  2245  ///	 __mbstate_t wctomb;
  2246  ///	};
  2247  ///
  2248  ///	extern struct xlocale_ctype __xlocale_global_ctype;
  2249  ///
  2250  ///
  2251  ///
  2252  ///
  2253  ///	int _none_init(struct xlocale_ctype *, _RuneLocale *)
  2254  ///
  2255  ///	                                                     __attribute__((__visibility__("hidden")))
  2256  ///
  2257  ///	                                                             ;
  2258  ///	int _UTF8_init(struct xlocale_ctype *, _RuneLocale *)
  2259  ///
  2260  ///	                                                     __attribute__((__visibility__("hidden")))
  2261  ///
  2262  ///	                                                             ;
  2263  ///	int _EUC_CN_init(struct xlocale_ctype *, _RuneLocale *)
  2264  ///
  2265  ///	                                                       __attribute__((__visibility__("hidden")))
  2266  ///
  2267  ///	                                                               ;
  2268  ///	int _EUC_JP_init(struct xlocale_ctype *, _RuneLocale *)
  2269  ///
  2270  ///	                                                       __attribute__((__visibility__("hidden")))
  2271  ///
  2272  ///	                                                               ;
  2273  ///	int _EUC_KR_init(struct xlocale_ctype *, _RuneLocale *)
  2274  ///
  2275  ///	                                                       __attribute__((__visibility__("hidden")))
  2276  ///
  2277  ///	                                                               ;
  2278  ///	int _EUC_TW_init(struct xlocale_ctype *, _RuneLocale *)
  2279  ///
  2280  ///	                                                       __attribute__((__visibility__("hidden")))
  2281  ///
  2282  ///	                                                               ;
  2283  ///	int _GB18030_init(struct xlocale_ctype *, _RuneLocale *)
  2284  ///
  2285  ///	                                                        __attribute__((__visibility__("hidden")))
  2286  ///
  2287  ///	                                                                ;
  2288  ///	int _GB2312_init(struct xlocale_ctype *, _RuneLocale *)
  2289  ///
  2290  ///	                                                       __attribute__((__visibility__("hidden")))
  2291  ///
  2292  ///	                                                               ;
  2293  ///	int _GBK_init(struct xlocale_ctype *, _RuneLocale *)
  2294  ///
  2295  ///	                                                    __attribute__((__visibility__("hidden")))
  2296  ///
  2297  ///	                                                            ;
  2298  ///	int _BIG5_init(struct xlocale_ctype *, _RuneLocale *)
  2299  ///
  2300  ///	                                                     __attribute__((__visibility__("hidden")))
  2301  ///
  2302  ///	                                                             ;
  2303  ///	int _MSKanji_init(struct xlocale_ctype *, _RuneLocale *)
  2304  ///
  2305  ///	                                                        __attribute__((__visibility__("hidden")))
  2306  ///
  2307  ///	                                                                ;
  2308  ///	int _ascii_init(struct xlocale_ctype *, _RuneLocale *)
  2309  ///
  2310  ///	                                                      __attribute__((__visibility__("hidden")))
  2311  ///
  2312  ///	                                                              ;
  2313  ///
  2314  ///	typedef size_t (*mbrtowc_pfn_t)(wchar_t *
  2315  ///
  2316  ///	                                         restrict
  2317  ///
  2318  ///	                                                   ,
  2319  ///	    const char *
  2320  ///
  2321  ///	                restrict
  2322  ///
  2323  ///	                          , size_t, mbstate_t *
  2324  ///
  2325  ///	                                                restrict
  2326  ///
  2327  ///	                                                          );
  2328  ///	typedef size_t (*wcrtomb_pfn_t)(char *
  2329  ///
  2330  ///	                                      restrict
  2331  ///
  2332  ///	                                                , wchar_t,
  2333  ///	    mbstate_t *
  2334  ///
  2335  ///	               restrict
  2336  ///
  2337  ///	                         );
  2338  ///	size_t __mbsnrtowcs_std(wchar_t *
  2339  ///
  2340  ///	                                 restrict
  2341  ///
  2342  ///	                                           , const char **
  2343  ///
  2344  ///	                                                           restrict
  2345  ///
  2346  ///	                                                                     ,
  2347  ///	    size_t, size_t, mbstate_t *
  2348  ///
  2349  ///	                               restrict
  2350  ///
  2351  ///	                                         , mbrtowc_pfn_t);
  2352  ///	size_t __wcsnrtombs_std(char *
  2353  ///
  2354  ///	                              restrict
  2355  ///
  2356  ///	                                        , const wchar_t **
  2357  ///
  2358  ///	                                                           restrict
  2359  ///
  2360  ///	                                                                     ,
  2361  ///	    size_t, size_t, mbstate_t *
  2362  ///
  2363  ///	                               restrict
  2364  ///
  2365  ///	                                         , wcrtomb_pfn_t);
  2366  ///
  2367  
  2368  var X_DefaultRuneLocale = _RuneLocale{
  2369  
  2370  	F__magic:        *(*[8]uint8)(unsafe.Pointer(ts)),
  2371  	F__encoding:     *(*[32]uint8)(unsafe.Pointer(ts + 9)),
  2372  	F__invalid_rune: 0xFFFD,
  2373  
  2374  	F__runetype: [256]uint32{
  2375  
  2376  		0: uint32(0x00000200),
  2377  
  2378  		1: uint32(0x00000200),
  2379  
  2380  		2: uint32(0x00000200),
  2381  
  2382  		3: uint32(0x00000200),
  2383  
  2384  		4: uint32(0x00000200),
  2385  
  2386  		5: uint32(0x00000200),
  2387  
  2388  		6: uint32(0x00000200),
  2389  
  2390  		7: uint32(0x00000200),
  2391  
  2392  		8: uint32(0x00000200),
  2393  
  2394  		9: uint32(0x00000200 |
  2395  
  2396  			0x00004000 |
  2397  
  2398  			0x00020000),
  2399  
  2400  		10: uint32(0x00000200 |
  2401  
  2402  			0x00004000),
  2403  
  2404  		11: uint32(0x00000200 |
  2405  
  2406  			0x00004000),
  2407  
  2408  		12: uint32(0x00000200 |
  2409  
  2410  			0x00004000),
  2411  
  2412  		13: uint32(0x00000200 |
  2413  
  2414  			0x00004000),
  2415  
  2416  		14: uint32(0x00000200),
  2417  
  2418  		15: uint32(0x00000200),
  2419  
  2420  		16: uint32(0x00000200),
  2421  
  2422  		17: uint32(0x00000200),
  2423  
  2424  		18: uint32(0x00000200),
  2425  
  2426  		19: uint32(0x00000200),
  2427  
  2428  		20: uint32(0x00000200),
  2429  
  2430  		21: uint32(0x00000200),
  2431  
  2432  		22: uint32(0x00000200),
  2433  
  2434  		23: uint32(0x00000200),
  2435  
  2436  		24: uint32(0x00000200),
  2437  
  2438  		25: uint32(0x00000200),
  2439  
  2440  		26: uint32(0x00000200),
  2441  
  2442  		27: uint32(0x00000200),
  2443  
  2444  		28: uint32(0x00000200),
  2445  
  2446  		29: uint32(0x00000200),
  2447  
  2448  		30: uint32(0x00000200),
  2449  
  2450  		31: uint32(0x00000200),
  2451  
  2452  		32: uint32(0x00004000 |
  2453  
  2454  			0x00020000 |
  2455  
  2456  			0x00040000),
  2457  
  2458  		33: uint32(0x00002000 |
  2459  
  2460  			0x00040000 |
  2461  
  2462  			0x00000800),
  2463  
  2464  		34: uint32(0x00002000 |
  2465  
  2466  			0x00040000 |
  2467  
  2468  			0x00000800),
  2469  
  2470  		35: uint32(0x00002000 |
  2471  
  2472  			0x00040000 |
  2473  
  2474  			0x00000800),
  2475  
  2476  		36: uint32(0x00002000 |
  2477  
  2478  			0x00040000 |
  2479  
  2480  			0x00000800),
  2481  
  2482  		37: uint32(0x00002000 |
  2483  
  2484  			0x00040000 |
  2485  
  2486  			0x00000800),
  2487  
  2488  		38: uint32(0x00002000 |
  2489  
  2490  			0x00040000 |
  2491  
  2492  			0x00000800),
  2493  
  2494  		39: uint32(0x00002000 |
  2495  
  2496  			0x00040000 |
  2497  
  2498  			0x00000800),
  2499  
  2500  		40: uint32(0x00002000 |
  2501  
  2502  			0x00040000 |
  2503  
  2504  			0x00000800),
  2505  
  2506  		41: uint32(0x00002000 |
  2507  
  2508  			0x00040000 |
  2509  
  2510  			0x00000800),
  2511  
  2512  		42: uint32(0x00002000 |
  2513  
  2514  			0x00040000 |
  2515  
  2516  			0x00000800),
  2517  
  2518  		43: uint32(0x00002000 |
  2519  
  2520  			0x00040000 |
  2521  
  2522  			0x00000800),
  2523  
  2524  		44: uint32(0x00002000 |
  2525  
  2526  			0x00040000 |
  2527  
  2528  			0x00000800),
  2529  
  2530  		45: uint32(0x00002000 |
  2531  
  2532  			0x00040000 |
  2533  
  2534  			0x00000800),
  2535  
  2536  		46: uint32(0x00002000 |
  2537  
  2538  			0x00040000 |
  2539  
  2540  			0x00000800),
  2541  
  2542  		47: uint32(0x00002000 |
  2543  
  2544  			0x00040000 |
  2545  
  2546  			0x00000800),
  2547  
  2548  		48: uint32(0x00000400 |
  2549  
  2550  			0x00040000 |
  2551  
  2552  			0x00000800 |
  2553  
  2554  			0x00010000 |
  2555  
  2556  			0x00400000 |
  2557  
  2558  			0),
  2559  
  2560  		49: uint32(0x00000400 |
  2561  
  2562  			0x00040000 |
  2563  
  2564  			0x00000800 |
  2565  
  2566  			0x00010000 |
  2567  
  2568  			0x00400000 |
  2569  
  2570  			1),
  2571  
  2572  		50: uint32(0x00000400 |
  2573  
  2574  			0x00040000 |
  2575  
  2576  			0x00000800 |
  2577  
  2578  			0x00010000 |
  2579  
  2580  			0x00400000 |
  2581  
  2582  			2),
  2583  
  2584  		51: uint32(0x00000400 |
  2585  
  2586  			0x00040000 |
  2587  
  2588  			0x00000800 |
  2589  
  2590  			0x00010000 |
  2591  
  2592  			0x00400000 |
  2593  
  2594  			3),
  2595  
  2596  		52: uint32(0x00000400 |
  2597  
  2598  			0x00040000 |
  2599  
  2600  			0x00000800 |
  2601  
  2602  			0x00010000 |
  2603  
  2604  			0x00400000 |
  2605  
  2606  			4),
  2607  
  2608  		53: uint32(0x00000400 |
  2609  
  2610  			0x00040000 |
  2611  
  2612  			0x00000800 |
  2613  
  2614  			0x00010000 |
  2615  
  2616  			0x00400000 |
  2617  
  2618  			5),
  2619  
  2620  		54: uint32(0x00000400 |
  2621  
  2622  			0x00040000 |
  2623  
  2624  			0x00000800 |
  2625  
  2626  			0x00010000 |
  2627  
  2628  			0x00400000 |
  2629  
  2630  			6),
  2631  
  2632  		55: uint32(0x00000400 |
  2633  
  2634  			0x00040000 |
  2635  
  2636  			0x00000800 |
  2637  
  2638  			0x00010000 |
  2639  
  2640  			0x00400000 |
  2641  
  2642  			7),
  2643  
  2644  		56: uint32(0x00000400 |
  2645  
  2646  			0x00040000 |
  2647  
  2648  			0x00000800 |
  2649  
  2650  			0x00010000 |
  2651  
  2652  			0x00400000 |
  2653  
  2654  			8),
  2655  
  2656  		57: uint32(0x00000400 |
  2657  
  2658  			0x00040000 |
  2659  
  2660  			0x00000800 |
  2661  
  2662  			0x00010000 |
  2663  
  2664  			0x00400000 |
  2665  
  2666  			9),
  2667  
  2668  		58: uint32(0x00002000 |
  2669  
  2670  			0x00040000 |
  2671  
  2672  			0x00000800),
  2673  
  2674  		59: uint32(0x00002000 |
  2675  
  2676  			0x00040000 |
  2677  
  2678  			0x00000800),
  2679  
  2680  		60: uint32(0x00002000 |
  2681  
  2682  			0x00040000 |
  2683  
  2684  			0x00000800),
  2685  
  2686  		61: uint32(0x00002000 |
  2687  
  2688  			0x00040000 |
  2689  
  2690  			0x00000800),
  2691  
  2692  		62: uint32(0x00002000 |
  2693  
  2694  			0x00040000 |
  2695  
  2696  			0x00000800),
  2697  
  2698  		63: uint32(0x00002000 |
  2699  
  2700  			0x00040000 |
  2701  
  2702  			0x00000800),
  2703  
  2704  		64: uint32(0x00002000 |
  2705  
  2706  			0x00040000 |
  2707  
  2708  			0x00000800),
  2709  
  2710  		65: uint32(0x00008000 |
  2711  
  2712  			0x00010000 |
  2713  
  2714  			0x00040000 |
  2715  
  2716  			0x00000800 |
  2717  
  2718  			0x00000100 |
  2719  
  2720  			10),
  2721  
  2722  		66: uint32(0x00008000 |
  2723  
  2724  			0x00010000 |
  2725  
  2726  			0x00040000 |
  2727  
  2728  			0x00000800 |
  2729  
  2730  			0x00000100 |
  2731  
  2732  			11),
  2733  
  2734  		67: uint32(0x00008000 |
  2735  
  2736  			0x00010000 |
  2737  
  2738  			0x00040000 |
  2739  
  2740  			0x00000800 |
  2741  
  2742  			0x00000100 |
  2743  
  2744  			12),
  2745  
  2746  		68: uint32(0x00008000 |
  2747  
  2748  			0x00010000 |
  2749  
  2750  			0x00040000 |
  2751  
  2752  			0x00000800 |
  2753  
  2754  			0x00000100 |
  2755  
  2756  			13),
  2757  
  2758  		69: uint32(0x00008000 |
  2759  
  2760  			0x00010000 |
  2761  
  2762  			0x00040000 |
  2763  
  2764  			0x00000800 |
  2765  
  2766  			0x00000100 |
  2767  
  2768  			14),
  2769  
  2770  		70: uint32(0x00008000 |
  2771  
  2772  			0x00010000 |
  2773  
  2774  			0x00040000 |
  2775  
  2776  			0x00000800 |
  2777  
  2778  			0x00000100 |
  2779  
  2780  			15),
  2781  
  2782  		71: uint32(0x00008000 |
  2783  
  2784  			0x00040000 |
  2785  
  2786  			0x00000800 |
  2787  
  2788  			0x00000100),
  2789  
  2790  		72: uint32(0x00008000 |
  2791  
  2792  			0x00040000 |
  2793  
  2794  			0x00000800 |
  2795  
  2796  			0x00000100),
  2797  
  2798  		73: uint32(0x00008000 |
  2799  
  2800  			0x00040000 |
  2801  
  2802  			0x00000800 |
  2803  
  2804  			0x00000100),
  2805  
  2806  		74: uint32(0x00008000 |
  2807  
  2808  			0x00040000 |
  2809  
  2810  			0x00000800 |
  2811  
  2812  			0x00000100),
  2813  
  2814  		75: uint32(0x00008000 |
  2815  
  2816  			0x00040000 |
  2817  
  2818  			0x00000800 |
  2819  
  2820  			0x00000100),
  2821  
  2822  		76: uint32(0x00008000 |
  2823  
  2824  			0x00040000 |
  2825  
  2826  			0x00000800 |
  2827  
  2828  			0x00000100),
  2829  
  2830  		77: uint32(0x00008000 |
  2831  
  2832  			0x00040000 |
  2833  
  2834  			0x00000800 |
  2835  
  2836  			0x00000100),
  2837  
  2838  		78: uint32(0x00008000 |
  2839  
  2840  			0x00040000 |
  2841  
  2842  			0x00000800 |
  2843  
  2844  			0x00000100),
  2845  
  2846  		79: uint32(0x00008000 |
  2847  
  2848  			0x00040000 |
  2849  
  2850  			0x00000800 |
  2851  
  2852  			0x00000100),
  2853  
  2854  		80: uint32(0x00008000 |
  2855  
  2856  			0x00040000 |
  2857  
  2858  			0x00000800 |
  2859  
  2860  			0x00000100),
  2861  
  2862  		81: uint32(0x00008000 |
  2863  
  2864  			0x00040000 |
  2865  
  2866  			0x00000800 |
  2867  
  2868  			0x00000100),
  2869  
  2870  		82: uint32(0x00008000 |
  2871  
  2872  			0x00040000 |
  2873  
  2874  			0x00000800 |
  2875  
  2876  			0x00000100),
  2877  
  2878  		83: uint32(0x00008000 |
  2879  
  2880  			0x00040000 |
  2881  
  2882  			0x00000800 |
  2883  
  2884  			0x00000100),
  2885  
  2886  		84: uint32(0x00008000 |
  2887  
  2888  			0x00040000 |
  2889  
  2890  			0x00000800 |
  2891  
  2892  			0x00000100),
  2893  
  2894  		85: uint32(0x00008000 |
  2895  
  2896  			0x00040000 |
  2897  
  2898  			0x00000800 |
  2899  
  2900  			0x00000100),
  2901  
  2902  		86: uint32(0x00008000 |
  2903  
  2904  			0x00040000 |
  2905  
  2906  			0x00000800 |
  2907  
  2908  			0x00000100),
  2909  
  2910  		87: uint32(0x00008000 |
  2911  
  2912  			0x00040000 |
  2913  
  2914  			0x00000800 |
  2915  
  2916  			0x00000100),
  2917  
  2918  		88: uint32(0x00008000 |
  2919  
  2920  			0x00040000 |
  2921  
  2922  			0x00000800 |
  2923  
  2924  			0x00000100),
  2925  
  2926  		89: uint32(0x00008000 |
  2927  
  2928  			0x00040000 |
  2929  
  2930  			0x00000800 |
  2931  
  2932  			0x00000100),
  2933  
  2934  		90: uint32(0x00008000 |
  2935  
  2936  			0x00040000 |
  2937  
  2938  			0x00000800 |
  2939  
  2940  			0x00000100),
  2941  
  2942  		91: uint32(0x00002000 |
  2943  
  2944  			0x00040000 |
  2945  
  2946  			0x00000800),
  2947  
  2948  		92: uint32(0x00002000 |
  2949  
  2950  			0x00040000 |
  2951  
  2952  			0x00000800),
  2953  
  2954  		93: uint32(0x00002000 |
  2955  
  2956  			0x00040000 |
  2957  
  2958  			0x00000800),
  2959  
  2960  		94: uint32(0x00002000 |
  2961  
  2962  			0x00040000 |
  2963  
  2964  			0x00000800),
  2965  
  2966  		95: uint32(0x00002000 |
  2967  
  2968  			0x00040000 |
  2969  
  2970  			0x00000800),
  2971  
  2972  		96: uint32(0x00002000 |
  2973  
  2974  			0x00040000 |
  2975  
  2976  			0x00000800),
  2977  
  2978  		97: uint32(0x00001000 |
  2979  
  2980  			0x00010000 |
  2981  
  2982  			0x00040000 |
  2983  
  2984  			0x00000800 |
  2985  
  2986  			0x00000100 |
  2987  
  2988  			10),
  2989  
  2990  		98: uint32(0x00001000 |
  2991  
  2992  			0x00010000 |
  2993  
  2994  			0x00040000 |
  2995  
  2996  			0x00000800 |
  2997  
  2998  			0x00000100 |
  2999  
  3000  			11),
  3001  
  3002  		99: uint32(0x00001000 |
  3003  
  3004  			0x00010000 |
  3005  
  3006  			0x00040000 |
  3007  
  3008  			0x00000800 |
  3009  
  3010  			0x00000100 |
  3011  
  3012  			12),
  3013  
  3014  		100: uint32(0x00001000 |
  3015  
  3016  			0x00010000 |
  3017  
  3018  			0x00040000 |
  3019  
  3020  			0x00000800 |
  3021  
  3022  			0x00000100 |
  3023  
  3024  			13),
  3025  
  3026  		101: uint32(0x00001000 |
  3027  
  3028  			0x00010000 |
  3029  
  3030  			0x00040000 |
  3031  
  3032  			0x00000800 |
  3033  
  3034  			0x00000100 |
  3035  
  3036  			14),
  3037  
  3038  		102: uint32(0x00001000 |
  3039  
  3040  			0x00010000 |
  3041  
  3042  			0x00040000 |
  3043  
  3044  			0x00000800 |
  3045  
  3046  			0x00000100 |
  3047  
  3048  			15),
  3049  
  3050  		103: uint32(0x00001000 |
  3051  
  3052  			0x00040000 |
  3053  
  3054  			0x00000800 |
  3055  
  3056  			0x00000100),
  3057  
  3058  		104: uint32(0x00001000 |
  3059  
  3060  			0x00040000 |
  3061  
  3062  			0x00000800 |
  3063  
  3064  			0x00000100),
  3065  
  3066  		105: uint32(0x00001000 |
  3067  
  3068  			0x00040000 |
  3069  
  3070  			0x00000800 |
  3071  
  3072  			0x00000100),
  3073  
  3074  		106: uint32(0x00001000 |
  3075  
  3076  			0x00040000 |
  3077  
  3078  			0x00000800 |
  3079  
  3080  			0x00000100),
  3081  
  3082  		107: uint32(0x00001000 |
  3083  
  3084  			0x00040000 |
  3085  
  3086  			0x00000800 |
  3087  
  3088  			0x00000100),
  3089  
  3090  		108: uint32(0x00001000 |
  3091  
  3092  			0x00040000 |
  3093  
  3094  			0x00000800 |
  3095  
  3096  			0x00000100),
  3097  
  3098  		109: uint32(0x00001000 |
  3099  
  3100  			0x00040000 |
  3101  
  3102  			0x00000800 |
  3103  
  3104  			0x00000100),
  3105  
  3106  		110: uint32(0x00001000 |
  3107  
  3108  			0x00040000 |
  3109  
  3110  			0x00000800 |
  3111  
  3112  			0x00000100),
  3113  
  3114  		111: uint32(0x00001000 |
  3115  
  3116  			0x00040000 |
  3117  
  3118  			0x00000800 |
  3119  
  3120  			0x00000100),
  3121  
  3122  		112: uint32(0x00001000 |
  3123  
  3124  			0x00040000 |
  3125  
  3126  			0x00000800 |
  3127  
  3128  			0x00000100),
  3129  
  3130  		113: uint32(0x00001000 |
  3131  
  3132  			0x00040000 |
  3133  
  3134  			0x00000800 |
  3135  
  3136  			0x00000100),
  3137  
  3138  		114: uint32(0x00001000 |
  3139  
  3140  			0x00040000 |
  3141  
  3142  			0x00000800 |
  3143  
  3144  			0x00000100),
  3145  
  3146  		115: uint32(0x00001000 |
  3147  
  3148  			0x00040000 |
  3149  
  3150  			0x00000800 |
  3151  
  3152  			0x00000100),
  3153  
  3154  		116: uint32(0x00001000 |
  3155  
  3156  			0x00040000 |
  3157  
  3158  			0x00000800 |
  3159  
  3160  			0x00000100),
  3161  
  3162  		117: uint32(0x00001000 |
  3163  
  3164  			0x00040000 |
  3165  
  3166  			0x00000800 |
  3167  
  3168  			0x00000100),
  3169  
  3170  		118: uint32(0x00001000 |
  3171  
  3172  			0x00040000 |
  3173  
  3174  			0x00000800 |
  3175  
  3176  			0x00000100),
  3177  
  3178  		119: uint32(0x00001000 |
  3179  
  3180  			0x00040000 |
  3181  
  3182  			0x00000800 |
  3183  
  3184  			0x00000100),
  3185  
  3186  		120: uint32(0x00001000 |
  3187  
  3188  			0x00040000 |
  3189  
  3190  			0x00000800 |
  3191  
  3192  			0x00000100),
  3193  
  3194  		121: uint32(0x00001000 |
  3195  
  3196  			0x00040000 |
  3197  
  3198  			0x00000800 |
  3199  
  3200  			0x00000100),
  3201  
  3202  		122: uint32(0x00001000 |
  3203  
  3204  			0x00040000 |
  3205  
  3206  			0x00000800 |
  3207  
  3208  			0x00000100),
  3209  
  3210  		123: uint32(0x00002000 |
  3211  
  3212  			0x00040000 |
  3213  
  3214  			0x00000800),
  3215  
  3216  		124: uint32(0x00002000 |
  3217  
  3218  			0x00040000 |
  3219  
  3220  			0x00000800),
  3221  
  3222  		125: uint32(0x00002000 |
  3223  
  3224  			0x00040000 |
  3225  
  3226  			0x00000800),
  3227  
  3228  		126: uint32(0x00002000 |
  3229  
  3230  			0x00040000 |
  3231  
  3232  			0x00000800),
  3233  
  3234  		127: uint32(0x00000200),
  3235  	},
  3236  	F__maplower: [256]int32{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  3237  		0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  3238  		0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  3239  		0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
  3240  		0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
  3241  		0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
  3242  		0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
  3243  		0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  3244  		0x40, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
  3245  		'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
  3246  		'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
  3247  		'x', 'y', 'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
  3248  		0x60, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
  3249  		'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
  3250  		'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
  3251  		'x', 'y', 'z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
  3252  		0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
  3253  		0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
  3254  		0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
  3255  		0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
  3256  		0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
  3257  		0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  3258  		0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
  3259  		0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
  3260  		0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
  3261  		0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
  3262  		0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
  3263  		0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
  3264  		0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
  3265  		0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
  3266  		0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
  3267  		0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
  3268  	},
  3269  	F__mapupper: [256]int32{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  3270  		0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  3271  		0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  3272  		0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
  3273  		0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
  3274  		0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
  3275  		0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
  3276  		0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  3277  		0x40, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
  3278  		'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
  3279  		'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
  3280  		'X', 'Y', 'Z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
  3281  		0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
  3282  		'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
  3283  		'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
  3284  		'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
  3285  		0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
  3286  		0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
  3287  		0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
  3288  		0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
  3289  		0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
  3290  		0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  3291  		0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
  3292  		0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
  3293  		0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
  3294  		0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
  3295  		0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
  3296  		0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
  3297  		0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
  3298  		0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
  3299  		0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
  3300  		0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
  3301  	},
  3302  } /* table.cpp.c:2243:19 */
  3303  
  3304  var X_CurrentRuneLocale uintptr = 0 /* table.cpp.c:4092:19 */
  3305  
  3306  ///	_RuneLocale *
  3307  ///	__runes_for_locale(locale_t locale, int *mb_sb_limit)
  3308  ///	{
  3309  ///	 (locale = get_real_locale(locale));
  3310  ///	 struct xlocale_ctype *c = ((struct xlocale_ctype*)(locale)->components[XLC_CTYPE]);
  3311  ///	 *mb_sb_limit = c->__mb_sb_limit;
  3312  ///	 return c->runes;
  3313  ///	}
  3314  
  3315  func __isspace(tls *TLS, _c int32) int32 { /* ctype.h:26:21: */
  3316  	return Bool32(_c == ' ' || uint32(_c)-uint32('\t') < uint32(5))
  3317  }
  3318  
  3319  type locale_t = uintptr /* alltypes.h:336:32 */
  3320  
  3321  func Xisalnum(tls *TLS, c int32) int32 { /* isalnum.c:3:5: */
  3322  	return Bool32(func() int32 {
  3323  		if 0 != 0 {
  3324  			return Xisalpha(tls, c)
  3325  		}
  3326  		return Bool32(uint32(c)|uint32(32)-uint32('a') < uint32(26))
  3327  	}() != 0 || func() int32 {
  3328  		if 0 != 0 {
  3329  			return Xisdigit(tls, c)
  3330  		}
  3331  		return Bool32(uint32(c)-uint32('0') < uint32(10))
  3332  	}() != 0)
  3333  }
  3334  
  3335  func X__isalnum_l(tls *TLS, c int32, l locale_t) int32 { /* isalnum.c:8:5: */
  3336  	return Xisalnum(tls, c)
  3337  }
  3338  
  3339  func Xisalpha(tls *TLS, c int32) int32 { /* isalpha.c:4:5: */
  3340  	return Bool32(uint32(c)|uint32(32)-uint32('a') < uint32(26))
  3341  }
  3342  
  3343  func X__isalpha_l(tls *TLS, c int32, l locale_t) int32 { /* isalpha.c:9:5: */
  3344  	return Xisalpha(tls, c)
  3345  }
  3346  
  3347  func Xisdigit(tls *TLS, c int32) int32 { /* isdigit.c:4:5: */
  3348  	return Bool32(uint32(c)-uint32('0') < uint32(10))
  3349  }
  3350  
  3351  func X__isdigit_l(tls *TLS, c int32, l locale_t) int32 { /* isdigit.c:9:5: */
  3352  	return Xisdigit(tls, c)
  3353  }
  3354  
  3355  func Xislower(tls *TLS, c int32) int32 { /* islower.c:4:5: */
  3356  	return Bool32(uint32(c)-uint32('a') < uint32(26))
  3357  }
  3358  
  3359  func X__islower_l(tls *TLS, c int32, l locale_t) int32 { /* islower.c:9:5: */
  3360  	return Xislower(tls, c)
  3361  }
  3362  
  3363  func Xisprint(tls *TLS, c int32) int32 { /* isprint.c:4:5: */
  3364  	return Bool32(uint32(c)-uint32(0x20) < uint32(0x5f))
  3365  }
  3366  
  3367  func X__isprint_l(tls *TLS, c int32, l locale_t) int32 { /* isprint.c:9:5: */
  3368  	return Xisprint(tls, c)
  3369  }
  3370  
  3371  func Xisspace(tls *TLS, c int32) int32 { /* isspace.c:4:5: */
  3372  	return Bool32(c == ' ' || uint32(c)-uint32('\t') < uint32(5))
  3373  }
  3374  
  3375  func X__isspace_l(tls *TLS, c int32, l locale_t) int32 { /* isspace.c:9:5: */
  3376  	return Xisspace(tls, c)
  3377  }
  3378  
  3379  func Xisupper(tls *TLS, c int32) int32 { /* isupper.c:4:5: */
  3380  	return Bool32(uint32(c)-uint32('A') < uint32(26))
  3381  }
  3382  
  3383  func X__isupper_l(tls *TLS, c int32, l locale_t) int32 { /* isupper.c:9:5: */
  3384  	return Xisupper(tls, c)
  3385  }
  3386  
  3387  func Xisxdigit(tls *TLS, c int32) int32 { /* isxdigit.c:3:5: */
  3388  	return Bool32(func() int32 {
  3389  		if 0 != 0 {
  3390  			return Xisdigit(tls, c)
  3391  		}
  3392  		return Bool32(uint32(c)-uint32('0') < uint32(10))
  3393  	}() != 0 || uint32(c)|uint32(32)-uint32('a') < uint32(6))
  3394  }
  3395  
  3396  func X__isxdigit_l(tls *TLS, c int32, l locale_t) int32 { /* isxdigit.c:8:5: */
  3397  	return Xisxdigit(tls, c)
  3398  }
  3399  
  3400  type uintptr_t = uint32 /* alltypes.h:48:24 */
  3401  
  3402  type intptr_t = int32 /* alltypes.h:63:15 */
  3403  
  3404  type int8_t = int8 /* alltypes.h:89:25 */
  3405  
  3406  type int16_t = int16 /* alltypes.h:94:25 */
  3407  
  3408  type int32_t = int32 /* alltypes.h:99:25 */
  3409  
  3410  type int64_t = int64 /* alltypes.h:104:25 */
  3411  
  3412  type intmax_t = int64 /* alltypes.h:109:25 */
  3413  
  3414  type uint8_t = uint8 /* alltypes.h:114:25 */
  3415  
  3416  type uint16_t = uint16 /* alltypes.h:119:25 */
  3417  
  3418  type uint32_t = uint32 /* alltypes.h:124:25 */
  3419  
  3420  type uint64_t = uint64 /* alltypes.h:129:25 */
  3421  
  3422  type uintmax_t = uint64 /* alltypes.h:139:25 */
  3423  
  3424  type int_fast8_t = int8_t   /* stdint.h:22:16 */
  3425  type int_fast64_t = int64_t /* stdint.h:23:17 */
  3426  
  3427  type int_least8_t = int8_t   /* stdint.h:25:17 */
  3428  type int_least16_t = int16_t /* stdint.h:26:17 */
  3429  type int_least32_t = int32_t /* stdint.h:27:17 */
  3430  type int_least64_t = int64_t /* stdint.h:28:17 */
  3431  
  3432  type uint_fast8_t = uint8_t   /* stdint.h:30:17 */
  3433  type uint_fast64_t = uint64_t /* stdint.h:31:18 */
  3434  
  3435  type uint_least8_t = uint8_t   /* stdint.h:33:18 */
  3436  type uint_least16_t = uint16_t /* stdint.h:34:18 */
  3437  type uint_least32_t = uint32_t /* stdint.h:35:18 */
  3438  type uint_least64_t = uint64_t /* stdint.h:36:18 */
  3439  
  3440  type int_fast16_t = int32_t   /* stdint.h:1:17 */
  3441  type int_fast32_t = int32_t   /* stdint.h:2:17 */
  3442  type uint_fast16_t = uint32_t /* stdint.h:3:18 */
  3443  type uint_fast32_t = uint32_t /* stdint.h:4:18 */
  3444  
  3445  type ssize_t = int32 /* alltypes.h:58:15 */
  3446  
  3447  type off_t = int64 /* alltypes.h:155:16 */
  3448  
  3449  type _IO_FILE = struct {
  3450  	Fflags        uint32
  3451  	Frpos         uintptr
  3452  	Frend         uintptr
  3453  	Fclose        uintptr
  3454  	Fwend         uintptr
  3455  	Fwpos         uintptr
  3456  	Fmustbezero_1 uintptr
  3457  	Fwbase        uintptr
  3458  	Fread         uintptr
  3459  	Fwrite        uintptr
  3460  	Fseek         uintptr
  3461  	Fbuf          uintptr
  3462  	Fbuf_size     size_t
  3463  	Fprev         uintptr
  3464  	Fnext         uintptr
  3465  	Ffd           int32
  3466  	Fpipe_pid     int32
  3467  	Flockcount    int32
  3468  	Fmode         int32
  3469  	Flock         int32
  3470  	Flbf          int32
  3471  	Fcookie       uintptr
  3472  	Foff          off_t
  3473  	Fgetln_buf    uintptr
  3474  	Fmustbezero_2 uintptr
  3475  	Fshend        uintptr
  3476  	F__ccgo_pad1  [4]byte
  3477  	Fshlim        off_t
  3478  	Fshcnt        off_t
  3479  	Fprev_locked  uintptr
  3480  	Fnext_locked  uintptr
  3481  	Flocale       uintptr
  3482  	F__ccgo_pad2  [4]byte
  3483  } /* alltypes.h:313:9 */
  3484  
  3485  type FILE = _IO_FILE /* alltypes.h:313:25 */
  3486  
  3487  type va_list = uintptr /* alltypes.h:319:27 */
  3488  
  3489  type _G_fpos64_t = struct {
  3490  	F__ccgo_pad1 [0]uint64
  3491  	F__opaque    [16]uint8
  3492  } /* stdio.h:54:9 */
  3493  
  3494  type fpos_t = _G_fpos64_t /* stdio.h:58:3 */
  3495  
  3496  type float_t = float32 /* alltypes.h:23:15 */
  3497  
  3498  type double_t = float64 /* alltypes.h:28:16 */
  3499  
  3500  func __FLOAT_BITS(tls *TLS, __f float32) uint32 { /* math.h:55:26: */
  3501  	bp := tls.Alloc(4)
  3502  	defer tls.Free(4)
  3503  
  3504  	// var __u struct {F__f float32;} at bp, 4
  3505  
  3506  	*(*float32)(unsafe.Pointer(bp)) = __f
  3507  	return *(*uint32)(unsafe.Pointer(bp))
  3508  }
  3509  
  3510  func __DOUBLE_BITS(tls *TLS, __f float64) uint64 { /* math.h:61:36: */
  3511  	bp := tls.Alloc(8)
  3512  	defer tls.Free(8)
  3513  
  3514  	// var __u struct {F__f float64;} at bp, 8
  3515  
  3516  	*(*float64)(unsafe.Pointer(bp)) = __f
  3517  	return *(*uint64)(unsafe.Pointer(bp))
  3518  }
  3519  
  3520  type syscall_arg_t = int32 /* syscall.h:22:14 */
  3521  
  3522  func scanexp(tls *TLS, f uintptr, pok int32) int64 { /* floatscan.c:37:18: */
  3523  	var c int32
  3524  	var x int32
  3525  	var y int64
  3526  	var neg int32 = 0
  3527  
  3528  	c = func() int32 {
  3529  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3530  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3531  		}
  3532  		return X__shgetc(tls, f)
  3533  	}()
  3534  	if c == '+' || c == '-' {
  3535  		neg = Bool32(c == '-')
  3536  		c = func() int32 {
  3537  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3538  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3539  			}
  3540  			return X__shgetc(tls, f)
  3541  		}()
  3542  		if uint32(c-'0') >= 10 && pok != 0 {
  3543  			if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  3544  				(*FILE)(unsafe.Pointer(f)).Frpos--
  3545  			} else {
  3546  			}
  3547  		}
  3548  	}
  3549  	if uint32(c-'0') >= 10 {
  3550  		if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  3551  			(*FILE)(unsafe.Pointer(f)).Frpos--
  3552  		} else {
  3553  		}
  3554  		return -0x7fffffffffffffff - int64(1)
  3555  	}
  3556  	for x = 0; uint32(c-'0') < 10 && x < 0x7fffffff/10; c = func() int32 {
  3557  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3558  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3559  		}
  3560  		return X__shgetc(tls, f)
  3561  	}() {
  3562  		x = 10*x + c - '0'
  3563  	}
  3564  	for y = int64(x); uint32(c-'0') < 10 && y < 0x7fffffffffffffff/int64(100); c = func() int32 {
  3565  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3566  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3567  		}
  3568  		return X__shgetc(tls, f)
  3569  	}() {
  3570  		y = int64(10)*y + int64(c) - int64('0')
  3571  	}
  3572  	for ; uint32(c-'0') < 10; c = func() int32 {
  3573  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3574  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3575  		}
  3576  		return X__shgetc(tls, f)
  3577  	}() {
  3578  	}
  3579  	if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  3580  		(*FILE)(unsafe.Pointer(f)).Frpos--
  3581  	} else {
  3582  	}
  3583  	if neg != 0 {
  3584  		return -y
  3585  	}
  3586  	return y
  3587  }
  3588  
  3589  func decfloat(tls *TLS, f uintptr, c int32, bits int32, emin int32, sign int32, pok int32) float64 { /* floatscan.c:64:20: */
  3590  	bp := tls.Alloc(512)
  3591  	defer tls.Free(512)
  3592  
  3593  	// var x [128]uint32_t at bp, 512
  3594  
  3595  	var i int32
  3596  	var j int32
  3597  	var k int32
  3598  	var a int32
  3599  	var z int32
  3600  	var lrp int64 = int64(0)
  3601  	var dc int64 = int64(0)
  3602  	var e10 int64 = int64(0)
  3603  	var lnz int32 = 0
  3604  	var gotdig int32 = 0
  3605  	var gotrad int32 = 0
  3606  	var rp int32
  3607  	var e2 int32
  3608  	var emax int32 = -emin - bits + 3
  3609  	var denormal int32 = 0
  3610  	var y float64
  3611  	var frac float64 = float64(0)
  3612  	var bias float64 = float64(0)
  3613  
  3614  	j = 0
  3615  	k = 0
  3616  
  3617  	// Don't let leading zeros consume buffer space
  3618  	for ; c == '0'; c = func() int32 {
  3619  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3620  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3621  		}
  3622  		return X__shgetc(tls, f)
  3623  	}() {
  3624  		gotdig = 1
  3625  	}
  3626  	if c == '.' {
  3627  		gotrad = 1
  3628  		for c = func() int32 {
  3629  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3630  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3631  			}
  3632  			return X__shgetc(tls, f)
  3633  		}(); c == '0'; c = func() int32 {
  3634  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3635  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3636  			}
  3637  			return X__shgetc(tls, f)
  3638  		}() {
  3639  			gotdig = 1
  3640  			lrp--
  3641  		}
  3642  	}
  3643  
  3644  	*(*uint32_t)(unsafe.Pointer(bp)) = uint32_t(0)
  3645  	for ; uint32(c-'0') < 10 || c == '.'; c = func() int32 {
  3646  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3647  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3648  		}
  3649  		return X__shgetc(tls, f)
  3650  	}() {
  3651  		if c == '.' {
  3652  			if gotrad != 0 {
  3653  				break
  3654  			}
  3655  			gotrad = 1
  3656  			lrp = dc
  3657  		} else if k < 128-3 {
  3658  			dc++
  3659  			if c != '0' {
  3660  				lnz = int32(dc)
  3661  			}
  3662  			if j != 0 {
  3663  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))*uint32_t(10) + uint32_t(c) - uint32_t('0')
  3664  			} else {
  3665  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(c - '0')
  3666  			}
  3667  			if PreIncInt32(&j, 1) == 9 {
  3668  				k++
  3669  				j = 0
  3670  			}
  3671  			gotdig = 1
  3672  		} else {
  3673  			dc++
  3674  			if c != '0' {
  3675  				lnz = (128 - 4) * 9
  3676  				*(*uint32_t)(unsafe.Pointer(bp + 124*4)) |= uint32_t(1)
  3677  			}
  3678  		}
  3679  	}
  3680  	if !(gotrad != 0) {
  3681  		lrp = dc
  3682  	}
  3683  
  3684  	if gotdig != 0 && c|32 == 'e' {
  3685  		e10 = scanexp(tls, f, pok)
  3686  		if e10 == -0x7fffffffffffffff-int64(1) {
  3687  			if pok != 0 {
  3688  				if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  3689  					(*FILE)(unsafe.Pointer(f)).Frpos--
  3690  				} else {
  3691  				}
  3692  			} else {
  3693  				X__shlim(tls, f, int64(0))
  3694  				return float64(0)
  3695  			}
  3696  			e10 = int64(0)
  3697  		}
  3698  		lrp = lrp + e10
  3699  	} else if c >= 0 {
  3700  		if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  3701  			(*FILE)(unsafe.Pointer(f)).Frpos--
  3702  		} else {
  3703  		}
  3704  	}
  3705  	if !(gotdig != 0) {
  3706  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  3707  		X__shlim(tls, f, int64(0))
  3708  		return float64(0)
  3709  	}
  3710  
  3711  	// Handle zero specially to avoid nasty special cases later
  3712  	if !(int32(*(*uint32_t)(unsafe.Pointer(bp))) != 0) {
  3713  		return float64(sign) * 0.0
  3714  	}
  3715  
  3716  	// Optimize small integers (w/no exponent) and over/under-flow
  3717  	if lrp == dc && dc < int64(10) && (bits > 30 || *(*uint32_t)(unsafe.Pointer(bp))>>bits == uint32_t(0)) {
  3718  		return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp)))
  3719  	}
  3720  	if lrp > int64(-emin/2) {
  3721  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  3722  		return float64(sign) * 1.79769313486231570815e+308 * 1.79769313486231570815e+308
  3723  	}
  3724  	if lrp < int64(emin-2*53) {
  3725  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  3726  		return float64(sign) * 2.22507385850720138309e-308 * 2.22507385850720138309e-308
  3727  	}
  3728  
  3729  	// Align incomplete final B1B digit
  3730  	if j != 0 {
  3731  		for ; j < 9; j++ {
  3732  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) *= uint32_t(10)
  3733  		}
  3734  		k++
  3735  		j = 0
  3736  	}
  3737  
  3738  	a = 0
  3739  	z = k
  3740  	e2 = 0
  3741  	rp = int32(lrp)
  3742  
  3743  	// Optimize small to mid-size integers (even in exp. notation)
  3744  	if lnz < 9 && lnz <= rp && rp < 18 {
  3745  		if rp == 9 {
  3746  			return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp)))
  3747  		}
  3748  		if rp < 9 {
  3749  			return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp))) / float64(_sp10s[8-rp])
  3750  		}
  3751  		var bitlim int32 = bits - 3*(rp-9)
  3752  		if bitlim > 30 || *(*uint32_t)(unsafe.Pointer(bp))>>bitlim == uint32_t(0) {
  3753  			return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp))) * float64(_sp10s[rp-10])
  3754  		}
  3755  	}
  3756  
  3757  	// Drop trailing zeros
  3758  	for ; !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(z-1)*4))) != 0); z-- {
  3759  	}
  3760  
  3761  	// Align radix point to B1B digit boundary
  3762  	if rp%9 != 0 {
  3763  		var rpm9 int32
  3764  		if rp >= 0 {
  3765  			rpm9 = rp % 9
  3766  		} else {
  3767  			rpm9 = rp%9 + 9
  3768  		}
  3769  		var p10 int32 = _sp10s[8-rpm9]
  3770  		var carry uint32_t = uint32_t(0)
  3771  		for k = a; k != z; k++ {
  3772  			var tmp uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) % uint32_t(p10)
  3773  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))/uint32_t(p10) + carry
  3774  			carry = uint32_t(1000000000/p10) * tmp
  3775  			if k == a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
  3776  				a = (a + 1) & (128 - 1)
  3777  				rp = rp - 9
  3778  			}
  3779  		}
  3780  		if carry != 0 {
  3781  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(PostIncInt32(&z, 1))*4)) = carry
  3782  		}
  3783  		rp = rp + (9 - rpm9)
  3784  	}
  3785  
  3786  	// Upscale until desired number of bits are left of radix point
  3787  	for rp < 9*2 || rp == 9*2 && *(*uint32_t)(unsafe.Pointer(bp + uintptr(a)*4)) < _sth[0] {
  3788  		var carry uint32_t = uint32_t(0)
  3789  		e2 = e2 - 29
  3790  		for k = (z - 1) & (128 - 1); ; k = (k - 1) & (128 - 1) {
  3791  			var tmp uint64_t = uint64_t(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)))<<29 + uint64_t(carry)
  3792  			if tmp > uint64(1000000000) {
  3793  				carry = uint32_t(tmp / uint64(1000000000))
  3794  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(tmp % uint64(1000000000))
  3795  			} else {
  3796  				carry = uint32_t(0)
  3797  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(tmp)
  3798  			}
  3799  			if k == (z-1)&(128-1) && k != a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
  3800  				z = k
  3801  			}
  3802  			if k == a {
  3803  				break
  3804  			}
  3805  		}
  3806  		if carry != 0 {
  3807  			rp = rp + 9
  3808  			a = (a - 1) & (128 - 1)
  3809  			if a == z {
  3810  				z = (z - 1) & (128 - 1)
  3811  				*(*uint32_t)(unsafe.Pointer(bp + uintptr((z-1)&(128-1))*4)) |= *(*uint32_t)(unsafe.Pointer(bp + uintptr(z)*4))
  3812  			}
  3813  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(a)*4)) = carry
  3814  		}
  3815  	}
  3816  
  3817  	// Downscale until exactly number of bits are left of radix point
  3818  	for {
  3819  		var carry uint32_t = uint32_t(0)
  3820  		var sh int32 = 1
  3821  		for i = 0; i < 2; i++ {
  3822  			k = (a + i) & (128 - 1)
  3823  			if k == z || *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) < _sth[i] {
  3824  				i = 2
  3825  				break
  3826  			}
  3827  			if *(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4)) > _sth[i] {
  3828  				break
  3829  			}
  3830  		}
  3831  		if i == 2 && rp == 9*2 {
  3832  			break
  3833  		}
  3834  		// FIXME: find a way to compute optimal sh
  3835  		if rp > 9+9*2 {
  3836  			sh = 9
  3837  		}
  3838  		e2 = e2 + sh
  3839  		for k = a; k != z; k = (k + 1) & (128 - 1) {
  3840  			var tmp uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) & uint32_t(int32(1)<<sh-1)
  3841  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))>>sh + carry
  3842  			carry = uint32_t(int32(1000000000)>>sh) * tmp
  3843  			if k == a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
  3844  				a = (a + 1) & (128 - 1)
  3845  				i--
  3846  				rp = rp - 9
  3847  			}
  3848  		}
  3849  		if carry != 0 {
  3850  			if (z+1)&(128-1) != a {
  3851  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(z)*4)) = carry
  3852  				z = (z + 1) & (128 - 1)
  3853  			} else {
  3854  				*(*uint32_t)(unsafe.Pointer(bp + uintptr((z-1)&(128-1))*4)) |= uint32_t(1)
  3855  			}
  3856  		}
  3857  	}
  3858  
  3859  	// Assemble desired bits into floating point variable
  3860  	for y = float64(AssignInt32(&i, 0)); i < 2; i++ {
  3861  		if (a+i)&(128-1) == z {
  3862  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(AssignInt32(&z, (z+1)&(128-1))-1)*4)) = uint32_t(0)
  3863  		}
  3864  		y = 1000000000.0*y + float64(*(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4)))
  3865  	}
  3866  
  3867  	y = y * float64(sign)
  3868  
  3869  	// Limit precision for denormal results
  3870  	if bits > 53+e2-emin {
  3871  		bits = 53 + e2 - emin
  3872  		if bits < 0 {
  3873  			bits = 0
  3874  		}
  3875  		denormal = 1
  3876  	}
  3877  
  3878  	// Calculate bias term to force rounding, move out lower bits
  3879  	if bits < 53 {
  3880  		bias = Xcopysignl(tls, Xscalbn(tls, float64(1), 2*53-bits-1), y)
  3881  		frac = Xfmodl(tls, y, Xscalbn(tls, float64(1), 53-bits))
  3882  		y = y - frac
  3883  		y = y + bias
  3884  	}
  3885  
  3886  	// Process tail of decimal input so it can affect rounding
  3887  	if (a+i)&(128-1) != z {
  3888  		var t uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4))
  3889  		if t < uint32_t(500000000) && (t != 0 || (a+i+1)&(128-1) != z) {
  3890  			frac = frac + 0.25*float64(sign)
  3891  		} else if t > uint32_t(500000000) {
  3892  			frac = frac + 0.75*float64(sign)
  3893  		} else if t == uint32_t(500000000) {
  3894  			if (a+i+1)&(128-1) == z {
  3895  				frac = frac + 0.5*float64(sign)
  3896  			} else {
  3897  				frac = frac + 0.75*float64(sign)
  3898  			}
  3899  		}
  3900  		if 53-bits >= 2 && !(Xfmodl(tls, frac, float64(1)) != 0) {
  3901  			frac += 1
  3902  		}
  3903  	}
  3904  
  3905  	y = y + frac
  3906  	y = y - bias
  3907  
  3908  	if (e2+53)&0x7fffffff > emax-5 {
  3909  		if Xfabsl(tls, y) >= float64(float64(2))/2.22044604925031308085e-16 {
  3910  			if denormal != 0 && bits == 53+e2-emin {
  3911  				denormal = 0
  3912  			}
  3913  			y = y * 0.5
  3914  			e2++
  3915  		}
  3916  		if e2+53 > emax || denormal != 0 && frac != 0 {
  3917  			*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  3918  		}
  3919  	}
  3920  
  3921  	return Xscalbnl(tls, y, e2)
  3922  }
  3923  
  3924  var _sth = [2]uint32_t{uint32_t(9007199), uint32_t(254740991)} /* floatscan.c:67:24 */
  3925  var _sp10s = [8]int32{10, 100, 1000, 10000,
  3926  	100000, 1000000, 10000000, 100000000} /* floatscan.c:80:19 */
  3927  
  3928  func hexfloat(tls *TLS, f uintptr, bits int32, emin int32, sign int32, pok int32) float64 { /* floatscan.c:315:20: */
  3929  	var x uint32_t = uint32_t(0)
  3930  	var y float64 = float64(0)
  3931  	var scale float64 = float64(1)
  3932  	var bias float64 = float64(0)
  3933  	var gottail int32 = 0
  3934  	var gotrad int32 = 0
  3935  	var gotdig int32 = 0
  3936  	var rp int64 = int64(0)
  3937  	var dc int64 = int64(0)
  3938  	var e2 int64 = int64(0)
  3939  	var d int32
  3940  	var c int32
  3941  
  3942  	c = func() int32 {
  3943  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3944  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3945  		}
  3946  		return X__shgetc(tls, f)
  3947  	}()
  3948  
  3949  	// Skip leading zeros
  3950  	for ; c == '0'; c = func() int32 {
  3951  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3952  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3953  		}
  3954  		return X__shgetc(tls, f)
  3955  	}() {
  3956  		gotdig = 1
  3957  	}
  3958  
  3959  	if c == '.' {
  3960  		gotrad = 1
  3961  		c = func() int32 {
  3962  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3963  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3964  			}
  3965  			return X__shgetc(tls, f)
  3966  		}()
  3967  		// Count zeros after the radix point before significand
  3968  		rp = int64(0)
  3969  	__1:
  3970  		if !(c == '0') {
  3971  			goto __3
  3972  		}
  3973  		gotdig = 1
  3974  		goto __2
  3975  	__2:
  3976  		c = func() int32 {
  3977  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3978  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3979  			}
  3980  			return X__shgetc(tls, f)
  3981  		}()
  3982  		rp--
  3983  		goto __1
  3984  		goto __3
  3985  	__3:
  3986  	}
  3987  
  3988  	for ; uint32(c-'0') < 10 || uint32(c|32-'a') < 6 || c == '.'; c = func() int32 {
  3989  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  3990  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  3991  		}
  3992  		return X__shgetc(tls, f)
  3993  	}() {
  3994  		if c == '.' {
  3995  			if gotrad != 0 {
  3996  				break
  3997  			}
  3998  			rp = dc
  3999  			gotrad = 1
  4000  		} else {
  4001  			gotdig = 1
  4002  			if c > '9' {
  4003  				d = c | 32 + 10 - 'a'
  4004  			} else {
  4005  				d = c - '0'
  4006  			}
  4007  			if dc < int64(8) {
  4008  				x = x*uint32_t(16) + uint32_t(d)
  4009  			} else if dc < int64(53/4+1) {
  4010  				y = y + float64(d)*AssignDivFloat64(&scale, float64(16))
  4011  			} else if d != 0 && !(gottail != 0) {
  4012  				y = y + 0.5*scale
  4013  				gottail = 1
  4014  			}
  4015  			dc++
  4016  		}
  4017  	}
  4018  	if !(gotdig != 0) {
  4019  		if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4020  			(*FILE)(unsafe.Pointer(f)).Frpos--
  4021  		} else {
  4022  		}
  4023  		if pok != 0 {
  4024  			if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4025  				(*FILE)(unsafe.Pointer(f)).Frpos--
  4026  			} else {
  4027  			}
  4028  			if gotrad != 0 {
  4029  				if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4030  					(*FILE)(unsafe.Pointer(f)).Frpos--
  4031  				} else {
  4032  				}
  4033  			}
  4034  		} else {
  4035  			X__shlim(tls, f, int64(0))
  4036  		}
  4037  		return float64(sign) * 0.0
  4038  	}
  4039  	if !(gotrad != 0) {
  4040  		rp = dc
  4041  	}
  4042  	for dc < int64(8) {
  4043  		x = x * uint32_t(16)
  4044  		dc++
  4045  	}
  4046  	if c|32 == 'p' {
  4047  		e2 = scanexp(tls, f, pok)
  4048  		if e2 == -0x7fffffffffffffff-int64(1) {
  4049  			if pok != 0 {
  4050  				if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4051  					(*FILE)(unsafe.Pointer(f)).Frpos--
  4052  				} else {
  4053  				}
  4054  			} else {
  4055  				X__shlim(tls, f, int64(0))
  4056  				return float64(0)
  4057  			}
  4058  			e2 = int64(0)
  4059  		}
  4060  	} else {
  4061  		if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4062  			(*FILE)(unsafe.Pointer(f)).Frpos--
  4063  		} else {
  4064  		}
  4065  	}
  4066  	e2 = e2 + (int64(4)*rp - int64(32))
  4067  
  4068  	if !(x != 0) {
  4069  		return float64(sign) * 0.0
  4070  	}
  4071  	if e2 > int64(-emin) {
  4072  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  4073  		return float64(sign) * 1.79769313486231570815e+308 * 1.79769313486231570815e+308
  4074  	}
  4075  	if e2 < int64(emin-2*53) {
  4076  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  4077  		return float64(sign) * 2.22507385850720138309e-308 * 2.22507385850720138309e-308
  4078  	}
  4079  
  4080  	for x < 0x80000000 {
  4081  		if y >= 0.5 {
  4082  			x = x + (x + uint32_t(1))
  4083  			y = y + (y - float64(1))
  4084  		} else {
  4085  			x = x + x
  4086  			y = y + y
  4087  		}
  4088  		e2--
  4089  	}
  4090  
  4091  	if int64(bits) > int64(32)+e2-int64(emin) {
  4092  		bits = int32(int64(32) + e2 - int64(emin))
  4093  		if bits < 0 {
  4094  			bits = 0
  4095  		}
  4096  	}
  4097  
  4098  	if bits < 53 {
  4099  		bias = Xcopysignl(tls, Xscalbn(tls, float64(1), 32+53-bits-1), float64(sign))
  4100  	}
  4101  
  4102  	if bits < 32 && y != 0 && !(x&uint32_t(1) != 0) {
  4103  		x++
  4104  		y = float64(0)
  4105  	}
  4106  
  4107  	y = bias + float64(sign)*float64(x) + float64(sign)*y
  4108  	y = y - bias
  4109  
  4110  	if !(y != 0) {
  4111  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  4112  	}
  4113  
  4114  	return Xscalbnl(tls, y, int32(e2))
  4115  }
  4116  
  4117  func X__floatscan(tls *TLS, f uintptr, prec int32, pok int32) float64 { /* floatscan.c:427:13: */
  4118  	var sign int32 = 1
  4119  	var i size_t
  4120  	var bits int32
  4121  	var emin int32
  4122  	var c int32
  4123  
  4124  	switch prec {
  4125  	case 0:
  4126  		bits = 24
  4127  		emin = -125 - bits
  4128  		break
  4129  	case 1:
  4130  		bits = 53
  4131  		emin = -1021 - bits
  4132  		break
  4133  	case 2:
  4134  		bits = 53
  4135  		emin = -1021 - bits
  4136  		break
  4137  	default:
  4138  		return float64(0)
  4139  	}
  4140  
  4141  	for __isspace(tls, AssignInt32(&c, func() int32 {
  4142  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4143  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4144  		}
  4145  		return X__shgetc(tls, f)
  4146  	}())) != 0 {
  4147  	}
  4148  
  4149  	if c == '+' || c == '-' {
  4150  		sign = sign - 2*Bool32(c == '-')
  4151  		c = func() int32 {
  4152  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4153  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4154  			}
  4155  			return X__shgetc(tls, f)
  4156  		}()
  4157  	}
  4158  
  4159  	for i = size_t(0); i < size_t(8) && c|32 == int32(*(*uint8)(unsafe.Pointer(ts + 41 /* "infinity" */ + uintptr(i)))); i++ {
  4160  		if i < size_t(7) {
  4161  			c = func() int32 {
  4162  				if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4163  					return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4164  				}
  4165  				return X__shgetc(tls, f)
  4166  			}()
  4167  		}
  4168  	}
  4169  	if i == size_t(3) || i == size_t(8) || i > size_t(3) && pok != 0 {
  4170  		if i != size_t(8) {
  4171  			if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4172  				(*FILE)(unsafe.Pointer(f)).Frpos--
  4173  			} else {
  4174  			}
  4175  			if pok != 0 {
  4176  				for ; i > size_t(3); i-- {
  4177  					if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4178  						(*FILE)(unsafe.Pointer(f)).Frpos--
  4179  					} else {
  4180  					}
  4181  				}
  4182  			}
  4183  		}
  4184  		return float64(float32(sign) * X__builtin_inff(tls))
  4185  	}
  4186  	if !(i != 0) {
  4187  		for i = size_t(0); i < size_t(3) && c|32 == int32(*(*uint8)(unsafe.Pointer(ts + 50 /* "nan" */ + uintptr(i)))); i++ {
  4188  			if i < size_t(2) {
  4189  				c = func() int32 {
  4190  					if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4191  						return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4192  					}
  4193  					return X__shgetc(tls, f)
  4194  				}()
  4195  			}
  4196  		}
  4197  	}
  4198  	if i == size_t(3) {
  4199  		if func() int32 {
  4200  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4201  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4202  			}
  4203  			return X__shgetc(tls, f)
  4204  		}() != '(' {
  4205  			if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4206  				(*FILE)(unsafe.Pointer(f)).Frpos--
  4207  			} else {
  4208  			}
  4209  			return float64(X__builtin_nanf(tls, ts+54))
  4210  		}
  4211  		for i = size_t(1); ; i++ {
  4212  			c = func() int32 {
  4213  				if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4214  					return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4215  				}
  4216  				return X__shgetc(tls, f)
  4217  			}()
  4218  			if uint32(c-'0') < 10 || uint32(c-'A') < 26 || uint32(c-'a') < 26 || c == '_' {
  4219  				continue
  4220  			}
  4221  			if c == ')' {
  4222  				return float64(X__builtin_nanf(tls, ts+54))
  4223  			}
  4224  			if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4225  				(*FILE)(unsafe.Pointer(f)).Frpos--
  4226  			} else {
  4227  			}
  4228  			if !(pok != 0) {
  4229  				*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  4230  				X__shlim(tls, f, int64(0))
  4231  				return float64(0)
  4232  			}
  4233  			for PostDecUint32(&i, 1) != 0 {
  4234  				if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4235  					(*FILE)(unsafe.Pointer(f)).Frpos--
  4236  				} else {
  4237  				}
  4238  			}
  4239  			return float64(X__builtin_nanf(tls, ts+54))
  4240  		}
  4241  		return float64(X__builtin_nanf(tls, ts+54))
  4242  	}
  4243  
  4244  	if i != 0 {
  4245  		if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4246  			(*FILE)(unsafe.Pointer(f)).Frpos--
  4247  		} else {
  4248  		}
  4249  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  4250  		X__shlim(tls, f, int64(0))
  4251  		return float64(0)
  4252  	}
  4253  
  4254  	if c == '0' {
  4255  		c = func() int32 {
  4256  			if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4257  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4258  			}
  4259  			return X__shgetc(tls, f)
  4260  		}()
  4261  		if c|32 == 'x' {
  4262  			return hexfloat(tls, f, bits, emin, sign, pok)
  4263  		}
  4264  		if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4265  			(*FILE)(unsafe.Pointer(f)).Frpos--
  4266  		} else {
  4267  		}
  4268  		c = '0'
  4269  	}
  4270  
  4271  	return decfloat(tls, f, c, bits, emin, sign, pok)
  4272  }
  4273  
  4274  // Lookup table for digit values. -1==255>=36 -> invalid
  4275  var table = [257]uint8{Uint8FromInt32(-1),
  4276  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4277  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4278  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4279  	uint8(0), uint8(1), uint8(2), uint8(3), uint8(4), uint8(5), uint8(6), uint8(7), uint8(8), uint8(9), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4280  	Uint8FromInt32(-1), uint8(10), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(17), uint8(18), uint8(19), uint8(20), uint8(21), uint8(22), uint8(23), uint8(24),
  4281  	uint8(25), uint8(26), uint8(27), uint8(28), uint8(29), uint8(30), uint8(31), uint8(32), uint8(33), uint8(34), uint8(35), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4282  	Uint8FromInt32(-1), uint8(10), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(17), uint8(18), uint8(19), uint8(20), uint8(21), uint8(22), uint8(23), uint8(24),
  4283  	uint8(25), uint8(26), uint8(27), uint8(28), uint8(29), uint8(30), uint8(31), uint8(32), uint8(33), uint8(34), uint8(35), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4284  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4285  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4286  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4287  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4288  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4289  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4290  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4291  	Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1), Uint8FromInt32(-1),
  4292  } /* intscan.c:7:28 */
  4293  
  4294  func X__intscan(tls *TLS, f uintptr, base uint32, pok int32, lim uint64) uint64 { /* intscan.c:26:20: */
  4295  	var val uintptr
  4296  	var c int32
  4297  	var neg int32
  4298  	var x uint32
  4299  	var y uint64
  4300  	var bs int32
  4301  	val = uintptr(unsafe.Pointer(&table)) + uintptr(1)
  4302  	neg = 0
  4303  	if !(base > uint32(36) || base == uint32(1)) {
  4304  		goto __1
  4305  	}
  4306  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  4307  	return uint64(0)
  4308  __1:
  4309  	;
  4310  __2:
  4311  	if !(__isspace(tls, AssignInt32(&c, func() int32 {
  4312  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4313  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4314  		}
  4315  		return X__shgetc(tls, f)
  4316  	}())) != 0) {
  4317  		goto __3
  4318  	}
  4319  	goto __2
  4320  __3:
  4321  	;
  4322  	if !(c == '+' || c == '-') {
  4323  		goto __4
  4324  	}
  4325  	neg = -Bool32(c == '-')
  4326  	c = func() int32 {
  4327  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4328  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4329  		}
  4330  		return X__shgetc(tls, f)
  4331  	}()
  4332  __4:
  4333  	;
  4334  	if !((base == uint32(0) || base == uint32(16)) && c == '0') {
  4335  		goto __5
  4336  	}
  4337  	c = func() int32 {
  4338  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4339  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4340  		}
  4341  		return X__shgetc(tls, f)
  4342  	}()
  4343  	if !(c|32 == 'x') {
  4344  		goto __7
  4345  	}
  4346  	c = func() int32 {
  4347  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4348  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4349  		}
  4350  		return X__shgetc(tls, f)
  4351  	}()
  4352  	if !(int32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) >= 16) {
  4353  		goto __9
  4354  	}
  4355  	if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4356  		(*FILE)(unsafe.Pointer(f)).Frpos--
  4357  	} else {
  4358  	}
  4359  	if !(pok != 0) {
  4360  		goto __10
  4361  	}
  4362  	if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4363  		(*FILE)(unsafe.Pointer(f)).Frpos--
  4364  	} else {
  4365  	}
  4366  	goto __11
  4367  __10:
  4368  	X__shlim(tls, f, int64(0))
  4369  __11:
  4370  	;
  4371  	return uint64(0)
  4372  __9:
  4373  	;
  4374  	base = uint32(16)
  4375  	goto __8
  4376  __7:
  4377  	if !(base == uint32(0)) {
  4378  		goto __12
  4379  	}
  4380  	base = uint32(8)
  4381  __12:
  4382  	;
  4383  __8:
  4384  	;
  4385  	goto __6
  4386  __5:
  4387  	if !(base == uint32(0)) {
  4388  		goto __13
  4389  	}
  4390  	base = uint32(10)
  4391  __13:
  4392  	;
  4393  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) >= base) {
  4394  		goto __14
  4395  	}
  4396  	if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4397  		(*FILE)(unsafe.Pointer(f)).Frpos--
  4398  	} else {
  4399  	}
  4400  	X__shlim(tls, f, int64(0))
  4401  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  4402  	return uint64(0)
  4403  __14:
  4404  	;
  4405  __6:
  4406  	;
  4407  	if !(base == uint32(10)) {
  4408  		goto __15
  4409  	}
  4410  	x = uint32(0)
  4411  __17:
  4412  	if !(uint32(c-'0') < 10 && x <= 0xffffffff/uint32(10)-uint32(1)) {
  4413  		goto __19
  4414  	}
  4415  	x = x*uint32(10) + uint32(c-'0')
  4416  	goto __18
  4417  __18:
  4418  	c = func() int32 {
  4419  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4420  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4421  		}
  4422  		return X__shgetc(tls, f)
  4423  	}()
  4424  	goto __17
  4425  	goto __19
  4426  __19:
  4427  	;
  4428  	y = uint64(x)
  4429  __20:
  4430  	if !(uint32(c-'0') < 10 && y <= (2*uint64(0x7fffffffffffffff)+uint64(1))/uint64(10) && uint64(10)*y <= 2*uint64(0x7fffffffffffffff)+uint64(1)-uint64(c-'0')) {
  4431  		goto __22
  4432  	}
  4433  	y = y*uint64(10) + uint64(c-'0')
  4434  	goto __21
  4435  __21:
  4436  	c = func() int32 {
  4437  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4438  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4439  		}
  4440  		return X__shgetc(tls, f)
  4441  	}()
  4442  	goto __20
  4443  	goto __22
  4444  __22:
  4445  	;
  4446  	if !(uint32(c-'0') >= 10) {
  4447  		goto __23
  4448  	}
  4449  	goto done
  4450  __23:
  4451  	;
  4452  	goto __16
  4453  __15:
  4454  	if !!(base&(base-uint32(1)) != 0) {
  4455  		goto __24
  4456  	}
  4457  	bs = int32(*(*uint8)(unsafe.Pointer(ts + 55 + uintptr(uint32(0x17)*base>>5&uint32(7)))))
  4458  	x = uint32(0)
  4459  __26:
  4460  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && x <= 0xffffffff/uint32(32)) {
  4461  		goto __28
  4462  	}
  4463  	x = x<<bs | uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  4464  	goto __27
  4465  __27:
  4466  	c = func() int32 {
  4467  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4468  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4469  		}
  4470  		return X__shgetc(tls, f)
  4471  	}()
  4472  	goto __26
  4473  	goto __28
  4474  __28:
  4475  	;
  4476  	y = uint64(x)
  4477  __29:
  4478  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && y <= uint64(2*uint64(0x7fffffffffffffff)+uint64(1))>>bs) {
  4479  		goto __31
  4480  	}
  4481  	y = y<<bs | uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  4482  	goto __30
  4483  __30:
  4484  	c = func() int32 {
  4485  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4486  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4487  		}
  4488  		return X__shgetc(tls, f)
  4489  	}()
  4490  	goto __29
  4491  	goto __31
  4492  __31:
  4493  	;
  4494  	goto __25
  4495  __24:
  4496  	x = uint32(0)
  4497  __32:
  4498  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && x <= 0xffffffff/uint32(36)-uint32(1)) {
  4499  		goto __34
  4500  	}
  4501  	x = x*base + uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  4502  	goto __33
  4503  __33:
  4504  	c = func() int32 {
  4505  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4506  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4507  		}
  4508  		return X__shgetc(tls, f)
  4509  	}()
  4510  	goto __32
  4511  	goto __34
  4512  __34:
  4513  	;
  4514  	y = uint64(x)
  4515  __35:
  4516  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && y <= (2*uint64(0x7fffffffffffffff)+uint64(1))/uint64(base) && uint64(base)*y <= 2*uint64(0x7fffffffffffffff)+uint64(1)-uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))) {
  4517  		goto __37
  4518  	}
  4519  	y = y*uint64(base) + uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  4520  	goto __36
  4521  __36:
  4522  	c = func() int32 {
  4523  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4524  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4525  		}
  4526  		return X__shgetc(tls, f)
  4527  	}()
  4528  	goto __35
  4529  	goto __37
  4530  __37:
  4531  	;
  4532  __25:
  4533  	;
  4534  __16:
  4535  	;
  4536  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base) {
  4537  		goto __38
  4538  	}
  4539  __39:
  4540  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base) {
  4541  		goto __41
  4542  	}
  4543  	goto __40
  4544  __40:
  4545  	c = func() int32 {
  4546  		if (*FILE)(unsafe.Pointer(f)).Frpos != (*FILE)(unsafe.Pointer(f)).Fshend {
  4547  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).Frpos, 1))))
  4548  		}
  4549  		return X__shgetc(tls, f)
  4550  	}()
  4551  	goto __39
  4552  	goto __41
  4553  __41:
  4554  	;
  4555  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  4556  	y = lim
  4557  	if !(lim&uint64(1) != 0) {
  4558  		goto __42
  4559  	}
  4560  	neg = 0
  4561  __42:
  4562  	;
  4563  __38:
  4564  	;
  4565  done:
  4566  	if (*FILE)(unsafe.Pointer(f)).Fshlim >= int64(0) {
  4567  		(*FILE)(unsafe.Pointer(f)).Frpos--
  4568  	} else {
  4569  	}
  4570  	if !(y >= lim) {
  4571  		goto __43
  4572  	}
  4573  	if !(!(lim&uint64(1) != 0) && !(neg != 0)) {
  4574  		goto __44
  4575  	}
  4576  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  4577  	return lim - uint64(1)
  4578  	goto __45
  4579  __44:
  4580  	if !(y > lim) {
  4581  		goto __46
  4582  	}
  4583  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  4584  	return lim
  4585  __46:
  4586  	;
  4587  __45:
  4588  	;
  4589  __43:
  4590  	;
  4591  	return y ^ uint64(neg) - uint64(neg)
  4592  }
  4593  
  4594  // The shcnt field stores the number of bytes read so far, offset by
  4595  // the value of buf-rpos at the last function call (__shlim or __shgetc),
  4596  // so that between calls the inline shcnt macro can add rpos-buf to get
  4597  // the actual count.
  4598  
  4599  func X__shlim(tls *TLS, f uintptr, lim off_t) { /* shgetc.c:8:6: */
  4600  	(*FILE)(unsafe.Pointer(f)).Fshlim = lim
  4601  	(*FILE)(unsafe.Pointer(f)).Fshcnt = off_t((int32((*FILE)(unsafe.Pointer(f)).Fbuf) - int32((*FILE)(unsafe.Pointer(f)).Frpos)) / 1)
  4602  	// If lim is nonzero, rend must be a valid pointer.
  4603  	if lim != 0 && off_t((int32((*FILE)(unsafe.Pointer(f)).Frend)-int32((*FILE)(unsafe.Pointer(f)).Frpos))/1) > lim {
  4604  		(*FILE)(unsafe.Pointer(f)).Fshend = (*FILE)(unsafe.Pointer(f)).Frpos + uintptr(lim)
  4605  	} else {
  4606  		(*FILE)(unsafe.Pointer(f)).Fshend = (*FILE)(unsafe.Pointer(f)).Frend
  4607  	}
  4608  }
  4609  
  4610  func X__shgetc(tls *TLS, f uintptr) int32 { /* shgetc.c:19:5: */
  4611  	var c int32
  4612  	var cnt off_t = (*FILE)(unsafe.Pointer(f)).Fshcnt + off_t((int32((*FILE)(unsafe.Pointer(f)).Frpos)-int32((*FILE)(unsafe.Pointer(f)).Fbuf))/1)
  4613  	if (*FILE)(unsafe.Pointer(f)).Fshlim != 0 && cnt >= (*FILE)(unsafe.Pointer(f)).Fshlim || AssignInt32(&c, X__uflow(tls, f)) < 0 {
  4614  		(*FILE)(unsafe.Pointer(f)).Fshcnt = off_t((int32((*FILE)(unsafe.Pointer(f)).Fbuf)-int32((*FILE)(unsafe.Pointer(f)).Frpos))/1) + cnt
  4615  		(*FILE)(unsafe.Pointer(f)).Fshend = (*FILE)(unsafe.Pointer(f)).Frpos
  4616  		(*FILE)(unsafe.Pointer(f)).Fshlim = int64(-1)
  4617  		return -1
  4618  	}
  4619  	cnt++
  4620  	if (*FILE)(unsafe.Pointer(f)).Fshlim != 0 && off_t((int32((*FILE)(unsafe.Pointer(f)).Frend)-int32((*FILE)(unsafe.Pointer(f)).Frpos))/1) > (*FILE)(unsafe.Pointer(f)).Fshlim-cnt {
  4621  		(*FILE)(unsafe.Pointer(f)).Fshend = (*FILE)(unsafe.Pointer(f)).Frpos + uintptr((*FILE)(unsafe.Pointer(f)).Fshlim-cnt)
  4622  	} else {
  4623  		(*FILE)(unsafe.Pointer(f)).Fshend = (*FILE)(unsafe.Pointer(f)).Frend
  4624  	}
  4625  	(*FILE)(unsafe.Pointer(f)).Fshcnt = off_t((int32((*FILE)(unsafe.Pointer(f)).Fbuf)-int32((*FILE)(unsafe.Pointer(f)).Frpos))/1) + cnt
  4626  	if (*FILE)(unsafe.Pointer(f)).Frpos <= (*FILE)(unsafe.Pointer(f)).Fbuf {
  4627  		*(*uint8)(unsafe.Pointer((*FILE)(unsafe.Pointer(f)).Frpos + UintptrFromInt32(-1))) = uint8(c)
  4628  	}
  4629  	return c
  4630  }
  4631  
  4632  func __bswap32(tls *TLS, __x uint32_t) uint32_t { /* endian.h:24:26: */
  4633  	return __x>>24 | __x>>8&uint32_t(0xff00) | __x<<8&uint32_t(0xff0000) | __x<<24
  4634  }
  4635  
  4636  func Xcopysignl(tls *TLS, x float64, y float64) float64 { /* copysignl.c:4:13: */
  4637  	return Xcopysign(tls, x, y)
  4638  }
  4639  
  4640  func Xfabsl(tls *TLS, x float64) float64 { /* fabsl.c:3:13: */
  4641  	return Xfabs(tls, x)
  4642  }
  4643  
  4644  func Xfmodl(tls *TLS, x float64, y float64) float64 { /* fmodl.c:4:13: */
  4645  	return Xfmod(tls, x, y)
  4646  }
  4647  
  4648  var toint double_t = float64(float64(1)) / 2.22044604925031308085e-16 /* rint.c:10:23 */
  4649  
  4650  func Xrint(tls *TLS, x float64) float64 { /* rint.c:12:8: */
  4651  	bp := tls.Alloc(8)
  4652  	defer tls.Free(8)
  4653  
  4654  	*(*struct{ Ff float64 })(unsafe.Pointer(bp)) = func() (r struct{ Ff float64 }) {
  4655  		*(*float64)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
  4656  		return r
  4657  	}()
  4658  	var e int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 52 & uint64(0x7ff))
  4659  	var s int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 63)
  4660  	var y double_t
  4661  
  4662  	if e >= 0x3ff+52 {
  4663  		return x
  4664  	}
  4665  	if s != 0 {
  4666  		y = x - toint + toint
  4667  	} else {
  4668  		y = x + toint - toint
  4669  	}
  4670  	if y == float64(0) {
  4671  		if s != 0 {
  4672  			return -Float64FromFloat64(0.0)
  4673  		}
  4674  		return float64(0)
  4675  	}
  4676  	return y
  4677  }
  4678  
  4679  func Xscalbn(tls *TLS, x float64, n int32) float64 { /* scalbn.c:4:8: */
  4680  	bp := tls.Alloc(8)
  4681  	defer tls.Free(8)
  4682  
  4683  	// var u struct {Ff float64;} at bp, 8
  4684  
  4685  	var y double_t = x
  4686  
  4687  	if n > 1023 {
  4688  		y = y * 0x1p1023
  4689  		n = n - 1023
  4690  		if n > 1023 {
  4691  			y = y * 0x1p1023
  4692  			n = n - 1023
  4693  			if n > 1023 {
  4694  				n = 1023
  4695  			}
  4696  		}
  4697  	} else if n < -1022 {
  4698  		// make sure final n < -53 to avoid double
  4699  		// 		   rounding in the subnormal range
  4700  		y = y * (float64(0x1p-1022) * 0x1p53)
  4701  		n = n + (1022 - 53)
  4702  		if n < -1022 {
  4703  			y = y * (float64(0x1p-1022) * 0x1p53)
  4704  			n = n + (1022 - 53)
  4705  			if n < -1022 {
  4706  				n = -1022
  4707  			}
  4708  		}
  4709  	}
  4710  	*(*uint64_t)(unsafe.Pointer(bp)) = uint64_t(0x3ff+n) << 52
  4711  	x = y * *(*float64)(unsafe.Pointer(bp))
  4712  	return x
  4713  }
  4714  
  4715  func Xscalbnl(tls *TLS, x float64, n int32) float64 { /* scalbnl.c:4:13: */
  4716  	return Xscalbn(tls, x, n)
  4717  }
  4718  
  4719  type div_t = struct {
  4720  	Fquot int32
  4721  	Frem  int32
  4722  } /* stdlib.h:62:35 */
  4723  type ldiv_t = struct {
  4724  	Fquot int32
  4725  	Frem  int32
  4726  } /* stdlib.h:63:36 */
  4727  type lldiv_t = struct {
  4728  	Fquot int64
  4729  	Frem  int64
  4730  } /* stdlib.h:64:41 */
  4731  
  4732  type max_align_t = struct {
  4733  	F__ll int64
  4734  	F__ld float64
  4735  } /* alltypes.h:34:54 */
  4736  
  4737  type imaxdiv_t = struct {
  4738  	Fquot intmax_t
  4739  	Frem  intmax_t
  4740  } /* inttypes.h:14:40 */
  4741  
  4742  type pid_t = int32 /* alltypes.h:228:13 */
  4743  
  4744  type uid_t = uint32 /* alltypes.h:238:18 */
  4745  
  4746  type gid_t = uint32 /* alltypes.h:243:18 */
  4747  
  4748  type iovec = struct {
  4749  	Fiov_base uintptr
  4750  	Fiov_len  size_t
  4751  } /* alltypes.h:348:1 */
  4752  
  4753  type socklen_t = uint32 /* alltypes.h:354:18 */
  4754  
  4755  type sa_family_t = uint16 /* alltypes.h:359:24 */
  4756  
  4757  type msghdr = struct {
  4758  	Fmsg_name       uintptr
  4759  	Fmsg_namelen    socklen_t
  4760  	Fmsg_iov        uintptr
  4761  	Fmsg_iovlen     int32
  4762  	Fmsg_control    uintptr
  4763  	Fmsg_controllen socklen_t
  4764  	Fmsg_flags      int32
  4765  } /* socket.h:22:1 */
  4766  
  4767  type cmsghdr = struct {
  4768  	Fcmsg_len   socklen_t
  4769  	Fcmsg_level int32
  4770  	Fcmsg_type  int32
  4771  } /* socket.h:44:1 */
  4772  
  4773  type linger = struct {
  4774  	Fl_onoff  int32
  4775  	Fl_linger int32
  4776  } /* socket.h:74:1 */
  4777  
  4778  type sockaddr = struct {
  4779  	Fsa_family sa_family_t
  4780  	Fsa_data   [14]uint8
  4781  } /* socket.h:367:1 */
  4782  
  4783  type sockaddr_storage = struct {
  4784  	Fss_family    sa_family_t
  4785  	F__ss_padding [122]uint8
  4786  	F__ss_align   uint32
  4787  } /* socket.h:372:1 */
  4788  
  4789  type in_port_t = uint16_t                  /* in.h:12:18 */
  4790  type in_addr_t = uint32_t                  /* in.h:13:18 */
  4791  type in_addr = struct{ Fs_addr in_addr_t } /* in.h:14:1 */
  4792  
  4793  type sockaddr_in = struct {
  4794  	Fsin_family sa_family_t
  4795  	Fsin_port   in_port_t
  4796  	Fsin_addr   struct{ Fs_addr in_addr_t }
  4797  	Fsin_zero   [8]uint8_t
  4798  } /* in.h:16:1 */
  4799  
  4800  type in6_addr = struct {
  4801  	F__in6_union struct {
  4802  		F__ccgo_pad1 [0]uint32
  4803  		F__s6_addr   [16]uint8_t
  4804  	}
  4805  } /* in.h:23:1 */
  4806  
  4807  type sockaddr_in6 = struct {
  4808  	Fsin6_family   sa_family_t
  4809  	Fsin6_port     in_port_t
  4810  	Fsin6_flowinfo uint32_t
  4811  	Fsin6_addr     struct {
  4812  		F__in6_union struct {
  4813  			F__ccgo_pad1 [0]uint32
  4814  			F__s6_addr   [16]uint8_t
  4815  		}
  4816  	}
  4817  	Fsin6_scope_id uint32_t
  4818  } /* in.h:34:1 */
  4819  
  4820  type ipv6_mreq = struct {
  4821  	Fipv6mr_multiaddr struct {
  4822  		F__in6_union struct {
  4823  			F__ccgo_pad1 [0]uint32
  4824  			F__s6_addr   [16]uint8_t
  4825  		}
  4826  	}
  4827  	Fipv6mr_interface uint32
  4828  } /* in.h:42:1 */
  4829  
  4830  type ip_opts = struct {
  4831  	Fip_dst  struct{ Fs_addr in_addr_t }
  4832  	Fip_opts [40]uint8
  4833  } /* in.h:229:1 */
  4834  
  4835  type ip_mreq = struct {
  4836  	Fimr_multiaddr struct{ Fs_addr in_addr_t }
  4837  	Fimr_interface struct{ Fs_addr in_addr_t }
  4838  } /* in.h:247:1 */
  4839  
  4840  type ip_mreqn = struct {
  4841  	Fimr_multiaddr struct{ Fs_addr in_addr_t }
  4842  	Fimr_address   struct{ Fs_addr in_addr_t }
  4843  	Fimr_ifindex   int32
  4844  } /* in.h:252:1 */
  4845  
  4846  type ip_mreq_source = struct {
  4847  	Fimr_multiaddr  struct{ Fs_addr in_addr_t }
  4848  	Fimr_interface  struct{ Fs_addr in_addr_t }
  4849  	Fimr_sourceaddr struct{ Fs_addr in_addr_t }
  4850  } /* in.h:258:1 */
  4851  
  4852  type ip_msfilter = struct {
  4853  	Fimsf_multiaddr struct{ Fs_addr in_addr_t }
  4854  	Fimsf_interface struct{ Fs_addr in_addr_t }
  4855  	Fimsf_fmode     uint32_t
  4856  	Fimsf_numsrc    uint32_t
  4857  	Fimsf_slist     [1]struct{ Fs_addr in_addr_t }
  4858  } /* in.h:264:1 */
  4859  
  4860  type group_req = struct {
  4861  	Fgr_interface uint32_t
  4862  	Fgr_group     struct {
  4863  		Fss_family    sa_family_t
  4864  		F__ss_padding [122]uint8
  4865  		F__ss_align   uint32
  4866  	}
  4867  } /* in.h:275:1 */
  4868  
  4869  type group_source_req = struct {
  4870  	Fgsr_interface uint32_t
  4871  	Fgsr_group     struct {
  4872  		Fss_family    sa_family_t
  4873  		F__ss_padding [122]uint8
  4874  		F__ss_align   uint32
  4875  	}
  4876  	Fgsr_source struct {
  4877  		Fss_family    sa_family_t
  4878  		F__ss_padding [122]uint8
  4879  		F__ss_align   uint32
  4880  	}
  4881  } /* in.h:280:1 */
  4882  
  4883  type group_filter = struct {
  4884  	Fgf_interface uint32_t
  4885  	Fgf_group     struct {
  4886  		Fss_family    sa_family_t
  4887  		F__ss_padding [122]uint8
  4888  		F__ss_align   uint32
  4889  	}
  4890  	Fgf_fmode  uint32_t
  4891  	Fgf_numsrc uint32_t
  4892  	Fgf_slist  [1]struct {
  4893  		Fss_family    sa_family_t
  4894  		F__ss_padding [122]uint8
  4895  		F__ss_align   uint32
  4896  	}
  4897  } /* in.h:286:1 */
  4898  
  4899  type in_pktinfo = struct {
  4900  	Fipi_ifindex  int32
  4901  	Fipi_spec_dst struct{ Fs_addr in_addr_t }
  4902  	Fipi_addr     struct{ Fs_addr in_addr_t }
  4903  } /* in.h:297:1 */
  4904  
  4905  type in6_pktinfo = struct {
  4906  	Fipi6_addr struct {
  4907  		F__in6_union struct {
  4908  			F__ccgo_pad1 [0]uint32
  4909  			F__s6_addr   [16]uint8_t
  4910  		}
  4911  	}
  4912  	Fipi6_ifindex uint32
  4913  } /* in.h:303:1 */
  4914  
  4915  type ip6_mtuinfo = struct {
  4916  	Fip6m_addr struct {
  4917  		Fsin6_family   sa_family_t
  4918  		Fsin6_port     in_port_t
  4919  		Fsin6_flowinfo uint32_t
  4920  		Fsin6_addr     struct {
  4921  			F__in6_union struct {
  4922  				F__ccgo_pad1 [0]uint32
  4923  				F__s6_addr   [16]uint8_t
  4924  			}
  4925  		}
  4926  		Fsin6_scope_id uint32_t
  4927  	}
  4928  	Fip6m_mtu uint32_t
  4929  } /* in.h:308:1 */
  4930  
  4931  type addrinfo = struct {
  4932  	Fai_flags     int32
  4933  	Fai_family    int32
  4934  	Fai_socktype  int32
  4935  	Fai_protocol  int32
  4936  	Fai_addrlen   socklen_t
  4937  	Fai_addr      uintptr
  4938  	Fai_canonname uintptr
  4939  	Fai_next      uintptr
  4940  } /* netdb.h:16:1 */
  4941  
  4942  // Legacy functions follow (marked OBsolete in SUS)
  4943  
  4944  type netent = struct {
  4945  	Fn_name     uintptr
  4946  	Fn_aliases  uintptr
  4947  	Fn_addrtype int32
  4948  	Fn_net      uint32_t
  4949  } /* netdb.h:62:1 */
  4950  
  4951  type hostent = struct {
  4952  	Fh_name      uintptr
  4953  	Fh_aliases   uintptr
  4954  	Fh_addrtype  int32
  4955  	Fh_length    int32
  4956  	Fh_addr_list uintptr
  4957  } /* netdb.h:69:1 */
  4958  
  4959  type servent = struct {
  4960  	Fs_name    uintptr
  4961  	Fs_aliases uintptr
  4962  	Fs_port    int32
  4963  	Fs_proto   uintptr
  4964  } /* netdb.h:78:1 */
  4965  
  4966  type protoent = struct {
  4967  	Fp_name    uintptr
  4968  	Fp_aliases uintptr
  4969  	Fp_proto   int32
  4970  } /* netdb.h:85:1 */
  4971  
  4972  type aibuf = struct {
  4973  	Fai struct {
  4974  		Fai_flags     int32
  4975  		Fai_family    int32
  4976  		Fai_socktype  int32
  4977  		Fai_protocol  int32
  4978  		Fai_addrlen   socklen_t
  4979  		Fai_addr      uintptr
  4980  		Fai_canonname uintptr
  4981  		Fai_next      uintptr
  4982  	}
  4983  	Fsa struct {
  4984  		Fsin struct {
  4985  			Fsin_family sa_family_t
  4986  			Fsin_port   in_port_t
  4987  			Fsin_addr   struct{ Fs_addr in_addr_t }
  4988  			Fsin_zero   [8]uint8_t
  4989  		}
  4990  		F__ccgo_pad1 [12]byte
  4991  	}
  4992  	Flock [1]int32
  4993  	Fslot int16
  4994  	Fref  int16
  4995  } /* lookup.h:10:1 */
  4996  
  4997  type sa = struct {
  4998  	Fsin struct {
  4999  		Fsin_family sa_family_t
  5000  		Fsin_port   in_port_t
  5001  		Fsin_addr   struct{ Fs_addr in_addr_t }
  5002  		Fsin_zero   [8]uint8_t
  5003  	}
  5004  	F__ccgo_pad1 [12]byte
  5005  } /* lookup.h:10:1 */
  5006  
  5007  type address = struct {
  5008  	Ffamily  int32
  5009  	Fscopeid uint32
  5010  	Faddr    [16]uint8_t
  5011  	Fsortkey int32
  5012  } /* lookup.h:20:1 */
  5013  
  5014  type service = struct {
  5015  	Fport     uint16_t
  5016  	Fproto    uint8
  5017  	Fsocktype uint8
  5018  } /* lookup.h:27:1 */
  5019  
  5020  type resolvconf = struct {
  5021  	Fns [3]struct {
  5022  		Ffamily  int32
  5023  		Fscopeid uint32
  5024  		Faddr    [16]uint8_t
  5025  		Fsortkey int32
  5026  	}
  5027  	Fnns      uint32
  5028  	Fattempts uint32
  5029  	Fndots    uint32
  5030  	Ftimeout  uint32
  5031  } /* lookup.h:34:1 */
  5032  
  5033  func Xfreeaddrinfo(tls *TLS, p uintptr) { /* freeaddrinfo.c:7:6: */
  5034  	var cnt size_t
  5035  	cnt = size_t(1)
  5036  __1:
  5037  	if !((*addrinfo)(unsafe.Pointer(p)).Fai_next != 0) {
  5038  		goto __3
  5039  	}
  5040  	goto __2
  5041  __2:
  5042  	cnt++
  5043  	p = (*addrinfo)(unsafe.Pointer(p)).Fai_next
  5044  	goto __1
  5045  	goto __3
  5046  __3:
  5047  	;
  5048  	var b uintptr = p - uintptr(uint32(uintptr(0)))
  5049  	b -= 68 * uintptr((*aibuf)(unsafe.Pointer(b)).Fslot)
  5050  	//TODO LOCK(b->lock);
  5051  	if !(int32(AssignSubPtrInt16(b+66, int16(cnt))) != 0) {
  5052  		Xfree(tls, b)
  5053  	}
  5054  	//TODO else UNLOCK(b->lock);
  5055  }
  5056  
  5057  type time_t = int64 /* alltypes.h:78:16 */
  5058  
  5059  type clockid_t = int32 /* alltypes.h:207:13 */
  5060  
  5061  type timespec = struct {
  5062  	Ftv_sec  time_t
  5063  	Ftv_nsec int32
  5064  	__12     uint32 /* int : 32 */
  5065  } /* alltypes.h:222:1 */
  5066  
  5067  type pthread_t = uintptr /* alltypes.h:266:26 */
  5068  
  5069  type pthread_once_t = int32 /* alltypes.h:272:13 */
  5070  
  5071  type pthread_key_t = uint32 /* alltypes.h:277:18 */
  5072  
  5073  type pthread_spinlock_t = int32 /* alltypes.h:282:13 */
  5074  
  5075  type pthread_mutexattr_t = struct{ F__attr uint32 } /* alltypes.h:287:37 */
  5076  
  5077  type pthread_condattr_t = struct{ F__attr uint32 } /* alltypes.h:292:37 */
  5078  
  5079  type pthread_barrierattr_t = struct{ F__attr uint32 } /* alltypes.h:297:37 */
  5080  
  5081  type pthread_rwlockattr_t = struct{ F__attr [2]uint32 } /* alltypes.h:302:40 */
  5082  
  5083  type __sigset_t = struct{ F__bits [32]uint32 } /* alltypes.h:342:9 */
  5084  
  5085  type sigset_t = __sigset_t /* alltypes.h:342:71 */
  5086  
  5087  type pthread_attr_t = struct{ F__u struct{ F__i [9]int32 } } /* alltypes.h:365:147 */
  5088  
  5089  type pthread_mutex_t = struct{ F__u struct{ F__i [6]int32 } } /* alltypes.h:370:157 */
  5090  
  5091  type pthread_cond_t = struct{ F__u struct{ F__i [12]int32 } } /* alltypes.h:380:112 */
  5092  
  5093  type pthread_rwlock_t = struct{ F__u struct{ F__i [8]int32 } } /* alltypes.h:390:139 */
  5094  
  5095  type pthread_barrier_t = struct{ F__u struct{ F__i [5]int32 } } /* alltypes.h:395:137 */
  5096  
  5097  type sched_param = struct {
  5098  	Fsched_priority int32
  5099  	F__reserved1    int32
  5100  	F__reserved2    [4]int32
  5101  	F__reserved3    int32
  5102  } /* sched.h:19:1 */
  5103  
  5104  type timer_t = uintptr /* alltypes.h:202:14 */
  5105  
  5106  type clock_t = int32 /* alltypes.h:212:14 */
  5107  
  5108  type tm = struct {
  5109  	Ftm_sec    int32
  5110  	Ftm_min    int32
  5111  	Ftm_hour   int32
  5112  	Ftm_mday   int32
  5113  	Ftm_mon    int32
  5114  	Ftm_year   int32
  5115  	Ftm_wday   int32
  5116  	Ftm_yday   int32
  5117  	Ftm_isdst  int32
  5118  	Ftm_gmtoff int32
  5119  	Ftm_zone   uintptr
  5120  } /* time.h:38:1 */
  5121  
  5122  type itimerspec = struct {
  5123  	Fit_interval struct {
  5124  		Ftv_sec  time_t
  5125  		Ftv_nsec int32
  5126  		__12     uint32 /* int : 32 */
  5127  	}
  5128  	Fit_value struct {
  5129  		Ftv_sec  time_t
  5130  		Ftv_nsec int32
  5131  		__12     uint32 /* int : 32 */
  5132  	}
  5133  } /* time.h:80:1 */
  5134  
  5135  type __ptcb = struct {
  5136  	F__f    uintptr
  5137  	F__x    uintptr
  5138  	F__next uintptr
  5139  } /* pthread.h:206:1 */
  5140  
  5141  type useconds_t = uint32 /* alltypes.h:253:18 */
  5142  
  5143  func Xgetaddrinfo(tls *TLS, host uintptr, serv uintptr, hint uintptr, res uintptr) int32 { /* getaddrinfo.c:12:5: */
  5144  	bp := tls.Alloc(1608)
  5145  	defer tls.Free(1608)
  5146  
  5147  	// var ports [2]service at bp, 8
  5148  
  5149  	// var addrs [48]address at bp+8, 1344
  5150  
  5151  	// var canon [256]uint8 at bp+1352, 256
  5152  
  5153  	var outcanon uintptr
  5154  	var nservs int32
  5155  	var naddrs int32
  5156  	var nais int32
  5157  	var canon_len int32
  5158  	var i int32
  5159  	var j int32
  5160  	var k int32
  5161  	var family int32 = 0
  5162  	var flags int32 = 0
  5163  	var proto int32 = 0
  5164  	var socktype int32 = 0
  5165  	var out uintptr
  5166  
  5167  	if !(host != 0) && !(serv != 0) {
  5168  		return -2
  5169  	}
  5170  
  5171  	if hint != 0 {
  5172  		family = (*addrinfo)(unsafe.Pointer(hint)).Fai_family
  5173  		flags = (*addrinfo)(unsafe.Pointer(hint)).Fai_flags
  5174  		proto = (*addrinfo)(unsafe.Pointer(hint)).Fai_protocol
  5175  		socktype = (*addrinfo)(unsafe.Pointer(hint)).Fai_socktype
  5176  
  5177  		var mask int32 = 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x400
  5178  		if flags&mask != flags {
  5179  			return -1
  5180  		}
  5181  
  5182  		switch family {
  5183  		case 2:
  5184  			fallthrough
  5185  		case 10:
  5186  			fallthrough
  5187  		case 0:
  5188  			break
  5189  			fallthrough
  5190  		default:
  5191  			return -6
  5192  		}
  5193  	}
  5194  
  5195  	if flags&0x20 != 0 {
  5196  		Xabort(tls) //TODO-
  5197  		// 	/* Define the "an address is configured" condition for address
  5198  		// 	 * families via ability to create a socket for the family plus
  5199  		// 	 * routability of the loopback address for the family. */
  5200  		// 	static const struct sockaddr_in lo4 = {
  5201  		// 		.sin_family = AF_INET, .sin_port = 65535,
  5202  		// 		.sin_addr.s_addr = __BYTE_ORDER == __BIG_ENDIAN
  5203  		// 			? 0x7f000001 : 0x0100007f
  5204  		// 	};
  5205  		// 	static const struct sockaddr_in6 lo6 = {
  5206  		// 		.sin6_family = AF_INET6, .sin6_port = 65535,
  5207  		// 		.sin6_addr = IN6ADDR_LOOPBACK_INIT
  5208  		// 	};
  5209  		// 	int tf[2] = { AF_INET, AF_INET6 };
  5210  		// 	const void *ta[2] = { &lo4, &lo6 };
  5211  		// 	socklen_t tl[2] = { sizeof lo4, sizeof lo6 };
  5212  		// 	for (i=0; i<2; i++) {
  5213  		// 		if (family==tf[1-i]) continue;
  5214  		// 		int s = socket(tf[i], SOCK_CLOEXEC|SOCK_DGRAM,
  5215  		// 			IPPROTO_UDP);
  5216  		// 		if (s>=0) {
  5217  		// 			int cs;
  5218  		// 			pthread_setcancelstate(
  5219  		// 				PTHREAD_CANCEL_DISABLE, &cs);
  5220  		// 			int r = connect(s, ta[i], tl[i]);
  5221  		// 			pthread_setcancelstate(cs, 0);
  5222  		// 			close(s);
  5223  		// 			if (!r) continue;
  5224  		// 		}
  5225  		// 		switch (errno) {
  5226  		// 		case EADDRNOTAVAIL:
  5227  		// 		case EAFNOSUPPORT:
  5228  		// 		case EHOSTUNREACH:
  5229  		// 		case ENETDOWN:
  5230  		// 		case ENETUNREACH:
  5231  		// 			break;
  5232  		// 		default:
  5233  		// 			return EAI_SYSTEM;
  5234  		// 		}
  5235  		// 		if (family == tf[i]) return EAI_NONAME;
  5236  		// 		family = tf[1-i];
  5237  		// 	}
  5238  	}
  5239  
  5240  	nservs = X__lookup_serv(tls, bp, serv, proto, socktype, flags)
  5241  	if nservs < 0 {
  5242  		return nservs
  5243  	}
  5244  
  5245  	naddrs = X__lookup_name(tls, bp+8, bp+1352, host, family, flags)
  5246  	if naddrs < 0 {
  5247  		return naddrs
  5248  	}
  5249  
  5250  	nais = nservs * naddrs
  5251  	canon_len = int32(Xstrlen(tls, bp+1352))
  5252  	out = Xcalloc(tls, uint32(1), uint32(nais)*uint32(unsafe.Sizeof(aibuf{}))+uint32(canon_len)+uint32(1))
  5253  	if !(out != 0) {
  5254  		return -10
  5255  	}
  5256  
  5257  	if canon_len != 0 {
  5258  		outcanon = out + uintptr(nais)*68
  5259  		Xmemcpy(tls, outcanon, bp+1352, uint32(canon_len+1))
  5260  	} else {
  5261  		outcanon = uintptr(0)
  5262  	}
  5263  
  5264  	for k = AssignInt32(&i, 0); i < naddrs; i++ {
  5265  		j = 0
  5266  	__1:
  5267  		if !(j < nservs) {
  5268  			goto __3
  5269  		}
  5270  		{
  5271  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fslot = int16(k)
  5272  			//TODO out[k].ai = (struct addrinfo){
  5273  			//TODO 	.ai_family = addrs[i].family,
  5274  			//TODO 	.ai_socktype = ports[j].socktype,
  5275  			//TODO 	.ai_protocol = ports[j].proto,
  5276  			//TODO 	.ai_addrlen = addrs[i].family == AF_INET
  5277  			//TODO 		? sizeof(struct sockaddr_in)
  5278  			//TODO 		: sizeof(struct sockaddr_in6),
  5279  			//TODO 	.ai_addr = (void *)&out[k].sa,
  5280  			//TODO 	.ai_canonname = outcanon };
  5281  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fai.Fai_family = (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).Ffamily
  5282  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fai.Fai_socktype = int32((*service)(unsafe.Pointer(bp + uintptr(j)*4)).Fsocktype)
  5283  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fai.Fai_protocol = int32((*service)(unsafe.Pointer(bp + uintptr(j)*4)).Fproto)
  5284  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fai.Fai_addrlen = func() uint32 {
  5285  				if (*address)(unsafe.Pointer(bp+8+uintptr(i)*28)).Ffamily == 2 {
  5286  					return uint32(unsafe.Sizeof(sockaddr_in{}))
  5287  				}
  5288  				return uint32(unsafe.Sizeof(sockaddr_in6{}))
  5289  			}()
  5290  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fai.Fai_addr = out + uintptr(k)*68 + 32
  5291  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*68)).Fai.Fai_canonname = outcanon
  5292  			if k != 0 {
  5293  				(*aibuf)(unsafe.Pointer(out + uintptr(k-1)*68)).Fai.Fai_next = out + uintptr(k)*68
  5294  			}
  5295  			switch (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).Ffamily {
  5296  			case 2:
  5297  				(*sockaddr_in)(unsafe.Pointer(out + uintptr(k)*68 + 32)).Fsin_family = sa_family_t(2)
  5298  				(*sockaddr_in)(unsafe.Pointer(out + uintptr(k)*68 + 32)).Fsin_port = Xhtons(tls, (*service)(unsafe.Pointer(bp+uintptr(j)*4)).Fport)
  5299  				Xmemcpy(tls, out+uintptr(k)*68+32+4, bp+8+uintptr(i)*28+8, uint32(4))
  5300  				break
  5301  			case 10:
  5302  				(*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*68 + 32)).Fsin6_family = sa_family_t(10)
  5303  				(*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*68 + 32)).Fsin6_port = Xhtons(tls, (*service)(unsafe.Pointer(bp+uintptr(j)*4)).Fport)
  5304  				(*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*68 + 32)).Fsin6_scope_id = (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).Fscopeid
  5305  				Xmemcpy(tls, out+uintptr(k)*68+32+8, bp+8+uintptr(i)*28+8, uint32(16))
  5306  				break
  5307  			}
  5308  
  5309  		}
  5310  		goto __2
  5311  	__2:
  5312  		j++
  5313  		k++
  5314  		goto __1
  5315  		goto __3
  5316  	__3:
  5317  	}
  5318  	(*aibuf)(unsafe.Pointer(out)).Fref = int16(nais)
  5319  	*(*uintptr)(unsafe.Pointer(res)) = out
  5320  	return 0
  5321  }
  5322  
  5323  type ucred = struct {
  5324  	Fpid pid_t
  5325  	Fuid uid_t
  5326  	Fgid gid_t
  5327  } /* socket.h:57:1 */
  5328  
  5329  type mmsghdr = struct {
  5330  	Fmsg_hdr struct {
  5331  		Fmsg_name       uintptr
  5332  		Fmsg_namelen    socklen_t
  5333  		Fmsg_iov        uintptr
  5334  		Fmsg_iovlen     int32
  5335  		Fmsg_control    uintptr
  5336  		Fmsg_controllen socklen_t
  5337  		Fmsg_flags      int32
  5338  	}
  5339  	Fmsg_len uint32
  5340  } /* socket.h:63:1 */
  5341  
  5342  func Xgethostbyaddr(tls *TLS, a uintptr, l socklen_t, af int32) uintptr { /* gethostbyaddr.c:7:16: */
  5343  	bp := tls.Alloc(4)
  5344  	defer tls.Free(4)
  5345  
  5346  	var size size_t = size_t(63)
  5347  	// var res uintptr at bp, 4
  5348  
  5349  	var err int32
  5350  	for __ccgo := true; __ccgo; __ccgo = err == 34 {
  5351  		Xfree(tls, _sh)
  5352  		_sh = Xmalloc(tls, AssignAddUint32(&size, size+size_t(1)))
  5353  		if !(_sh != 0) {
  5354  			*(*int32)(unsafe.Pointer(X__h_errno_location(tls))) = 3
  5355  			return uintptr(0)
  5356  		}
  5357  		err = Xgethostbyaddr_r(tls, a, l, af, _sh,
  5358  			_sh+uintptr(1)*20, size-size_t(unsafe.Sizeof(hostent{})), bp, X__h_errno_location(tls))
  5359  	}
  5360  	if err != 0 {
  5361  		return uintptr(0)
  5362  	}
  5363  	return _sh
  5364  }
  5365  
  5366  var _sh uintptr /* gethostbyaddr.c:9:24: */
  5367  
  5368  func Xgethostbyname(tls *TLS, name uintptr) uintptr { /* gethostbyname.c:8:16: */
  5369  	return Xgethostbyname2(tls, name, 2)
  5370  }
  5371  
  5372  func Xgethostbyname2(tls *TLS, name uintptr, af int32) uintptr { /* gethostbyname2.c:8:16: */
  5373  	bp := tls.Alloc(4)
  5374  	defer tls.Free(4)
  5375  
  5376  	var size size_t = size_t(63)
  5377  	// var res uintptr at bp, 4
  5378  
  5379  	var err int32
  5380  	for __ccgo := true; __ccgo; __ccgo = err == 34 {
  5381  		Xfree(tls, _sh1)
  5382  		_sh1 = Xmalloc(tls, AssignAddUint32(&size, size+size_t(1)))
  5383  		if !(_sh1 != 0) {
  5384  			*(*int32)(unsafe.Pointer(X__h_errno_location(tls))) = 3
  5385  			return uintptr(0)
  5386  		}
  5387  		err = Xgethostbyname2_r(tls, name, af, _sh1,
  5388  			_sh1+uintptr(1)*20, size-size_t(unsafe.Sizeof(hostent{})), bp, X__h_errno_location(tls))
  5389  	}
  5390  	if err != 0 {
  5391  		return uintptr(0)
  5392  	}
  5393  	return _sh1
  5394  }
  5395  
  5396  var _sh1 uintptr /* gethostbyname2.c:10:24: */
  5397  
  5398  func Xgethostbyname2_r(tls *TLS, name uintptr, af int32, h uintptr, buf uintptr, buflen size_t, res uintptr, err uintptr) int32 { /* gethostbyname2_r.c:11:5: */
  5399  	bp := tls.Alloc(1600)
  5400  	defer tls.Free(1600)
  5401  
  5402  	// var addrs [48]address at bp, 1344
  5403  
  5404  	// var canon [256]uint8 at bp+1344, 256
  5405  
  5406  	var i int32
  5407  	var cnt int32
  5408  	var align size_t
  5409  	var need size_t
  5410  
  5411  	*(*uintptr)(unsafe.Pointer(res)) = uintptr(0)
  5412  	cnt = X__lookup_name(tls, bp, bp+1344, name, af, 0x02)
  5413  	if cnt < 0 {
  5414  		switch cnt {
  5415  		case -2:
  5416  			*(*int32)(unsafe.Pointer(err)) = 1
  5417  			return 2
  5418  			fallthrough
  5419  		case -3:
  5420  			*(*int32)(unsafe.Pointer(err)) = 2
  5421  			return 11
  5422  			fallthrough
  5423  		default:
  5424  			fallthrough
  5425  		case -4:
  5426  			*(*int32)(unsafe.Pointer(err)) = 3
  5427  			return 74
  5428  			fallthrough
  5429  		case -10:
  5430  			fallthrough
  5431  		case -11:
  5432  			*(*int32)(unsafe.Pointer(err)) = 3
  5433  			return *(*int32)(unsafe.Pointer(X___errno_location(tls)))
  5434  		}
  5435  	}
  5436  
  5437  	(*hostent)(unsafe.Pointer(h)).Fh_addrtype = af
  5438  	(*hostent)(unsafe.Pointer(h)).Fh_length = func() int32 {
  5439  		if af == 10 {
  5440  			return 16
  5441  		}
  5442  		return 4
  5443  	}()
  5444  
  5445  	// Align buffer
  5446  	align = -uintptr_t(buf) & (uint32(unsafe.Sizeof(uintptr(0))) - uint32(1))
  5447  
  5448  	need = uint32(4) * uint32(unsafe.Sizeof(uintptr(0)))
  5449  	need = need + uint32(cnt+1)*(uint32(unsafe.Sizeof(uintptr(0)))+uint32((*hostent)(unsafe.Pointer(h)).Fh_length))
  5450  	need = need + (Xstrlen(tls, name) + size_t(1))
  5451  	need = need + (Xstrlen(tls, bp+1344) + size_t(1))
  5452  	need = need + align
  5453  
  5454  	if need > buflen {
  5455  		return 34
  5456  	}
  5457  
  5458  	buf += uintptr(align)
  5459  	(*hostent)(unsafe.Pointer(h)).Fh_aliases = buf
  5460  	buf += uintptr(uint32(3) * uint32(unsafe.Sizeof(uintptr(0))))
  5461  	(*hostent)(unsafe.Pointer(h)).Fh_addr_list = buf
  5462  	buf += uintptr(uint32(cnt+1) * uint32(unsafe.Sizeof(uintptr(0))))
  5463  
  5464  	for i = 0; i < cnt; i++ {
  5465  		*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_addr_list + uintptr(i)*4)) = buf
  5466  		buf += uintptr((*hostent)(unsafe.Pointer(h)).Fh_length)
  5467  		Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_addr_list + uintptr(i)*4)), bp+uintptr(i)*28+8, uint32((*hostent)(unsafe.Pointer(h)).Fh_length))
  5468  	}
  5469  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_addr_list + uintptr(i)*4)) = uintptr(0)
  5470  
  5471  	(*hostent)(unsafe.Pointer(h)).Fh_name = AssignPtrUintptr((*hostent)(unsafe.Pointer(h)).Fh_aliases, buf)
  5472  	Xstrcpy(tls, (*hostent)(unsafe.Pointer(h)).Fh_name, bp+1344)
  5473  	buf += uintptr(Xstrlen(tls, (*hostent)(unsafe.Pointer(h)).Fh_name) + size_t(1))
  5474  
  5475  	if Xstrcmp(tls, (*hostent)(unsafe.Pointer(h)).Fh_name, name) != 0 {
  5476  		*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_aliases + 1*4)) = buf
  5477  		Xstrcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_aliases + 1*4)), name)
  5478  		buf += uintptr(Xstrlen(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_aliases + 1*4))) + size_t(1))
  5479  	} else {
  5480  		*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_aliases + 1*4)) = uintptr(0)
  5481  	}
  5482  
  5483  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).Fh_aliases + 2*4)) = uintptr(0)
  5484  
  5485  	*(*uintptr)(unsafe.Pointer(res)) = h
  5486  	return 0
  5487  }
  5488  
  5489  type if_nameindex = struct {
  5490  	Fif_index uint32
  5491  	Fif_name  uintptr
  5492  } /* if.h:12:1 */
  5493  
  5494  type ifaddr = struct {
  5495  	Fifa_addr struct {
  5496  		Fsa_family sa_family_t
  5497  		Fsa_data   [14]uint8
  5498  	}
  5499  	Fifa_ifu struct {
  5500  		Fifu_broadaddr struct {
  5501  			Fsa_family sa_family_t
  5502  			Fsa_data   [14]uint8
  5503  		}
  5504  	}
  5505  	Fifa_ifp  uintptr
  5506  	Fifa_next uintptr
  5507  } /* if.h:51:1 */
  5508  
  5509  type ifmap = struct {
  5510  	Fmem_start   uint32
  5511  	Fmem_end     uint32
  5512  	Fbase_addr   uint16
  5513  	Firq         uint8
  5514  	Fdma         uint8
  5515  	Fport        uint8
  5516  	F__ccgo_pad1 [3]byte
  5517  } /* if.h:64:1 */
  5518  
  5519  type ifreq = struct {
  5520  	Fifr_ifrn struct{ Fifrn_name [16]uint8 }
  5521  	Fifr_ifru struct {
  5522  		F__ccgo_pad1 [0]uint32
  5523  		Fifru_addr   struct {
  5524  			Fsa_family sa_family_t
  5525  			Fsa_data   [14]uint8
  5526  		}
  5527  	}
  5528  } /* if.h:76:1 */
  5529  
  5530  type ifconf = struct {
  5531  	Fifc_len  int32
  5532  	Fifc_ifcu struct{ Fifcu_buf uintptr }
  5533  } /* if.h:116:1 */
  5534  
  5535  type ns_sect = uint32 /* nameser.h:37:3 */
  5536  
  5537  type __ns_msg = struct {
  5538  	F_msg      uintptr
  5539  	F_eom      uintptr
  5540  	F_id       uint16_t
  5541  	F_flags    uint16_t
  5542  	F_counts   [4]uint16_t
  5543  	F_sections [4]uintptr
  5544  	F_sect     ns_sect
  5545  	F_rrnum    int32
  5546  	F_msg_ptr  uintptr
  5547  } /* nameser.h:39:9 */
  5548  
  5549  type ns_msg = __ns_msg /* nameser.h:46:3 */
  5550  
  5551  type _ns_flagdata = struct {
  5552  	Fmask  int32
  5553  	Fshift int32
  5554  } /* nameser.h:48:1 */
  5555  
  5556  type __ns_rr = struct {
  5557  	Fname        [1025]uint8
  5558  	F__ccgo_pad1 [1]byte
  5559  	Ftype        uint16_t
  5560  	Frr_class    uint16_t
  5561  	F__ccgo_pad2 [2]byte
  5562  	Fttl         uint32_t
  5563  	Frdlength    uint16_t
  5564  	F__ccgo_pad3 [2]byte
  5565  	Frdata       uintptr
  5566  } /* nameser.h:59:9 */
  5567  
  5568  type ns_rr = __ns_rr /* nameser.h:66:3 */
  5569  
  5570  type ns_flag = uint32 /* nameser.h:87:3 */
  5571  
  5572  type ns_opcode = uint32 /* nameser.h:96:3 */
  5573  
  5574  type ns_rcode = uint32 /* nameser.h:115:3 */
  5575  
  5576  type ns_update_operation = uint32 /* nameser.h:121:3 */
  5577  
  5578  type ns_tsig_key1 = struct {
  5579  	Fname        [1025]uint8
  5580  	Falg         [1025]uint8
  5581  	F__ccgo_pad1 [2]byte
  5582  	Fdata        uintptr
  5583  	Flen         int32
  5584  } /* nameser.h:123:1 */
  5585  
  5586  type ns_tsig_key = ns_tsig_key1 /* nameser.h:128:28 */
  5587  
  5588  type ns_tcp_tsig_state1 = struct {
  5589  	Fcounter int32
  5590  	Fkey     uintptr
  5591  	Fctx     uintptr
  5592  	Fsig     [512]uint8
  5593  	Fsiglen  int32
  5594  } /* nameser.h:130:1 */
  5595  
  5596  type ns_tcp_tsig_state = ns_tcp_tsig_state1 /* nameser.h:137:34 */
  5597  
  5598  type ns_type = uint32 /* nameser.h:200:3 */
  5599  
  5600  type ns_class = uint32 /* nameser.h:219:3 */
  5601  
  5602  type ns_key_types = uint32 /* nameser.h:226:3 */
  5603  
  5604  type ns_cert_types = uint32 /* nameser.h:234:3 */
  5605  
  5606  type HEADER = struct {
  5607  	F__ccgo_pad1 [0]uint32
  5608  	Fid          uint32 /* unsigned id: 16, unsigned rd: 1, unsigned tc: 1, unsigned aa: 1, unsigned opcode: 4, unsigned qr: 1, unsigned rcode: 4, unsigned cd: 1, unsigned ad: 1, unsigned unused: 1, unsigned ra: 1 */
  5609  	Fqdcount     uint32 /* unsigned qdcount: 16, unsigned ancount: 16 */
  5610  	Fnscount     uint32 /* unsigned nscount: 16, unsigned arcount: 16 */
  5611  } /* nameser.h:353:3 */
  5612  
  5613  // unused; purely for broken apps
  5614  type __res_state = struct {
  5615  	Fretrans     int32
  5616  	Fretry       int32
  5617  	Foptions     uint32
  5618  	Fnscount     int32
  5619  	Fnsaddr_list [3]struct {
  5620  		Fsin_family sa_family_t
  5621  		Fsin_port   in_port_t
  5622  		Fsin_addr   struct{ Fs_addr in_addr_t }
  5623  		Fsin_zero   [8]uint8_t
  5624  	}
  5625  	Fid          uint16
  5626  	F__ccgo_pad1 [2]byte
  5627  	Fdnsrch      [7]uintptr
  5628  	Fdefdname    [256]uint8
  5629  	Fpfcode      uint32
  5630  	Fndots       uint32 /* unsigned ndots: 4, unsigned nsort: 4, unsigned ipv6_unavail: 1, unsigned unused: 23 */
  5631  	F__ccgo_pad2 [4]byte
  5632  	Fsort_list   [10]struct {
  5633  		Faddr struct{ Fs_addr in_addr_t }
  5634  		Fmask uint32_t
  5635  	}
  5636  	Fqhook       uintptr
  5637  	Frhook       uintptr
  5638  	Fres_h_errno int32
  5639  	F_vcsock     int32
  5640  	F_flags      uint32
  5641  	F_u          struct {
  5642  		F__ccgo_pad1 [0]uint32
  5643  		Fpad         [52]uint8
  5644  	}
  5645  } /* resolv.h:26:9 */
  5646  
  5647  // unused; purely for broken apps
  5648  type res_state = uintptr /* resolv.h:62:3 */
  5649  
  5650  type res_sym = struct {
  5651  	Fnumber    int32
  5652  	Fname      uintptr
  5653  	Fhumanname uintptr
  5654  } /* resolv.h:70:1 */
  5655  
  5656  func itoa(tls *TLS, p uintptr, x uint32) uintptr { /* getnameinfo.c:18:13: */
  5657  	p += uintptr(uint32(3) * uint32(unsafe.Sizeof(int32(0))))
  5658  	*(*uint8)(unsafe.Pointer(PreDecUintptr(&p, 1))) = uint8(0)
  5659  	for __ccgo := true; __ccgo; __ccgo = x != 0 {
  5660  		*(*uint8)(unsafe.Pointer(PreDecUintptr(&p, 1))) = uint8(uint32('0') + x%uint32(10))
  5661  		x = x / uint32(10)
  5662  	}
  5663  	return p
  5664  }
  5665  
  5666  func mkptr4(tls *TLS, s uintptr, ip uintptr) { /* getnameinfo.c:28:13: */
  5667  	bp := tls.Alloc(32)
  5668  	defer tls.Free(32)
  5669  
  5670  	Xsprintf(tls, s, ts+64,
  5671  		VaList(bp, int32(*(*uint8)(unsafe.Pointer(ip + 3))), int32(*(*uint8)(unsafe.Pointer(ip + 2))), int32(*(*uint8)(unsafe.Pointer(ip + 1))), int32(*(*uint8)(unsafe.Pointer(ip)))))
  5672  }
  5673  
  5674  func mkptr6(tls *TLS, s uintptr, ip uintptr) { /* getnameinfo.c:34:13: */
  5675  	var i int32
  5676  	for i = 15; i >= 0; i-- {
  5677  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = _sxdigits[int32(*(*uint8)(unsafe.Pointer(ip + uintptr(i))))&15]
  5678  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = uint8('.')
  5679  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = _sxdigits[int32(*(*uint8)(unsafe.Pointer(ip + uintptr(i))))>>4]
  5680  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = uint8('.')
  5681  	}
  5682  	Xstrcpy(tls, s, ts+89)
  5683  }
  5684  
  5685  var _sxdigits = *(*[17]uint8)(unsafe.Pointer(ts + 98)) /* getnameinfo.c:36:20 */
  5686  
  5687  func reverse_hosts(tls *TLS, buf uintptr, a uintptr, scopeid uint32, family int32) { /* getnameinfo.c:45:13: */
  5688  	bp := tls.Alloc(556)
  5689  	defer tls.Free(556)
  5690  
  5691  	// var line [512]uint8 at bp+16, 512
  5692  
  5693  	var p uintptr
  5694  	var z uintptr
  5695  	var _buf [1032]uint8
  5696  	_ = _buf
  5697  	// var atmp [16]uint8 at bp, 16
  5698  
  5699  	// var iplit address at bp+528, 28
  5700  
  5701  	//TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
  5702  	var f uintptr = Xfopen(tls, ts+115, ts+126)
  5703  	if !(f != 0) {
  5704  		return
  5705  	}
  5706  	if family == 2 {
  5707  		Xmemcpy(tls, bp+uintptr(12), a, uint32(4))
  5708  		Xmemcpy(tls, bp, ts+129, uint32(12))
  5709  		a = bp /* &atmp[0] */
  5710  	}
  5711  	for Xfgets(tls, bp+16, int32(unsafe.Sizeof([512]uint8{})), f) != 0 {
  5712  		if AssignUintptr(&p, Xstrchr(tls, bp+16, '#')) != 0 {
  5713  			*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8('\n')
  5714  			*(*uint8)(unsafe.Pointer(p)) = uint8(0)
  5715  		}
  5716  
  5717  		for p = bp + 16; /* &line[0] */ *(*uint8)(unsafe.Pointer(p)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0); p++ {
  5718  		}
  5719  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8(0)
  5720  		if X__lookup_ipliteral(tls, bp+528, bp+16, 0) <= 0 {
  5721  			continue
  5722  		}
  5723  
  5724  		if (*address)(unsafe.Pointer(bp+528)).Ffamily == 2 {
  5725  			Xmemcpy(tls, bp+528+8+uintptr(12), bp+528+8, uint32(4))
  5726  			Xmemcpy(tls, bp+528+8, ts+129, uint32(12))
  5727  			(*address)(unsafe.Pointer(bp + 528 /* &iplit */)).Fscopeid = uint32(0)
  5728  		}
  5729  
  5730  		if Xmemcmp(tls, a, bp+528+8, uint32(16)) != 0 || (*address)(unsafe.Pointer(bp+528)).Fscopeid != scopeid {
  5731  			continue
  5732  		}
  5733  
  5734  		for ; *(*uint8)(unsafe.Pointer(p)) != 0 && __isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0; p++ {
  5735  		}
  5736  		for z = p; *(*uint8)(unsafe.Pointer(z)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(z)))) != 0); z++ {
  5737  		}
  5738  		*(*uint8)(unsafe.Pointer(z)) = uint8(0)
  5739  		if (int32(z)-int32(p))/1 < 256 {
  5740  			Xmemcpy(tls, buf, p, uint32((int32(z)-int32(p))/1+1))
  5741  			break
  5742  		}
  5743  	}
  5744  	//TODO __fclose_ca(f);
  5745  	Xfclose(tls, f)
  5746  }
  5747  
  5748  func reverse_services(tls *TLS, buf uintptr, port int32, dgram int32) { /* getnameinfo.c:87:13: */
  5749  	Xabort(tls) //TODO-
  5750  	// unsigned long svport;
  5751  	// char line[128], *p, *z;
  5752  	// unsigned char _buf[1032];
  5753  	// FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
  5754  	// if (!f) return;
  5755  	// while (fgets(line, sizeof line, f)) {
  5756  	// 	if ((p=strchr(line, '#'))) *p++='\n', *p=0;
  5757  
  5758  	// 	for (p=line; *p && !isspace(*p); p++);
  5759  	// 	if (!*p) continue;
  5760  	// 	*p++ = 0;
  5761  	// 	svport = strtoul(p, &z, 10);
  5762  
  5763  	// 	if (svport != port || z==p) continue;
  5764  	// 	if (dgram && strncmp(z, "/udp", 4)) continue;
  5765  	// 	if (!dgram && strncmp(z, "/tcp", 4)) continue;
  5766  	// 	if (p-line > 32) continue;
  5767  
  5768  	// 	memcpy(buf, line, p-line);
  5769  	// 	break;
  5770  	// }
  5771  	// __fclose_ca(f);
  5772  }
  5773  
  5774  var Xh_errno int32 /* h_errno.c:4:5: */
  5775  
  5776  func X__h_errno_location(tls *TLS) uintptr { /* h_errno.c:6:5: */
  5777  	return uintptr(unsafe.Pointer(&Xh_errno))
  5778  }
  5779  
  5780  func X__inet_aton(tls *TLS, s0 uintptr, dest uintptr) int32 { /* inet_aton.c:7:5: */
  5781  	bp := tls.Alloc(20)
  5782  	defer tls.Free(20)
  5783  
  5784  	var s uintptr = s0
  5785  	var d uintptr = dest
  5786  	*(*[4]uint32)(unsafe.Pointer(bp /* a */)) = [4]uint32{0: uint32(0)}
  5787  	// var z uintptr at bp+16, 4
  5788  
  5789  	var i int32
  5790  
  5791  	for i = 0; i < 4; i++ {
  5792  		*(*uint32)(unsafe.Pointer(bp + uintptr(i)*4)) = Xstrtoul(tls, s, bp+16, 0)
  5793  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == s || *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)))) != 0 && int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16))))) != '.' || !(func() int32 {
  5794  			if 0 != 0 {
  5795  				return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(s))))
  5796  			}
  5797  			return Bool32(uint32(*(*uint8)(unsafe.Pointer(s)))-uint32('0') < uint32(10))
  5798  		}() != 0) {
  5799  			return 0
  5800  		}
  5801  		if !(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16))))) != 0) {
  5802  			break
  5803  		}
  5804  		s = *(*uintptr)(unsafe.Pointer(bp + 16)) + uintptr(1)
  5805  	}
  5806  	if i == 4 {
  5807  		return 0
  5808  	}
  5809  	switch i {
  5810  	case 0:
  5811  		*(*uint32)(unsafe.Pointer(bp + 1*4)) = *(*uint32)(unsafe.Pointer(bp)) & uint32(0xffffff)
  5812  		AssignShrPtrUint32(bp, int(24))
  5813  		fallthrough
  5814  	case 1:
  5815  		*(*uint32)(unsafe.Pointer(bp + 2*4)) = *(*uint32)(unsafe.Pointer(bp + 1*4)) & uint32(0xffff)
  5816  		AssignShrPtrUint32(bp+1*4, int(16))
  5817  		fallthrough
  5818  	case 2:
  5819  		*(*uint32)(unsafe.Pointer(bp + 3*4)) = *(*uint32)(unsafe.Pointer(bp + 2*4)) & uint32(0xff)
  5820  		AssignShrPtrUint32(bp+2*4, int(8))
  5821  	}
  5822  	for i = 0; i < 4; i++ {
  5823  		if *(*uint32)(unsafe.Pointer(bp + uintptr(i)*4)) > uint32(255) {
  5824  			return 0
  5825  		}
  5826  		*(*uint8)(unsafe.Pointer(d + uintptr(i))) = uint8(*(*uint32)(unsafe.Pointer(bp + uintptr(i)*4)))
  5827  	}
  5828  	return 1
  5829  }
  5830  
  5831  func Xinet_ntop(tls *TLS, af int32, a0 uintptr, s uintptr, l socklen_t) uintptr { /* inet_ntop.c:7:12: */
  5832  	bp := tls.Alloc(276)
  5833  	defer tls.Free(276)
  5834  
  5835  	var a uintptr = a0
  5836  	var i int32
  5837  	var j int32
  5838  	var max int32
  5839  	var best int32
  5840  	// var buf [100]uint8 at bp+176, 100
  5841  
  5842  	switch af {
  5843  	case 2:
  5844  		if socklen_t(Xsnprintf(tls, s, l, ts+142, VaList(bp, int32(*(*uint8)(unsafe.Pointer(a))), int32(*(*uint8)(unsafe.Pointer(a + 1))), int32(*(*uint8)(unsafe.Pointer(a + 2))), int32(*(*uint8)(unsafe.Pointer(a + 3)))))) < l {
  5845  			return s
  5846  		}
  5847  		break
  5848  	case 10:
  5849  		if Xmemcmp(tls, a, ts+129, uint32(12)) != 0 {
  5850  			Xsnprintf(tls, bp+176, uint32(unsafe.Sizeof([100]uint8{})),
  5851  				ts+154,
  5852  				VaList(bp+32, 256*int32(*(*uint8)(unsafe.Pointer(a)))+int32(*(*uint8)(unsafe.Pointer(a + 1))), 256*int32(*(*uint8)(unsafe.Pointer(a + 2)))+int32(*(*uint8)(unsafe.Pointer(a + 3))),
  5853  					256*int32(*(*uint8)(unsafe.Pointer(a + 4)))+int32(*(*uint8)(unsafe.Pointer(a + 5))), 256*int32(*(*uint8)(unsafe.Pointer(a + 6)))+int32(*(*uint8)(unsafe.Pointer(a + 7))),
  5854  					256*int32(*(*uint8)(unsafe.Pointer(a + 8)))+int32(*(*uint8)(unsafe.Pointer(a + 9))), 256*int32(*(*uint8)(unsafe.Pointer(a + 10)))+int32(*(*uint8)(unsafe.Pointer(a + 11))),
  5855  					256*int32(*(*uint8)(unsafe.Pointer(a + 12)))+int32(*(*uint8)(unsafe.Pointer(a + 13))), 256*int32(*(*uint8)(unsafe.Pointer(a + 14)))+int32(*(*uint8)(unsafe.Pointer(a + 15)))))
  5856  		} else {
  5857  			Xsnprintf(tls, bp+176, uint32(unsafe.Sizeof([100]uint8{})),
  5858  				ts+178,
  5859  				VaList(bp+96, 256*int32(*(*uint8)(unsafe.Pointer(a)))+int32(*(*uint8)(unsafe.Pointer(a + 1))), 256*int32(*(*uint8)(unsafe.Pointer(a + 2)))+int32(*(*uint8)(unsafe.Pointer(a + 3))),
  5860  					256*int32(*(*uint8)(unsafe.Pointer(a + 4)))+int32(*(*uint8)(unsafe.Pointer(a + 5))), 256*int32(*(*uint8)(unsafe.Pointer(a + 6)))+int32(*(*uint8)(unsafe.Pointer(a + 7))),
  5861  					256*int32(*(*uint8)(unsafe.Pointer(a + 8)))+int32(*(*uint8)(unsafe.Pointer(a + 9))), 256*int32(*(*uint8)(unsafe.Pointer(a + 10)))+int32(*(*uint8)(unsafe.Pointer(a + 11))),
  5862  					int32(*(*uint8)(unsafe.Pointer(a + 12))), int32(*(*uint8)(unsafe.Pointer(a + 13))), int32(*(*uint8)(unsafe.Pointer(a + 14))), int32(*(*uint8)(unsafe.Pointer(a + 15)))))
  5863  		}
  5864  		// Replace longest /(^0|:)[:0]{2,}/ with "::"
  5865  		i = AssignInt32(&best, 0)
  5866  		max = 2
  5867  		for ; *(*uint8)(unsafe.Pointer(bp + 176 + uintptr(i))) != 0; i++ {
  5868  			if i != 0 && int32(*(*uint8)(unsafe.Pointer(bp + 176 + uintptr(i)))) != ':' {
  5869  				continue
  5870  			}
  5871  			j = int32(Xstrspn(tls, bp+176+uintptr(i), ts+208))
  5872  			if j > max {
  5873  				best = i
  5874  				max = j
  5875  			}
  5876  		}
  5877  		if max > 3 {
  5878  			*(*uint8)(unsafe.Pointer(bp + 176 + uintptr(best))) = AssignPtrUint8(bp+176+uintptr(best+1), uint8(':'))
  5879  			Xmemmove(tls, bp+176+uintptr(best)+uintptr(2), bp+176+uintptr(best)+uintptr(max), uint32(i-best-max+1))
  5880  		}
  5881  		if Xstrlen(tls, bp+176) < l {
  5882  			Xstrcpy(tls, s, bp+176)
  5883  			return s
  5884  		}
  5885  		break
  5886  	default:
  5887  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 97
  5888  		return uintptr(0)
  5889  	}
  5890  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 28
  5891  	return uintptr(0)
  5892  }
  5893  
  5894  func hexval(tls *TLS, c uint32) int32 { /* inet_pton.c:7:12: */
  5895  	if c-uint32('0') < uint32(10) {
  5896  		return int32(c - uint32('0'))
  5897  	}
  5898  	c = c | uint32(32)
  5899  	if c-uint32('a') < uint32(6) {
  5900  		return int32(c - uint32('a') + uint32(10))
  5901  	}
  5902  	return -1
  5903  }
  5904  
  5905  func Xinet_pton(tls *TLS, af int32, s uintptr, a0 uintptr) int32 { /* inet_pton.c:15:5: */
  5906  	bp := tls.Alloc(16)
  5907  	defer tls.Free(16)
  5908  
  5909  	// var ip [8]uint16_t at bp, 16
  5910  
  5911  	var a uintptr = a0
  5912  	var i int32
  5913  	var j int32
  5914  	var v int32
  5915  	var d int32
  5916  	var brk int32 = -1
  5917  	var need_v4 int32 = 0
  5918  
  5919  	if af == 2 {
  5920  		for i = 0; i < 4; i++ {
  5921  			for v = AssignInt32(&j, 0); j < 3 && func() int32 {
  5922  				if 0 != 0 {
  5923  					return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))))
  5924  				}
  5925  				return Bool32(uint32(*(*uint8)(unsafe.Pointer(s + uintptr(j))))-uint32('0') < uint32(10))
  5926  			}() != 0; j++ {
  5927  				v = 10*v + int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) - '0'
  5928  			}
  5929  			if j == 0 || j > 1 && int32(*(*uint8)(unsafe.Pointer(s))) == '0' || v > 255 {
  5930  				return 0
  5931  			}
  5932  			*(*uint8)(unsafe.Pointer(a + uintptr(i))) = uint8(v)
  5933  			if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) == 0 && i == 3 {
  5934  				return 1
  5935  			}
  5936  			if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != '.' {
  5937  				return 0
  5938  			}
  5939  			s += uintptr(j + 1)
  5940  		}
  5941  		return 0
  5942  	} else if af != 10 {
  5943  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 97
  5944  		return -1
  5945  	}
  5946  
  5947  	if int32(*(*uint8)(unsafe.Pointer(s))) == ':' && int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&s, 1)))) != ':' {
  5948  		return 0
  5949  	}
  5950  
  5951  	for i = 0; ; i++ {
  5952  		if int32(*(*uint8)(unsafe.Pointer(s))) == ':' && brk < 0 {
  5953  			brk = i
  5954  			*(*uint16_t)(unsafe.Pointer(bp + uintptr(i&7)*2)) = uint16_t(0)
  5955  			if !(int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&s, 1)))) != 0) {
  5956  				break
  5957  			}
  5958  			if i == 7 {
  5959  				return 0
  5960  			}
  5961  			continue
  5962  		}
  5963  		for v = AssignInt32(&j, 0); j < 4 && AssignInt32(&d, hexval(tls, uint32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))))) >= 0; j++ {
  5964  			v = 16*v + d
  5965  		}
  5966  		if j == 0 {
  5967  			return 0
  5968  		}
  5969  		*(*uint16_t)(unsafe.Pointer(bp + uintptr(i&7)*2)) = uint16_t(v)
  5970  		if !(int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != 0) && (brk >= 0 || i == 7) {
  5971  			break
  5972  		}
  5973  		if i == 7 {
  5974  			return 0
  5975  		}
  5976  		if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != ':' {
  5977  			if int32(*(*uint8)(unsafe.Pointer(s + uintptr(j)))) != '.' || i < 6 && brk < 0 {
  5978  				return 0
  5979  			}
  5980  			need_v4 = 1
  5981  			i++
  5982  			break
  5983  		}
  5984  		s += uintptr(j + 1)
  5985  	}
  5986  	if brk >= 0 {
  5987  		Xmemmove(tls, bp+uintptr(brk)*2+uintptr(7)*2-uintptr(i)*2, bp+uintptr(brk)*2, uint32(2*(i+1-brk)))
  5988  		for j = 0; j < 7-i; j++ {
  5989  			*(*uint16_t)(unsafe.Pointer(bp + uintptr(brk+j)*2)) = uint16_t(0)
  5990  		}
  5991  	}
  5992  	for j = 0; j < 8; j++ {
  5993  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&a, 1))) = uint8(int32(*(*uint16_t)(unsafe.Pointer(bp + uintptr(j)*2))) >> 8)
  5994  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&a, 1))) = uint8(*(*uint16_t)(unsafe.Pointer(bp + uintptr(j)*2)))
  5995  	}
  5996  	if need_v4 != 0 && Xinet_pton(tls, 2, s, a-uintptr(4)) <= 0 {
  5997  		return 0
  5998  	}
  5999  	return 1
  6000  }
  6001  
  6002  func X__lookup_ipliteral(tls *TLS, buf uintptr, name uintptr, family int32) int32 { /* lookup_ipliteral.c:12:5: */
  6003  	bp := tls.Alloc(88)
  6004  	defer tls.Free(88)
  6005  
  6006  	// var a4 in_addr at bp, 4
  6007  
  6008  	// var a6 in6_addr at bp+68, 16
  6009  
  6010  	if X__inet_aton(tls, name, bp) > 0 {
  6011  		if family == 10 { // wrong family
  6012  			return -2
  6013  		}
  6014  		Xmemcpy(tls, buf+8, bp, uint32(unsafe.Sizeof(in_addr{})))
  6015  		(*address)(unsafe.Pointer(buf)).Ffamily = 2
  6016  		(*address)(unsafe.Pointer(buf)).Fscopeid = uint32(0)
  6017  		return 1
  6018  	}
  6019  	// var tmp [64]uint8 at bp+4, 64
  6020  
  6021  	var p uintptr = Xstrchr(tls, name, '%')
  6022  	// var z uintptr at bp+84, 4
  6023  
  6024  	var scopeid uint64 = uint64(0)
  6025  	if p != 0 && (int32(p)-int32(name))/1 < 64 {
  6026  		Xmemcpy(tls, bp+4, name, uint32((int32(p)-int32(name))/1))
  6027  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr((int32(p)-int32(name))/1))) = uint8(0)
  6028  		name = bp + 4 /* &tmp[0] */
  6029  	}
  6030  
  6031  	if Xinet_pton(tls, 10, name, bp+68) <= 0 {
  6032  		return 0
  6033  	}
  6034  	if family == 2 { // wrong family
  6035  		return -2
  6036  	}
  6037  
  6038  	Xmemcpy(tls, buf+8, bp+68, uint32(unsafe.Sizeof(in6_addr{})))
  6039  	(*address)(unsafe.Pointer(buf)).Ffamily = 10
  6040  	if p != 0 {
  6041  		if func() int32 {
  6042  			if 0 != 0 {
  6043  				return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&p, 1)))))
  6044  			}
  6045  			return Bool32(uint32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&p, 1))))-uint32('0') < uint32(10))
  6046  		}() != 0 {
  6047  			scopeid = Xstrtoull(tls, p, bp+84, 10)
  6048  		} else {
  6049  			*(*uintptr)(unsafe.Pointer(bp + 84 /* z */)) = p - uintptr(1)
  6050  		}
  6051  		if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 84)))) != 0 {
  6052  			Xabort(tls) //TODO-
  6053  			// if (!IN6_IS_ADDR_LINKLOCAL(&a6) &&
  6054  			//     !IN6_IS_ADDR_MC_LINKLOCAL(&a6))
  6055  			// 	return EAI_NONAME;
  6056  			// scopeid = if_nametoindex(p);
  6057  			// if (!scopeid) return EAI_NONAME;
  6058  		}
  6059  		if scopeid > uint64(0xffffffff) {
  6060  			return -2
  6061  		}
  6062  	}
  6063  	(*address)(unsafe.Pointer(buf)).Fscopeid = uint32(scopeid)
  6064  	return 1
  6065  }
  6066  
  6067  type mode_t = uint32 /* alltypes.h:145:18 */
  6068  
  6069  type flock = struct {
  6070  	Fl_type      int16
  6071  	Fl_whence    int16
  6072  	F__ccgo_pad1 [4]byte
  6073  	Fl_start     off_t
  6074  	Fl_len       off_t
  6075  	Fl_pid       pid_t
  6076  	F__ccgo_pad2 [4]byte
  6077  } /* fcntl.h:24:1 */
  6078  
  6079  func is_valid_hostname(tls *TLS, host uintptr) int32 { /* lookup_name.c:18:12: */
  6080  	var s uintptr
  6081  	//TODO if (strnlen(host, 255)-1 >= 254 || mbstowcs(0, host, 0) == -1) return 0;
  6082  	if Xstrnlen(tls, host, uint32(255))-size_t(1) >= size_t(254) {
  6083  		return 0
  6084  	}
  6085  	for s = host; int32(*(*uint8)(unsafe.Pointer(s))) >= 0x80 || int32(*(*uint8)(unsafe.Pointer(s))) == '.' || int32(*(*uint8)(unsafe.Pointer(s))) == '-' || Xisalnum(tls, int32(*(*uint8)(unsafe.Pointer(s)))) != 0; s++ {
  6086  	}
  6087  	return BoolInt32(!(*(*uint8)(unsafe.Pointer(s)) != 0))
  6088  }
  6089  
  6090  var Xzero_struct_address address /* lookup_name.c:27:16: */
  6091  
  6092  func name_from_null(tls *TLS, buf uintptr, name uintptr, family int32, flags int32) int32 { /* lookup_name.c:29:12: */
  6093  	var cnt int32 = 0
  6094  	if name != 0 {
  6095  		return 0
  6096  	}
  6097  	if flags&0x01 != 0 {
  6098  		//TODO if (family != AF_INET6)
  6099  		//TODO 	buf[cnt++] = (struct address){ .family = AF_INET };
  6100  		if family != 10 {
  6101  			var x = Xzero_struct_address
  6102  			x.Ffamily = 2
  6103  			*(*address)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*28)) = x
  6104  		}
  6105  		//TODO if (family != AF_INET)
  6106  		//TODO 	buf[cnt++] = (struct address){ .family = AF_INET6 };
  6107  		if family != 2 {
  6108  			var x = Xzero_struct_address
  6109  			x.Ffamily = 10
  6110  			*(*address)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*28)) = x
  6111  		}
  6112  	} else {
  6113  		Xabort(tls) //TODO-
  6114  		// 	if (family != AF_INET6)
  6115  		// 		buf[cnt++] = (struct address){ .family = AF_INET, .addr = { 127,0,0,1 } };
  6116  		// 	if (family != AF_INET)
  6117  		// 		buf[cnt++] = (struct address){ .family = AF_INET6, .addr = { [15] = 1 } };
  6118  	}
  6119  	return cnt
  6120  }
  6121  
  6122  func name_from_numeric(tls *TLS, buf uintptr, name uintptr, family int32) int32 { /* lookup_name.c:58:12: */
  6123  	return X__lookup_ipliteral(tls, buf, name, family)
  6124  }
  6125  
  6126  func name_from_hosts(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32) int32 { /* lookup_name.c:63:12: */
  6127  	bp := tls.Alloc(512)
  6128  	defer tls.Free(512)
  6129  
  6130  	// var line [512]uint8 at bp, 512
  6131  
  6132  	var l size_t = Xstrlen(tls, name)
  6133  	var cnt int32 = 0
  6134  	var badfam int32 = 0
  6135  	var _buf [1032]uint8
  6136  	_ = _buf
  6137  	//TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
  6138  	var _f FILE
  6139  	_ = _f
  6140  	var f uintptr = Xfopen(tls, ts+115, ts+126)
  6141  	if !(f != 0) {
  6142  		switch *(*int32)(unsafe.Pointer(X___errno_location(tls))) {
  6143  		case 2:
  6144  			fallthrough
  6145  		case 20:
  6146  			fallthrough
  6147  		case 13:
  6148  			return 0
  6149  			fallthrough
  6150  		default:
  6151  			return -11
  6152  		}
  6153  	}
  6154  	for Xfgets(tls, bp, int32(unsafe.Sizeof([512]uint8{})), f) != 0 && cnt < 48 {
  6155  		var p uintptr
  6156  		var z uintptr
  6157  
  6158  		if AssignUintptr(&p, Xstrchr(tls, bp, '#')) != 0 {
  6159  			*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8('\n')
  6160  			*(*uint8)(unsafe.Pointer(p)) = uint8(0)
  6161  		}
  6162  		for p = bp + uintptr(1); AssignUintptr(&p, Xstrstr(tls, p, name)) != 0 && (!(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p + UintptrFromInt32(-1))))) != 0) || !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p + uintptr(l))))) != 0)); p++ {
  6163  		}
  6164  		if !(p != 0) {
  6165  			continue
  6166  		}
  6167  
  6168  		// Isolate IP address to parse
  6169  		for p = bp; /* &line[0] */ *(*uint8)(unsafe.Pointer(p)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0); p++ {
  6170  		}
  6171  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = uint8(0)
  6172  		switch name_from_numeric(tls, buf+uintptr(cnt)*28, bp, family) {
  6173  		case 1:
  6174  			cnt++
  6175  			break
  6176  		case 0:
  6177  			continue
  6178  		default:
  6179  			badfam = -2
  6180  			continue
  6181  		}
  6182  
  6183  		// Extract first name as canonical name
  6184  		for ; *(*uint8)(unsafe.Pointer(p)) != 0 && __isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0; p++ {
  6185  		}
  6186  		for z = p; *(*uint8)(unsafe.Pointer(z)) != 0 && !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(z)))) != 0); z++ {
  6187  		}
  6188  		*(*uint8)(unsafe.Pointer(z)) = uint8(0)
  6189  		if is_valid_hostname(tls, p) != 0 {
  6190  			Xmemcpy(tls, canon, p, uint32((int32(z)-int32(p))/1+1))
  6191  		}
  6192  	}
  6193  	//TODO __fclose_ca(f);
  6194  	Xfclose(tls, f)
  6195  	if cnt != 0 {
  6196  		return cnt
  6197  	}
  6198  	return badfam
  6199  }
  6200  
  6201  type dpc_ctx = struct {
  6202  	Faddrs uintptr
  6203  	Fcanon uintptr
  6204  	Fcnt   int32
  6205  } /* lookup_name.c:112:1 */
  6206  
  6207  func name_from_dns_search(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32) int32 { /* lookup_name.c:191:12: */
  6208  	return -1 //TODO-
  6209  	Xabort(tls)
  6210  	return int32(0) //TODO-
  6211  	// char search[256];
  6212  	// struct resolvconf conf;
  6213  	// size_t l, dots;
  6214  	// char *p, *z;
  6215  
  6216  	// if (__get_resolv_conf(&conf, search, sizeof search) < 0) return -1;
  6217  
  6218  	// /* Count dots, suppress search when >=ndots or name ends in
  6219  	//  * a dot, which is an explicit request for global scope. */
  6220  	// for (dots=l=0; name[l]; l++) if (name[l]=='.') dots++;
  6221  	// if (dots >= conf.ndots || name[l-1]=='.') *search = 0;
  6222  
  6223  	// /* Strip final dot for canon, fail if multiple trailing dots. */
  6224  	// if (name[l-1]=='.') l--;
  6225  	// if (!l || name[l-1]=='.') return EAI_NONAME;
  6226  
  6227  	// /* This can never happen; the caller already checked length. */
  6228  	// if (l >= 256) return EAI_NONAME;
  6229  
  6230  	// /* Name with search domain appended is setup in canon[]. This both
  6231  	//  * provides the desired default canonical name (if the requested
  6232  	//  * name is not a CNAME record) and serves as a buffer for passing
  6233  	//  * the full requested name to name_from_dns. */
  6234  	// memcpy(canon, name, l);
  6235  	// canon[l] = '.';
  6236  
  6237  	// for (p=search; *p; p=z) {
  6238  	// 	for (; isspace(*p); p++);
  6239  	// 	for (z=p; *z && !isspace(*z); z++);
  6240  	// 	if (z==p) break;
  6241  	// 	if (z-p < 256 - l - 1) {
  6242  	// 		memcpy(canon+l+1, p, z-p);
  6243  	// 		canon[z-p+1+l] = 0;
  6244  	// 		int cnt = name_from_dns(buf, canon, canon, family, &conf);
  6245  	// 		if (cnt) return cnt;
  6246  	// 	}
  6247  	// }
  6248  
  6249  	// canon[l] = 0;
  6250  	// return name_from_dns(buf, canon, name, family, &conf);
  6251  }
  6252  
  6253  type policy = struct {
  6254  	Faddr  [16]uint8
  6255  	Flen   uint8
  6256  	Fmask  uint8
  6257  	Fprec  uint8
  6258  	Flabel uint8
  6259  } /* lookup_name.c:237:14 */
  6260  
  6261  var defpolicy = [6]policy{
  6262  	{Faddr: *(*[16]uint8)(unsafe.Pointer(ts + 211)), Flen: uint8(15), Fmask: uint8(0xff), Fprec: uint8(50)},
  6263  	{Faddr: *(*[16]uint8)(unsafe.Pointer(ts + 228)), Flen: uint8(11), Fmask: uint8(0xff), Fprec: uint8(35), Flabel: uint8(4)},
  6264  	{Faddr: *(*[16]uint8)(unsafe.Pointer(ts + 244)), Flen: uint8(1), Fmask: uint8(0xff), Fprec: uint8(30), Flabel: uint8(2)},
  6265  	{Faddr: *(*[16]uint8)(unsafe.Pointer(ts + 260)), Flen: uint8(3), Fmask: uint8(0xff), Fprec: uint8(5), Flabel: uint8(5)},
  6266  	{Faddr: *(*[16]uint8)(unsafe.Pointer(ts + 276)), Fmask: uint8(0xfe), Fprec: uint8(3), Flabel: uint8(13)},
  6267  	// Last rule must match all addresses to stop loop.
  6268  	{Faddr: *(*[16]uint8)(unsafe.Pointer(ts + 292)), Fprec: uint8(40), Flabel: uint8(1)},
  6269  } /* lookup_name.c:241:3 */
  6270  
  6271  func policyof(tls *TLS, a uintptr) uintptr { /* lookup_name.c:259:28: */
  6272  	var i int32
  6273  	for i = 0; ; i++ {
  6274  		if Xmemcmp(tls, a, uintptr(unsafe.Pointer(&defpolicy))+uintptr(i)*20, uint32(defpolicy[i].Flen)) != 0 {
  6275  			continue
  6276  		}
  6277  		if int32(*(*uint8_t)(unsafe.Pointer(a + uintptr(defpolicy[i].Flen))))&int32(defpolicy[i].Fmask) !=
  6278  			int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&defpolicy)) + uintptr(i)*20 + uintptr(defpolicy[i].Flen)))) {
  6279  			continue
  6280  		}
  6281  		return uintptr(unsafe.Pointer(&defpolicy)) + uintptr(i)*20
  6282  	}
  6283  	return uintptr(0)
  6284  }
  6285  
  6286  func labelof(tls *TLS, a uintptr) int32 { /* lookup_name.c:272:12: */
  6287  	return int32((*policy)(unsafe.Pointer(policyof(tls, a))).Flabel)
  6288  }
  6289  
  6290  func scopeof(tls *TLS, a uintptr) int32 { /* lookup_name.c:277:12: */
  6291  	if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xff {
  6292  		return int32(*(*uint8_t)(unsafe.Pointer(a + 1))) & 15
  6293  	}
  6294  	if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xfe && int32(*(*uint8_t)(unsafe.Pointer(a + 1)))&0xc0 == 0x80 {
  6295  		return 2
  6296  	}
  6297  	if *(*uint32_t)(unsafe.Pointer(a)) == uint32_t(0) && *(*uint32_t)(unsafe.Pointer(a + 1*4)) == uint32_t(0) && *(*uint32_t)(unsafe.Pointer(a + 2*4)) == uint32_t(0) && int32(*(*uint8_t)(unsafe.Pointer(a + 12))) == 0 && int32(*(*uint8_t)(unsafe.Pointer(a + 13))) == 0 && int32(*(*uint8_t)(unsafe.Pointer(a + 14))) == 0 && int32(*(*uint8_t)(unsafe.Pointer(a + 15))) == 1 {
  6298  		return 2
  6299  	}
  6300  	if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xfe && int32(*(*uint8_t)(unsafe.Pointer(a + 1)))&0xc0 == 0xc0 {
  6301  		return 5
  6302  	}
  6303  	return 14
  6304  }
  6305  
  6306  func prefixmatch(tls *TLS, s uintptr, d uintptr) int32 { /* lookup_name.c:286:12: */
  6307  	// FIXME: The common prefix length should be limited to no greater
  6308  	// than the nominal length of the prefix portion of the source
  6309  	// address. However the definition of the source prefix length is
  6310  	// not clear and thus this limiting is not yet implemented.
  6311  	var i uint32
  6312  	for i = uint32(0); i < uint32(128) && !((int32(*(*uint8_t)(unsafe.Pointer(s /* &.__in6_union */ /* &.__s6_addr */ + uintptr(i/uint32(8)))))^int32(*(*uint8_t)(unsafe.Pointer(d /* &.__in6_union */ /* &.__s6_addr */ + uintptr(i/uint32(8))))))&(int32(128)>>(i%uint32(8))) != 0); i++ {
  6313  	}
  6314  	return int32(i)
  6315  }
  6316  
  6317  func addrcmp(tls *TLS, _a uintptr, _b uintptr) int32 { /* lookup_name.c:305:12: */
  6318  	var a uintptr = _a
  6319  	var b uintptr = _b
  6320  	return (*address)(unsafe.Pointer(b)).Fsortkey - (*address)(unsafe.Pointer(a)).Fsortkey
  6321  }
  6322  
  6323  func X__lookup_name(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32, flags int32) int32 { /* lookup_name.c:311:5: */
  6324  	bp := tls.Alloc(92)
  6325  	defer tls.Free(92)
  6326  
  6327  	var cnt int32 = 0
  6328  	var i int32
  6329  	var j int32
  6330  	_ = j
  6331  
  6332  	*(*uint8)(unsafe.Pointer(canon)) = uint8(0)
  6333  	if name != 0 {
  6334  		// reject empty name and check len so it fits into temp bufs
  6335  		var l size_t = Xstrnlen(tls, name, uint32(255))
  6336  		if l-size_t(1) >= size_t(254) {
  6337  			return -2
  6338  		}
  6339  		Xmemcpy(tls, canon, name, l+size_t(1))
  6340  	}
  6341  
  6342  	// Procedurally, a request for v6 addresses with the v4-mapped
  6343  	// flag set is like a request for unspecified family, followed
  6344  	// by filtering of the results.
  6345  	if flags&0x08 != 0 {
  6346  		if family == 10 {
  6347  			family = 0
  6348  		} else {
  6349  			flags = flags - 0x08
  6350  		}
  6351  	}
  6352  
  6353  	// Try each backend until there's at least one result.
  6354  	cnt = name_from_null(tls, buf, name, family, flags)
  6355  	if !(cnt != 0) {
  6356  		cnt = name_from_numeric(tls, buf, name, family)
  6357  	}
  6358  	if !(cnt != 0) && !(flags&0x04 != 0) {
  6359  		cnt = name_from_hosts(tls, buf, canon, name, family)
  6360  		if !(cnt != 0) {
  6361  			cnt = name_from_dns_search(tls, buf, canon, name, family)
  6362  		}
  6363  	}
  6364  	if cnt <= 0 {
  6365  		if cnt != 0 {
  6366  			return cnt
  6367  		}
  6368  		return -2
  6369  	}
  6370  
  6371  	// Filter/transform results for v4-mapped lookup, if requested.
  6372  	if flags&0x08 != 0 {
  6373  		Xabort(tls) //TODO-
  6374  		// 	if (!(flags & AI_ALL)) {
  6375  		// 		/* If any v6 results exist, remove v4 results. */
  6376  		// 		for (i=0; i<cnt && buf[i].family != AF_INET6; i++);
  6377  		// 		if (i<cnt) {
  6378  		// 			for (j=0; i<cnt; i++) {
  6379  		// 				if (buf[i].family == AF_INET6)
  6380  		// 					buf[j++] = buf[i];
  6381  		// 			}
  6382  		// 			cnt = i = j;
  6383  		// 		}
  6384  		// 	}
  6385  		// 	/* Translate any remaining v4 results to v6 */
  6386  		// 	for (i=0; i<cnt; i++) {
  6387  		// 		if (buf[i].family != AF_INET) continue;
  6388  		// 		memcpy(buf[i].addr+12, buf[i].addr, 4);
  6389  		// 		memcpy(buf[i].addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
  6390  		// 		buf[i].family = AF_INET6;
  6391  		// 	}
  6392  	}
  6393  
  6394  	// No further processing is needed if there are fewer than 2
  6395  	// results or if there are only IPv4 results.
  6396  	if cnt < 2 || family == 2 {
  6397  		return cnt
  6398  	}
  6399  	for i = 0; i < cnt; i++ {
  6400  		if (*address)(unsafe.Pointer(buf+uintptr(i)*28)).Ffamily != 2 {
  6401  			break
  6402  		}
  6403  	}
  6404  	if i == cnt {
  6405  		return cnt
  6406  	}
  6407  	var cs int32
  6408  	_ = cs
  6409  	//TODO pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
  6410  
  6411  	// The following implements a subset of RFC 3484/6724 destination
  6412  	// address selection by generating a single 31-bit sort key for
  6413  	// each address. Rules 3, 4, and 7 are omitted for having
  6414  	// excessive runtime and code size cost and dubious benefit.
  6415  	// So far the label/precedence table cannot be customized.
  6416  	for i = 0; i < cnt; i++ {
  6417  		var family int32 = (*address)(unsafe.Pointer(buf + uintptr(i)*28)).Ffamily
  6418  		var key int32 = 0
  6419  		*(*sockaddr_in6)(unsafe.Pointer(bp + 28 /* sa6 */)) = sockaddr_in6{}
  6420  		*(*sockaddr_in6)(unsafe.Pointer(bp /* da6 */)) = sockaddr_in6{Fsin6_family: sa_family_t(10), Fsin6_port: in_port_t(65535), Fsin6_scope_id: (*address)(unsafe.Pointer(buf + uintptr(i)*28)).Fscopeid}
  6421  		*(*sockaddr_in)(unsafe.Pointer(bp + 72 /* sa4 */)) = sockaddr_in{}
  6422  		*(*sockaddr_in)(unsafe.Pointer(bp + 56 /* da4 */)) = sockaddr_in{Fsin_family: sa_family_t(2), Fsin_port: in_port_t(65535)}
  6423  		var sa1 uintptr
  6424  		var da uintptr
  6425  		// var salen socklen_t at bp+88, 4
  6426  
  6427  		var dalen socklen_t
  6428  		if family == 10 {
  6429  			Xmemcpy(tls, bp+8, buf+uintptr(i)*28+8, uint32(16))
  6430  			da = bp /* &da6 */
  6431  			dalen = socklen_t(unsafe.Sizeof(sockaddr_in6{}))
  6432  			sa1 = bp + 28 /* &sa6 */
  6433  			*(*socklen_t)(unsafe.Pointer(bp + 88 /* salen */)) = socklen_t(unsafe.Sizeof(sockaddr_in6{}))
  6434  		} else {
  6435  			Xmemcpy(tls, bp+28+8,
  6436  				ts+129, uint32(12))
  6437  			Xmemcpy(tls, bp+8+uintptr(12), buf+uintptr(i)*28+8, uint32(4))
  6438  			Xmemcpy(tls, bp+8,
  6439  				ts+129, uint32(12))
  6440  			Xmemcpy(tls, bp+8+uintptr(12), buf+uintptr(i)*28+8, uint32(4))
  6441  			Xmemcpy(tls, bp+56+4, buf+uintptr(i)*28+8, uint32(4))
  6442  			da = bp + 56 /* &da4 */
  6443  			dalen = socklen_t(unsafe.Sizeof(sockaddr_in{}))
  6444  			sa1 = bp + 72 /* &sa4 */
  6445  			*(*socklen_t)(unsafe.Pointer(bp + 88 /* salen */)) = socklen_t(unsafe.Sizeof(sockaddr_in{}))
  6446  		}
  6447  		var dpolicy uintptr = policyof(tls, bp+8)
  6448  		var dscope int32 = scopeof(tls, bp+8)
  6449  		var dlabel int32 = int32((*policy)(unsafe.Pointer(dpolicy)).Flabel)
  6450  		var dprec int32 = int32((*policy)(unsafe.Pointer(dpolicy)).Fprec)
  6451  		var prefixlen int32 = 0
  6452  		var fd int32 = Xsocket(tls, family, 2|02000000, 17)
  6453  		if fd >= 0 {
  6454  			if !(Xconnect(tls, fd, da, dalen) != 0) {
  6455  				key = key | 0x40000000
  6456  				if !(Xgetsockname(tls, fd, sa1, bp+88) != 0) {
  6457  					if family == 2 {
  6458  						Xmemcpy(tls,
  6459  							bp+28+8+uintptr(12),
  6460  							bp+72+4, uint32(4))
  6461  					}
  6462  					if dscope == scopeof(tls, bp+28+8) {
  6463  						key = key | 0x20000000
  6464  					}
  6465  					if dlabel == labelof(tls, bp+28+8) {
  6466  						key = key | 0x10000000
  6467  					}
  6468  					prefixlen = prefixmatch(tls, bp+28+8,
  6469  						bp+8)
  6470  				}
  6471  			}
  6472  			Xclose(tls, fd)
  6473  		}
  6474  		key = key | dprec<<20
  6475  		key = key | (15-dscope)<<16
  6476  		key = key | prefixlen<<8
  6477  		key = key | (48-i)<<0
  6478  		(*address)(unsafe.Pointer(buf + uintptr(i)*28)).Fsortkey = key
  6479  	}
  6480  	Xqsort(tls, buf, uint32(cnt), uint32(unsafe.Sizeof(address{})), *(*uintptr)(unsafe.Pointer(&struct {
  6481  		f func(*TLS, uintptr, uintptr) int32
  6482  	}{addrcmp})))
  6483  
  6484  	//TODO pthread_setcancelstate(cs, 0);
  6485  
  6486  	return cnt
  6487  }
  6488  
  6489  func X__lookup_serv(tls *TLS, buf uintptr, name uintptr, proto int32, socktype int32, flags int32) int32 { /* lookup_serv.c:12:5: */
  6490  	bp := tls.Alloc(4)
  6491  	defer tls.Free(4)
  6492  
  6493  	var line [128]uint8
  6494  	_ = line
  6495  	var cnt int32 = 0
  6496  	var p uintptr
  6497  	_ = p
  6498  	*(*uintptr)(unsafe.Pointer(bp /* z */)) = ts + 54 /* "" */
  6499  	var port uint32 = uint32(0)
  6500  
  6501  	switch socktype {
  6502  	case 1:
  6503  		switch proto {
  6504  		case 0:
  6505  			proto = 6
  6506  			fallthrough
  6507  		case 6:
  6508  			break
  6509  		default:
  6510  			return -8
  6511  		}
  6512  		break
  6513  	case 2:
  6514  		switch proto {
  6515  		case 0:
  6516  			proto = 17
  6517  			fallthrough
  6518  		case 17:
  6519  			break
  6520  		default:
  6521  			return -8
  6522  		}
  6523  		fallthrough
  6524  	case 0:
  6525  		break
  6526  	default:
  6527  		if name != 0 {
  6528  			return -8
  6529  		}
  6530  		(*service)(unsafe.Pointer(buf)).Fport = uint16_t(0)
  6531  		(*service)(unsafe.Pointer(buf)).Fproto = uint8(proto)
  6532  		(*service)(unsafe.Pointer(buf)).Fsocktype = uint8(socktype)
  6533  		return 1
  6534  	}
  6535  
  6536  	if name != 0 {
  6537  		if !(int32(*(*uint8)(unsafe.Pointer(name))) != 0) {
  6538  			return -8
  6539  		}
  6540  		port = Xstrtoul(tls, name, bp, 10)
  6541  	}
  6542  	if !(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))) != 0) {
  6543  		if port > uint32(65535) {
  6544  			return -8
  6545  		}
  6546  		if proto != 17 {
  6547  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).Fport = uint16_t(port)
  6548  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).Fsocktype = uint8(1)
  6549  			(*service)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*4)).Fproto = uint8(6)
  6550  		}
  6551  		if proto != 6 {
  6552  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).Fport = uint16_t(port)
  6553  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).Fsocktype = uint8(2)
  6554  			(*service)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*4)).Fproto = uint8(17)
  6555  		}
  6556  		return cnt
  6557  	}
  6558  
  6559  	if flags&0x400 != 0 {
  6560  		return -2
  6561  	}
  6562  
  6563  	var l size_t = Xstrlen(tls, name)
  6564  	_ = l
  6565  
  6566  	Xabort(tls) //TODO-
  6567  	// unsigned char _buf[1032];
  6568  	// FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
  6569  	// if (!f) switch (errno) {
  6570  	// case ENOENT:
  6571  	// case ENOTDIR:
  6572  	// case EACCES:
  6573  	// 	return EAI_SERVICE;
  6574  	// default:
  6575  	// 	return EAI_SYSTEM;
  6576  	// }
  6577  
  6578  	Xabort(tls) //TODO-
  6579  	// while (fgets(line, sizeof line, f) && cnt < MAXSERVS) {
  6580  	// 	if ((p=strchr(line, '#'))) *p++='\n', *p=0;
  6581  
  6582  	// 	/* Find service name */
  6583  	// 	for(p=line; (p=strstr(p, name)); p++) {
  6584  	// 		if (p>line && !isspace(p[-1])) continue;
  6585  	// 		if (p[l] && !isspace(p[l])) continue;
  6586  	// 		break;
  6587  	// 	}
  6588  	// 	if (!p) continue;
  6589  
  6590  	// 	/* Skip past canonical name at beginning of line */
  6591  	// 	for (p=line; *p && !isspace(*p); p++);
  6592  
  6593  	// 	port = strtoul(p, &z, 10);
  6594  	// 	if (port > 65535 || z==p) continue;
  6595  	// 	if (!strncmp(z, "/udp", 4)) {
  6596  	// 		if (proto == IPPROTO_TCP) continue;
  6597  	// 		buf[cnt].port = port;
  6598  	// 		buf[cnt].socktype = SOCK_DGRAM;
  6599  	// 		buf[cnt++].proto = IPPROTO_UDP;
  6600  	// 	}
  6601  	// 	if (!strncmp(z, "/tcp", 4)) {
  6602  	// 		if (proto == IPPROTO_UDP) continue;
  6603  	// 		buf[cnt].port = port;
  6604  	// 		buf[cnt].socktype = SOCK_STREAM;
  6605  	// 		buf[cnt++].proto = IPPROTO_TCP;
  6606  	// 	}
  6607  	// }
  6608  	// __fclose_ca(f);
  6609  	// return cnt > 0 ? cnt : EAI_SERVICE;
  6610  	Xabort(tls)
  6611  	return int32(0) //TODO-
  6612  }
  6613  
  6614  func X__toread(tls *TLS, f uintptr) int32 { /* __toread.c:3:5: */
  6615  	*(*int32)(unsafe.Pointer(f + 72)) |= (*FILE)(unsafe.Pointer(f)).Fmode - 1
  6616  	if (*FILE)(unsafe.Pointer(f)).Fwpos != (*FILE)(unsafe.Pointer(f)).Fwbase {
  6617  		(*struct {
  6618  			f func(*TLS, uintptr, uintptr, size_t) size_t
  6619  		})(unsafe.Pointer(&struct{ uintptr }{(*FILE)(unsafe.Pointer(f)).Fwrite})).f(tls, f, uintptr(0), uint32(0))
  6620  	}
  6621  	(*FILE)(unsafe.Pointer(f)).Fwpos = AssignPtrUintptr(f+28, AssignPtrUintptr(f+16, uintptr(0)))
  6622  	if (*FILE)(unsafe.Pointer(f)).Fflags&uint32(4) != 0 {
  6623  		*(*uint32)(unsafe.Pointer(f)) |= uint32(32)
  6624  		return -1
  6625  	}
  6626  	(*FILE)(unsafe.Pointer(f)).Frpos = AssignPtrUintptr(f+8, (*FILE)(unsafe.Pointer(f)).Fbuf+uintptr((*FILE)(unsafe.Pointer(f)).Fbuf_size))
  6627  	if (*FILE)(unsafe.Pointer(f)).Fflags&uint32(16) != 0 {
  6628  		return -1
  6629  	}
  6630  	return 0
  6631  }
  6632  
  6633  func X__toread_needs_stdio_exit(tls *TLS) { /* __toread.c:16:13: */
  6634  	X__builtin_abort(tls) //TODO-
  6635  	// __stdio_exit_needed();
  6636  }
  6637  
  6638  // This function assumes it will never be called if there is already
  6639  // data buffered for reading.
  6640  
  6641  func X__uflow(tls *TLS, f uintptr) int32 { /* __uflow.c:6:5: */
  6642  	bp := tls.Alloc(1)
  6643  	defer tls.Free(1)
  6644  
  6645  	// var c uint8 at bp, 1
  6646  
  6647  	if !(X__toread(tls, f) != 0) && (*struct {
  6648  		f func(*TLS, uintptr, uintptr, size_t) size_t
  6649  	})(unsafe.Pointer(&struct{ uintptr }{(*FILE)(unsafe.Pointer(f)).Fread})).f(tls, f, bp, uint32(1)) == size_t(1) {
  6650  		return int32(*(*uint8)(unsafe.Pointer(bp)))
  6651  	}
  6652  	return -1
  6653  }
  6654  
  6655  func Xbsearch(tls *TLS, key uintptr, base uintptr, nel size_t, width size_t, cmp uintptr) uintptr { /* bsearch.c:3:6: */
  6656  	var try uintptr
  6657  	var sign int32
  6658  	for nel > size_t(0) {
  6659  		try = base + uintptr(width*(nel/size_t(2)))
  6660  		sign = (*struct {
  6661  			f func(*TLS, uintptr, uintptr) int32
  6662  		})(unsafe.Pointer(&struct{ uintptr }{cmp})).f(tls, key, try)
  6663  		if sign < 0 {
  6664  			nel = nel / size_t(2)
  6665  		} else if sign > 0 {
  6666  			base = try + uintptr(width)
  6667  			nel = nel - (nel/size_t(2) + size_t(1))
  6668  		} else {
  6669  			return try
  6670  		}
  6671  	}
  6672  	return uintptr(0)
  6673  }
  6674  
  6675  func strtox(tls *TLS, s uintptr, p uintptr, prec int32) float64 { /* strtod.c:6:20: */
  6676  	bp := tls.Alloc(144)
  6677  	defer tls.Free(144)
  6678  
  6679  	// var f FILE at bp, 144
  6680  
  6681  	(*FILE)(unsafe.Pointer(bp)).Fbuf = AssignPtrUintptr(bp+4, s)
  6682  	(*FILE)(unsafe.Pointer(bp)).Frend = UintptrFromInt32(-1)
  6683  	X__shlim(tls, bp, int64(0))
  6684  	var y float64 = X__floatscan(tls, bp, prec, 1)
  6685  	var cnt off_t = (*FILE)(unsafe.Pointer(bp)).Fshcnt + off_t((int32((*FILE)(unsafe.Pointer(bp)).Frpos)-int32((*FILE)(unsafe.Pointer(bp)).Fbuf))/1)
  6686  	if p != 0 {
  6687  		*(*uintptr)(unsafe.Pointer(p)) = func() uintptr {
  6688  			if cnt != 0 {
  6689  				return s + uintptr(cnt)
  6690  			}
  6691  			return s
  6692  		}()
  6693  	}
  6694  	return y
  6695  }
  6696  
  6697  func Xstrtof(tls *TLS, s uintptr, p uintptr) float32 { /* strtod.c:17:7: */
  6698  	return float32(strtox(tls, s, p, 0))
  6699  }
  6700  
  6701  func Xstrtod(tls *TLS, s uintptr, p uintptr) float64 { /* strtod.c:22:8: */
  6702  	return strtox(tls, s, p, 1)
  6703  }
  6704  
  6705  func Xstrtold(tls *TLS, s uintptr, p uintptr) float64 { /* strtod.c:27:13: */
  6706  	return strtox(tls, s, p, 2)
  6707  }
  6708  
  6709  func strtox1(tls *TLS, s uintptr, p uintptr, base int32, lim uint64) uint64 { /* strtol.c:8:27: */
  6710  	bp := tls.Alloc(144)
  6711  	defer tls.Free(144)
  6712  
  6713  	// var f FILE at bp, 144
  6714  
  6715  	(*FILE)(unsafe.Pointer(bp)).Fbuf = AssignPtrUintptr(bp+4, s)
  6716  	(*FILE)(unsafe.Pointer(bp)).Frend = UintptrFromInt32(-1)
  6717  	X__shlim(tls, bp, int64(0))
  6718  	var y uint64 = X__intscan(tls, bp, uint32(base), 1, lim)
  6719  	if p != 0 {
  6720  		var cnt size_t = size_t((*FILE)(unsafe.Pointer(bp)).Fshcnt + off_t((int32((*FILE)(unsafe.Pointer(bp)).Frpos)-int32((*FILE)(unsafe.Pointer(bp)).Fbuf))/1))
  6721  		*(*uintptr)(unsafe.Pointer(p)) = s + uintptr(cnt)
  6722  	}
  6723  	return y
  6724  }
  6725  
  6726  func Xstrtoull(tls *TLS, s uintptr, p uintptr, base int32) uint64 { /* strtol.c:21:20: */
  6727  	return strtox1(tls, s, p, base, 2*uint64(0x7fffffffffffffff)+uint64(1))
  6728  }
  6729  
  6730  func Xstrtoll(tls *TLS, s uintptr, p uintptr, base int32) int64 { /* strtol.c:26:11: */
  6731  	return int64(strtox1(tls, s, p, base, Uint64FromInt64(-0x7fffffffffffffff-int64(1))))
  6732  }
  6733  
  6734  func Xstrtoul(tls *TLS, s uintptr, p uintptr, base int32) uint32 { /* strtol.c:31:15: */
  6735  	return uint32(strtox1(tls, s, p, base, uint64(2*uint32(0x7fffffff)+uint32(1))))
  6736  }
  6737  
  6738  func Xstrtol(tls *TLS, s uintptr, p uintptr, base int32) int32 { /* strtol.c:36:6: */
  6739  	return int32(strtox1(tls, s, p, base, uint64(0+Uint32FromInt32(Int32(-Int32(0x7fffffff))-Int32FromInt32(1)))))
  6740  }
  6741  
  6742  func Xstrtoimax(tls *TLS, s uintptr, p uintptr, base int32) intmax_t { /* strtol.c:41:10: */
  6743  	return Xstrtoll(tls, s, p, base)
  6744  }
  6745  
  6746  func Xstrtoumax(tls *TLS, s uintptr, p uintptr, base int32) uintmax_t { /* strtol.c:46:11: */
  6747  	return Xstrtoull(tls, s, p, base)
  6748  }
  6749  
  6750  func Xstrdup(tls *TLS, s uintptr) uintptr { /* strdup.c:4:6: */
  6751  	var l size_t = Xstrlen(tls, s)
  6752  	var d uintptr = Xmalloc(tls, l+size_t(1))
  6753  	if !(d != 0) {
  6754  		return uintptr(0)
  6755  	}
  6756  	return Xmemcpy(tls, d, s, l+size_t(1))
  6757  }
  6758  
  6759  func Xstrnlen(tls *TLS, s uintptr, n size_t) size_t { /* strnlen.c:3:8: */
  6760  	var p uintptr = Xmemchr(tls, s, 0, n)
  6761  	if p != 0 {
  6762  		return uint32((int32(p) - int32(s)) / 1)
  6763  	}
  6764  	return n
  6765  }
  6766  
  6767  func Xstrspn(tls *TLS, s uintptr, c uintptr) size_t { /* strspn.c:6:8: */
  6768  	bp := tls.Alloc(32)
  6769  	defer tls.Free(32)
  6770  
  6771  	var a uintptr = s
  6772  	*(*[8]size_t)(unsafe.Pointer(bp /* byteset */)) = [8]size_t{0: size_t(0)}
  6773  
  6774  	if !(int32(*(*uint8)(unsafe.Pointer(c))) != 0) {
  6775  		return size_t(0)
  6776  	}
  6777  	if !(int32(*(*uint8)(unsafe.Pointer(c + 1))) != 0) {
  6778  		for ; int32(*(*uint8)(unsafe.Pointer(s))) == int32(*(*uint8)(unsafe.Pointer(c))); s++ {
  6779  		}
  6780  		return size_t((int32(s) - int32(a)) / 1)
  6781  	}
  6782  
  6783  	for ; *(*uint8)(unsafe.Pointer(c)) != 0 && AssignOrPtrUint32(bp+uintptr(size_t(*(*uint8)(unsafe.Pointer(c)))/(uint32(8)*uint32(unsafe.Sizeof(size_t(0)))))*4, size_t(size_t(1))<<(size_t(*(*uint8)(unsafe.Pointer(c)))%(uint32(8)*uint32(unsafe.Sizeof(size_t(0)))))) != 0; c++ {
  6784  	}
  6785  	for ; *(*uint8)(unsafe.Pointer(s)) != 0 && *(*size_t)(unsafe.Pointer(bp + uintptr(size_t(*(*uint8)(unsafe.Pointer(s)))/(uint32(8)*uint32(unsafe.Sizeof(size_t(0)))))*4))&(size_t(size_t(1))<<(size_t(*(*uint8)(unsafe.Pointer(s)))%(uint32(8)*uint32(unsafe.Sizeof(size_t(0)))))) != 0; s++ {
  6786  	}
  6787  	return size_t((int32(s) - int32(a)) / 1)
  6788  }
  6789  
  6790  func init() {
  6791  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_CurrentRuneLocale)) + 0)) = uintptr(unsafe.Pointer(&X_DefaultRuneLocale)) // table.cpp.c:4092:41:
  6792  }
  6793  
  6794  var ts1 = "RuneMagi\x00NONE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00infinity\x00nan\x00\x00\x00\x01\x02\x04\a\x03\x06\x05\x00%d.%d.%d.%d.in-addr.arpa\x00ip6.arpa\x000123456789abcdef\x00/etc/hosts\x00rb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00%d.%d.%d.%d\x00%x:%x:%x:%x:%x:%x:%x:%x\x00%x:%x:%x:%x:%x:%x:%d.%d.%d.%d\x00:0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  6795  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data