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