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