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

     1  // Code generated by 'ccgo -export-externs X -hide __syscall0,__syscall1,__syscall2,__syscall3,__syscall4,__syscall5,__syscall6 -nostdinc -nostdlib -o ../musl_linux_amd64.go -pkgname libc -static-locals-prefix _s -Iarch/x86_64 -Iarch/generic -Iobj/src/internal -Isrc/include -Isrc/internal -Iobj/include -Iinclude copyright.c src/ctype/__ctype_b_loc.c src/ctype/isalnum.c src/ctype/isalpha.c src/ctype/isdigit.c src/ctype/islower.c src/ctype/isprint.c src/ctype/isupper.c src/ctype/isxdigit.c src/dirent/closedir.c src/dirent/opendir.c src/dirent/readdir.c src/internal/floatscan.c src/internal/intscan.c src/internal/shgetc.c src/locale/localeconv.c src/math/__fpclassify.c src/math/__fpclassifyf.c src/math/__fpclassifyl.c src/math/copysignl.c src/math/fabsl.c src/math/fmodl.c src/math/nanf.c src/math/rint.c src/math/scalbn.c src/math/scalbnl.c src/multibyte/internal.c src/multibyte/mbrtowc.c src/multibyte/mbsinit.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/gethostbyname_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/prng/rand_r.c src/stdio/__lockfile.c src/stdio/__toread.c src/stdio/__uflow.c src/stdio/sscanf.c src/stdio/vfscanf.c src/stdio/vsscanf.c src/stdlib/bsearch.c src/stdlib/strtod.c src/stdlib/strtol.c src/string/strdup.c src/string/strlcat.c src/string/strlcpy.c src/string/strncasecmp.c src/string/strncat.c src/string/strnlen.c src/string/strspn.c src/string/strtok.c src/thread/pthread_attr_get.c src/thread/pthread_attr_setdetachstate.c src/thread/pthread_mutex_lock.c src/thread/pthread_mutexattr_destroy.c src/thread/pthread_mutexattr_init.c src/thread/pthread_mutexattr_settype.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  const ( /* pthread_impl.h:58:1: */
   355  	DT_EXITING  = 0
   356  	DT_JOINABLE = 1
   357  	DT_DETACHED = 2
   358  )
   359  
   360  type ptrdiff_t = int64 /* <builtin>:3:26 */
   361  
   362  type size_t = uint64 /* <builtin>:9:23 */
   363  
   364  type wchar_t = int32 /* <builtin>:15:24 */
   365  
   366  type uint16_t = uint16 /* alltypes.h:126:25 */
   367  
   368  type uint32_t = uint32 /* alltypes.h:131:25 */
   369  
   370  type uint64_t = uint64 /* alltypes.h:136:25 */
   371  
   372  func __bswap32(tls *TLS, __x uint32_t) uint32_t { /* endian.h:24:26: */
   373  	return __x>>24 | __x>>8&uint32_t(0xff00) | __x<<8&uint32_t(0xff0000) | __x<<24
   374  }
   375  
   376  var table = [384]uint16{
   377  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   378  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   379  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   380  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   381  	uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
   382  	uint16((0x200/256 | 0x200*256) % 65536), uint16((0x320/256 | 0x320*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x220/256 | 0x220*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
   383  	uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
   384  	uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
   385  	uint16((0x160/256 | 0x160*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
   386  	uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
   387  	uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536),
   388  	uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x8d8/256 | 0x8d8*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
   389  	uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8d5/256 | 0x8d5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536),
   390  	uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536),
   391  	uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536),
   392  	uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x8c5/256 | 0x8c5*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536),
   393  	uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8d6/256 | 0x8d6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536),
   394  	uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536),
   395  	uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536),
   396  	uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x8c6/256 | 0x8c6*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x4c0/256 | 0x4c0*256) % 65536), uint16((0x200/256 | 0x200*256) % 65536),
   397  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   398  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   399  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   400  	uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0),
   401  } /* __ctype_b_loc.c:9:29 */
   402  
   403  var ptable uintptr = 0 /* __ctype_b_loc.c:36:29 */
   404  
   405  func X__ctype_b_loc(tls *TLS) uintptr { /* __ctype_b_loc.c:38:22: */
   406  	return uintptr(unsafe.Pointer(&ptable))
   407  }
   408  
   409  func __isspace(tls *TLS, _c int32) int32 { /* ctype.h:26:21: */
   410  	return Bool32(_c == ' ' || uint32(_c)-uint32('\t') < uint32(5))
   411  }
   412  
   413  type __locale_struct = struct{ cat [6]uintptr } /* alltypes.h:343:9 */
   414  
   415  type locale_t = uintptr /* alltypes.h:343:32 */
   416  
   417  func Xisalnum(tls *TLS, c int32) int32 { /* isalnum.c:3:5: */
   418  	return Bool32(func() int32 {
   419  		if 0 != 0 {
   420  			return Xisalpha(tls, c)
   421  		}
   422  		return Bool32(uint32(c)|uint32(32)-uint32('a') < uint32(26))
   423  	}() != 0 || func() int32 {
   424  		if 0 != 0 {
   425  			return Xisdigit(tls, c)
   426  		}
   427  		return Bool32(uint32(c)-uint32('0') < uint32(10))
   428  	}() != 0)
   429  }
   430  
   431  func X__isalnum_l(tls *TLS, c int32, l locale_t) int32 { /* isalnum.c:8:5: */
   432  	return Xisalnum(tls, c)
   433  }
   434  
   435  func Xisalpha(tls *TLS, c int32) int32 { /* isalpha.c:4:5: */
   436  	return Bool32(uint32(c)|uint32(32)-uint32('a') < uint32(26))
   437  }
   438  
   439  func X__isalpha_l(tls *TLS, c int32, l locale_t) int32 { /* isalpha.c:9:5: */
   440  	return Xisalpha(tls, c)
   441  }
   442  
   443  func Xisdigit(tls *TLS, c int32) int32 { /* isdigit.c:4:5: */
   444  	return Bool32(uint32(c)-uint32('0') < uint32(10))
   445  }
   446  
   447  func X__isdigit_l(tls *TLS, c int32, l locale_t) int32 { /* isdigit.c:9:5: */
   448  	return Xisdigit(tls, c)
   449  }
   450  
   451  func Xislower(tls *TLS, c int32) int32 { /* islower.c:4:5: */
   452  	return Bool32(uint32(c)-uint32('a') < uint32(26))
   453  }
   454  
   455  func X__islower_l(tls *TLS, c int32, l locale_t) int32 { /* islower.c:9:5: */
   456  	return Xislower(tls, c)
   457  }
   458  
   459  func Xisprint(tls *TLS, c int32) int32 { /* isprint.c:4:5: */
   460  	return Bool32(uint32(c)-uint32(0x20) < uint32(0x5f))
   461  }
   462  
   463  func X__isprint_l(tls *TLS, c int32, l locale_t) int32 { /* isprint.c:9:5: */
   464  	return Xisprint(tls, c)
   465  }
   466  
   467  func Xisupper(tls *TLS, c int32) int32 { /* isupper.c:4:5: */
   468  	return Bool32(uint32(c)-uint32('A') < uint32(26))
   469  }
   470  
   471  func X__isupper_l(tls *TLS, c int32, l locale_t) int32 { /* isupper.c:9:5: */
   472  	return Xisupper(tls, c)
   473  }
   474  
   475  func Xisxdigit(tls *TLS, c int32) int32 { /* isxdigit.c:3:5: */
   476  	return Bool32(func() int32 {
   477  		if 0 != 0 {
   478  			return Xisdigit(tls, c)
   479  		}
   480  		return Bool32(uint32(c)-uint32('0') < uint32(10))
   481  	}() != 0 || uint32(c)|uint32(32)-uint32('a') < uint32(6))
   482  }
   483  
   484  func X__isxdigit_l(tls *TLS, c int32, l locale_t) int32 { /* isxdigit.c:8:5: */
   485  	return Xisxdigit(tls, c)
   486  }
   487  
   488  type off_t = int64 /* alltypes.h:162:16 */
   489  
   490  type ino_t = uint64 /* alltypes.h:167:25 */
   491  
   492  type dirent = struct {
   493  	d_ino    ino_t
   494  	d_off    off_t
   495  	d_reclen uint16
   496  	d_type   uint8
   497  	d_name   [256]int8
   498  	_        [5]byte
   499  } /* dirent.h:5:1 */
   500  
   501  type __dirstream = struct {
   502  	tell    off_t
   503  	fd      int32
   504  	buf_pos int32
   505  	buf_end int32
   506  	lock    [1]int32
   507  	buf     [2048]int8
   508  } /* dirent.h:20:9 */
   509  
   510  type DIR = __dirstream /* dirent.h:20:28 */
   511  
   512  type ssize_t = int64 /* alltypes.h:65:15 */
   513  
   514  type intptr_t = int64 /* alltypes.h:70:15 */
   515  
   516  type pid_t = int32 /* alltypes.h:235:13 */
   517  
   518  type uid_t = uint32 /* alltypes.h:245:18 */
   519  
   520  type gid_t = uint32 /* alltypes.h:250:18 */
   521  
   522  type useconds_t = uint32 /* alltypes.h:260:18 */
   523  
   524  type div_t = struct {
   525  	quot int32
   526  	rem  int32
   527  } /* stdlib.h:62:35 */
   528  type ldiv_t = struct {
   529  	quot int64
   530  	rem  int64
   531  } /* stdlib.h:63:36 */
   532  type lldiv_t = struct {
   533  	quot int64
   534  	rem  int64
   535  } /* stdlib.h:64:41 */
   536  
   537  func Xclosedir(tls *TLS, dir uintptr) int32 { /* closedir.c:6:5: */
   538  	var ret int32 = Xclose(tls, (*DIR)(unsafe.Pointer(dir)).fd)
   539  	Xfree(tls, dir)
   540  	return ret
   541  }
   542  
   543  type mode_t = uint32 /* alltypes.h:152:18 */
   544  
   545  type iovec = struct {
   546  	iov_base uintptr
   547  	iov_len  size_t
   548  } /* alltypes.h:355:1 */
   549  
   550  type flock = struct {
   551  	l_type   int16
   552  	l_whence int16
   553  	_        [4]byte
   554  	l_start  off_t
   555  	l_len    off_t
   556  	l_pid    pid_t
   557  	_        [4]byte
   558  } /* fcntl.h:24:1 */
   559  
   560  type file_handle = struct {
   561  	_            [0]uint32
   562  	handle_bytes uint32
   563  	handle_type  int32
   564  } /* fcntl.h:167:1 */
   565  
   566  type f_owner_ex = struct {
   567  	__type int32
   568  	pid    pid_t
   569  } /* fcntl.h:172:1 */
   570  
   571  type syscall_arg_t = int64 /* syscall.h:22:14 */
   572  
   573  func Xopendir(tls *TLS, name uintptr) uintptr { /* opendir.c:8:5: */
   574  	var fd int32
   575  	var dir uintptr
   576  
   577  	if AssignInt32(&fd, Xopen(tls, name, 00|0200000|02000000, 0)) < 0 {
   578  		return uintptr(0)
   579  	}
   580  	if !(int32(AssignUintptr(&dir, Xcalloc(tls, uint64(1), uint64(unsafe.Sizeof(DIR{}))))) != 0) {
   581  		X__syscall1(tls, int64(3), int64(fd))
   582  		return uintptr(0)
   583  	}
   584  	(*DIR)(unsafe.Pointer(dir)).fd = fd
   585  	return dir
   586  }
   587  
   588  type max_align_t = struct {
   589  	__ll int64
   590  	__ld float64
   591  } /* alltypes.h:41:54 */
   592  
   593  type dirstream_buf_alignment_check = [1]int8 /* readdir.c:7:14 */
   594  
   595  func Xreaddir(tls *TLS, dir uintptr) uintptr { /* readdir.c:10:15: */
   596  	var de uintptr
   597  
   598  	if (*DIR)(unsafe.Pointer(dir)).buf_pos >= (*DIR)(unsafe.Pointer(dir)).buf_end {
   599  		var len int32 = int32(X__syscall3(tls, int64(217), int64((*DIR)(unsafe.Pointer(dir)).fd), int64(dir+24), int64(unsafe.Sizeof([2048]int8{}))))
   600  		if len <= 0 {
   601  			if len < 0 && len != -2 {
   602  				*(*int32)(unsafe.Pointer(X___errno_location(tls))) = -len
   603  			}
   604  			return uintptr(0)
   605  		}
   606  		(*DIR)(unsafe.Pointer(dir)).buf_end = len
   607  		(*DIR)(unsafe.Pointer(dir)).buf_pos = 0
   608  	}
   609  	de = dir + 24 + uintptr((*DIR)(unsafe.Pointer(dir)).buf_pos)
   610  	*(*int32)(unsafe.Pointer(dir + 12)) += int32((*dirent)(unsafe.Pointer(de)).d_reclen)
   611  	(*DIR)(unsafe.Pointer(dir)).tell = (*dirent)(unsafe.Pointer(de)).d_off
   612  	return de
   613  }
   614  
   615  type uintptr_t = uint64 /* alltypes.h:55:24 */
   616  
   617  type int8_t = int8 /* alltypes.h:96:25 */
   618  
   619  type int16_t = int16 /* alltypes.h:101:25 */
   620  
   621  type int32_t = int32 /* alltypes.h:106:25 */
   622  
   623  type int64_t = int64 /* alltypes.h:111:25 */
   624  
   625  type intmax_t = int64 /* alltypes.h:116:25 */
   626  
   627  type uint8_t = uint8 /* alltypes.h:121:25 */
   628  
   629  type uintmax_t = uint64 /* alltypes.h:146:25 */
   630  
   631  type int_fast8_t = int8_t   /* stdint.h:22:16 */
   632  type int_fast64_t = int64_t /* stdint.h:23:17 */
   633  
   634  type int_least8_t = int8_t   /* stdint.h:25:17 */
   635  type int_least16_t = int16_t /* stdint.h:26:17 */
   636  type int_least32_t = int32_t /* stdint.h:27:17 */
   637  type int_least64_t = int64_t /* stdint.h:28:17 */
   638  
   639  type uint_fast8_t = uint8_t   /* stdint.h:30:17 */
   640  type uint_fast64_t = uint64_t /* stdint.h:31:18 */
   641  
   642  type uint_least8_t = uint8_t   /* stdint.h:33:18 */
   643  type uint_least16_t = uint16_t /* stdint.h:34:18 */
   644  type uint_least32_t = uint32_t /* stdint.h:35:18 */
   645  type uint_least64_t = uint64_t /* stdint.h:36:18 */
   646  
   647  type int_fast16_t = int32_t   /* stdint.h:1:17 */
   648  type int_fast32_t = int32_t   /* stdint.h:2:17 */
   649  type uint_fast16_t = uint32_t /* stdint.h:3:18 */
   650  type uint_fast32_t = uint32_t /* stdint.h:4:18 */
   651  
   652  type _IO_FILE = struct {
   653  	flags        uint32
   654  	_            [4]byte
   655  	rpos         uintptr
   656  	rend         uintptr
   657  	close        uintptr
   658  	wend         uintptr
   659  	wpos         uintptr
   660  	mustbezero_1 uintptr
   661  	wbase        uintptr
   662  	read         uintptr
   663  	write        uintptr
   664  	seek         uintptr
   665  	buf          uintptr
   666  	buf_size     size_t
   667  	prev         uintptr
   668  	next         uintptr
   669  	fd           int32
   670  	pipe_pid     int32
   671  	lockcount    int64
   672  	mode         int32
   673  	lock         int32
   674  	lbf          int32
   675  	_            [4]byte
   676  	cookie       uintptr
   677  	off          off_t
   678  	getln_buf    uintptr
   679  	mustbezero_2 uintptr
   680  	shend        uintptr
   681  	shlim        off_t
   682  	shcnt        off_t
   683  	prev_locked  uintptr
   684  	next_locked  uintptr
   685  	locale       uintptr
   686  } /* alltypes.h:320:9 */
   687  
   688  type FILE = _IO_FILE /* alltypes.h:320:25 */
   689  
   690  type va_list = uintptr /* alltypes.h:326:27 */
   691  
   692  type _G_fpos64_t = struct {
   693  	_        [0]uint64
   694  	__opaque [16]int8
   695  } /* stdio.h:54:9 */
   696  
   697  type fpos_t = _G_fpos64_t /* stdio.h:58:3 */
   698  
   699  type float_t = float32 /* alltypes.h:29:15 */
   700  
   701  type double_t = float64 /* alltypes.h:34:16 */
   702  
   703  func __FLOAT_BITS(tls *TLS, __f float32) uint32 { /* math.h:55:26: */
   704  	bp := tls.Alloc(4)
   705  	defer tls.Free(4)
   706  
   707  	// var __u struct {__f float32;} at bp, 4
   708  
   709  	*(*float32)(unsafe.Pointer(bp)) = __f
   710  	return *(*uint32)(unsafe.Pointer(bp))
   711  }
   712  
   713  func __DOUBLE_BITS(tls *TLS, __f float64) uint64 { /* math.h:61:36: */
   714  	bp := tls.Alloc(8)
   715  	defer tls.Free(8)
   716  
   717  	// var __u struct {__f float64;} at bp, 8
   718  
   719  	*(*float64)(unsafe.Pointer(bp)) = __f
   720  	return *(*uint64)(unsafe.Pointer(bp))
   721  }
   722  
   723  type __pthread = struct {
   724  	self          uintptr
   725  	dtv           uintptr
   726  	prev          uintptr
   727  	next          uintptr
   728  	sysinfo       uintptr_t
   729  	canary        uintptr_t
   730  	canary2       uintptr_t
   731  	tid           int32
   732  	errno_val     int32
   733  	detach_state  int32
   734  	cancel        int32
   735  	canceldisable uint8
   736  	cancelasync   uint8
   737  	tsd_used      uint8 /* unsigned char tsd_used: 1, unsigned char dlerror_flag: 1 */
   738  	_             [5]byte
   739  	map_base      uintptr
   740  	map_size      size_t
   741  	stack         uintptr
   742  	stack_size    size_t
   743  	guard_size    size_t
   744  	result        uintptr
   745  	cancelbuf     uintptr
   746  	tsd           uintptr
   747  	robust_list   struct {
   748  		head    uintptr
   749  		off     int64
   750  		pending uintptr
   751  	}
   752  	timer_id      int32
   753  	_             [4]byte
   754  	locale        locale_t
   755  	killlock      [1]int32
   756  	_             [4]byte
   757  	dlerror_buf   uintptr
   758  	stdio_locks   uintptr
   759  	canary_at_end uintptr_t
   760  	dtv_copy      uintptr
   761  } /* alltypes.h:273:9 */
   762  
   763  func scanexp(tls *TLS, f uintptr, pok int32) int64 { /* floatscan.c:37:18: */
   764  	var c int32
   765  	var x int32
   766  	var y int64
   767  	var neg int32 = 0
   768  
   769  	c = func() int32 {
   770  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   771  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   772  		}
   773  		return X__shgetc(tls, f)
   774  	}()
   775  	if c == '+' || c == '-' {
   776  		neg = Bool32(c == '-')
   777  		c = func() int32 {
   778  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   779  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   780  			}
   781  			return X__shgetc(tls, f)
   782  		}()
   783  		if uint32(c-'0') >= 10 && pok != 0 {
   784  			if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
   785  				(*FILE)(unsafe.Pointer(f)).rpos--
   786  			} else {
   787  			}
   788  		}
   789  	}
   790  	if uint32(c-'0') >= 10 {
   791  		if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
   792  			(*FILE)(unsafe.Pointer(f)).rpos--
   793  		} else {
   794  		}
   795  		return -0x7fffffffffffffff - int64(1)
   796  	}
   797  	for x = 0; uint32(c-'0') < 10 && x < 0x7fffffff/10; c = func() int32 {
   798  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   799  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   800  		}
   801  		return X__shgetc(tls, f)
   802  	}() {
   803  		x = 10*x + c - '0'
   804  	}
   805  	for y = int64(x); uint32(c-'0') < 10 && y < 0x7fffffffffffffff/int64(100); c = func() int32 {
   806  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   807  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   808  		}
   809  		return X__shgetc(tls, f)
   810  	}() {
   811  		y = int64(10)*y + int64(c) - int64('0')
   812  	}
   813  	for ; uint32(c-'0') < 10; c = func() int32 {
   814  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   815  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   816  		}
   817  		return X__shgetc(tls, f)
   818  	}() {
   819  	}
   820  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
   821  		(*FILE)(unsafe.Pointer(f)).rpos--
   822  	} else {
   823  	}
   824  	if neg != 0 {
   825  		return -y
   826  	}
   827  	return y
   828  }
   829  
   830  func decfloat(tls *TLS, f uintptr, c int32, bits int32, emin int32, sign int32, pok int32) float64 { /* floatscan.c:64:20: */
   831  	bp := tls.Alloc(512)
   832  	defer tls.Free(512)
   833  
   834  	// var x [128]uint32_t at bp, 512
   835  
   836  	var i int32
   837  	var j int32
   838  	var k int32
   839  	var a int32
   840  	var z int32
   841  	var lrp int64 = int64(0)
   842  	var dc int64 = int64(0)
   843  	var e10 int64 = int64(0)
   844  	var lnz int32 = 0
   845  	var gotdig int32 = 0
   846  	var gotrad int32 = 0
   847  	var rp int32
   848  	var e2 int32
   849  	var emax int32 = -emin - bits + 3
   850  	var denormal int32 = 0
   851  	var y float64
   852  	var frac float64 = float64(0)
   853  	var bias float64 = float64(0)
   854  
   855  	j = 0
   856  	k = 0
   857  
   858  	// Don't let leading zeros consume buffer space
   859  	for ; c == '0'; c = func() int32 {
   860  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   861  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   862  		}
   863  		return X__shgetc(tls, f)
   864  	}() {
   865  		gotdig = 1
   866  	}
   867  	if c == '.' {
   868  		gotrad = 1
   869  		for c = func() int32 {
   870  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   871  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   872  			}
   873  			return X__shgetc(tls, f)
   874  		}(); c == '0'; c = func() int32 {
   875  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   876  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   877  			}
   878  			return X__shgetc(tls, f)
   879  		}() {
   880  			gotdig = 1
   881  			lrp--
   882  		}
   883  	}
   884  
   885  	*(*uint32_t)(unsafe.Pointer(bp)) = uint32_t(0)
   886  	for ; uint32(c-'0') < 10 || c == '.'; c = func() int32 {
   887  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
   888  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
   889  		}
   890  		return X__shgetc(tls, f)
   891  	}() {
   892  		if c == '.' {
   893  			if gotrad != 0 {
   894  				break
   895  			}
   896  			gotrad = 1
   897  			lrp = dc
   898  		} else if k < 128-3 {
   899  			dc++
   900  			if c != '0' {
   901  				lnz = int32(dc)
   902  			}
   903  			if j != 0 {
   904  				*(*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')
   905  			} else {
   906  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(c - '0')
   907  			}
   908  			if PreIncInt32(&j, 1) == 9 {
   909  				k++
   910  				j = 0
   911  			}
   912  			gotdig = 1
   913  		} else {
   914  			dc++
   915  			if c != '0' {
   916  				lnz = (128 - 4) * 9
   917  				*(*uint32_t)(unsafe.Pointer(bp + 124*4)) |= uint32_t(1)
   918  			}
   919  		}
   920  	}
   921  	if !(gotrad != 0) {
   922  		lrp = dc
   923  	}
   924  
   925  	if gotdig != 0 && c|32 == 'e' {
   926  		e10 = scanexp(tls, f, pok)
   927  		if e10 == -0x7fffffffffffffff-int64(1) {
   928  			if pok != 0 {
   929  				if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
   930  					(*FILE)(unsafe.Pointer(f)).rpos--
   931  				} else {
   932  				}
   933  			} else {
   934  				X__shlim(tls, f, int64(0))
   935  				return float64(0)
   936  			}
   937  			e10 = int64(0)
   938  		}
   939  		lrp = lrp + e10
   940  	} else if c >= 0 {
   941  		if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
   942  			(*FILE)(unsafe.Pointer(f)).rpos--
   943  		} else {
   944  		}
   945  	}
   946  	if !(gotdig != 0) {
   947  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
   948  		X__shlim(tls, f, int64(0))
   949  		return float64(0)
   950  	}
   951  
   952  	// Handle zero specially to avoid nasty special cases later
   953  	if !(int32(*(*uint32_t)(unsafe.Pointer(bp))) != 0) {
   954  		return float64(sign) * 0.0
   955  	}
   956  
   957  	// Optimize small integers (w/no exponent) and over/under-flow
   958  	if lrp == dc && dc < int64(10) && (bits > 30 || *(*uint32_t)(unsafe.Pointer(bp))>>bits == uint32_t(0)) {
   959  		return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp)))
   960  	}
   961  	if lrp > int64(-emin/2) {
   962  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
   963  		return float64(sign) * 1.79769313486231570815e+308 * 1.79769313486231570815e+308
   964  	}
   965  	if lrp < int64(emin-2*53) {
   966  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
   967  		return float64(sign) * 2.22507385850720138309e-308 * 2.22507385850720138309e-308
   968  	}
   969  
   970  	// Align incomplete final B1B digit
   971  	if j != 0 {
   972  		for ; j < 9; j++ {
   973  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) *= uint32_t(10)
   974  		}
   975  		k++
   976  		j = 0
   977  	}
   978  
   979  	a = 0
   980  	z = k
   981  	e2 = 0
   982  	rp = int32(lrp)
   983  
   984  	// Optimize small to mid-size integers (even in exp. notation)
   985  	if lnz < 9 && lnz <= rp && rp < 18 {
   986  		if rp == 9 {
   987  			return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp)))
   988  		}
   989  		if rp < 9 {
   990  			return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp))) / float64(_sp10s[8-rp])
   991  		}
   992  		var bitlim int32 = bits - 3*(rp-9)
   993  		if bitlim > 30 || *(*uint32_t)(unsafe.Pointer(bp))>>bitlim == uint32_t(0) {
   994  			return float64(sign) * float64(*(*uint32_t)(unsafe.Pointer(bp))) * float64(_sp10s[rp-10])
   995  		}
   996  	}
   997  
   998  	// Drop trailing zeros
   999  	for ; !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(z-1)*4))) != 0); z-- {
  1000  	}
  1001  
  1002  	// Align radix point to B1B digit boundary
  1003  	if rp%9 != 0 {
  1004  		var rpm9 int32
  1005  		if rp >= 0 {
  1006  			rpm9 = rp % 9
  1007  		} else {
  1008  			rpm9 = rp%9 + 9
  1009  		}
  1010  		var p10 int32 = _sp10s[8-rpm9]
  1011  		var carry uint32_t = uint32_t(0)
  1012  		for k = a; k != z; k++ {
  1013  			var tmp uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) % uint32_t(p10)
  1014  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))/uint32_t(p10) + carry
  1015  			carry = uint32_t(1000000000/p10) * tmp
  1016  			if k == a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
  1017  				a = (a + 1) & (128 - 1)
  1018  				rp = rp - 9
  1019  			}
  1020  		}
  1021  		if carry != 0 {
  1022  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(PostIncInt32(&z, 1))*4)) = carry
  1023  		}
  1024  		rp = rp + (9 - rpm9)
  1025  	}
  1026  
  1027  	// Upscale until desired number of bits are left of radix point
  1028  	for rp < 9*2 || rp == 9*2 && *(*uint32_t)(unsafe.Pointer(bp + uintptr(a)*4)) < _sth[0] {
  1029  		var carry uint32_t = uint32_t(0)
  1030  		e2 = e2 - 29
  1031  		for k = (z - 1) & (128 - 1); ; k = (k - 1) & (128 - 1) {
  1032  			var tmp uint64_t = uint64_t(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)))<<29 + uint64_t(carry)
  1033  			if tmp > uint64(1000000000) {
  1034  				carry = uint32_t(tmp / uint64(1000000000))
  1035  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(tmp % uint64(1000000000))
  1036  			} else {
  1037  				carry = uint32_t(0)
  1038  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = uint32_t(tmp)
  1039  			}
  1040  			if k == (z-1)&(128-1) && k != a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
  1041  				z = k
  1042  			}
  1043  			if k == a {
  1044  				break
  1045  			}
  1046  		}
  1047  		if carry != 0 {
  1048  			rp = rp + 9
  1049  			a = (a - 1) & (128 - 1)
  1050  			if a == z {
  1051  				z = (z - 1) & (128 - 1)
  1052  				*(*uint32_t)(unsafe.Pointer(bp + uintptr((z-1)&(128-1))*4)) |= *(*uint32_t)(unsafe.Pointer(bp + uintptr(z)*4))
  1053  			}
  1054  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(a)*4)) = carry
  1055  		}
  1056  	}
  1057  
  1058  	// Downscale until exactly number of bits are left of radix point
  1059  	for {
  1060  		var carry uint32_t = uint32_t(0)
  1061  		var sh int32 = 1
  1062  		for i = 0; i < 2; i++ {
  1063  			k = (a + i) & (128 - 1)
  1064  			if k == z || *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) < _sth[i] {
  1065  				i = 2
  1066  				break
  1067  			}
  1068  			if *(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4)) > _sth[i] {
  1069  				break
  1070  			}
  1071  		}
  1072  		if i == 2 && rp == 9*2 {
  1073  			break
  1074  		}
  1075  		// FIXME: find a way to compute optimal sh
  1076  		if rp > 9+9*2 {
  1077  			sh = 9
  1078  		}
  1079  		e2 = e2 + sh
  1080  		for k = a; k != z; k = (k + 1) & (128 - 1) {
  1081  			var tmp uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) & uint32_t(int32(1)<<sh-1)
  1082  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) = *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))>>sh + carry
  1083  			carry = uint32_t(int32(1000000000)>>sh) * tmp
  1084  			if k == a && !(int32(*(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))) != 0) {
  1085  				a = (a + 1) & (128 - 1)
  1086  				i--
  1087  				rp = rp - 9
  1088  			}
  1089  		}
  1090  		if carry != 0 {
  1091  			if (z+1)&(128-1) != a {
  1092  				*(*uint32_t)(unsafe.Pointer(bp + uintptr(z)*4)) = carry
  1093  				z = (z + 1) & (128 - 1)
  1094  			} else {
  1095  				*(*uint32_t)(unsafe.Pointer(bp + uintptr((z-1)&(128-1))*4)) |= uint32_t(1)
  1096  			}
  1097  		}
  1098  	}
  1099  
  1100  	// Assemble desired bits into floating point variable
  1101  	for y = float64(AssignInt32(&i, 0)); i < 2; i++ {
  1102  		if (a+i)&(128-1) == z {
  1103  			*(*uint32_t)(unsafe.Pointer(bp + uintptr(AssignInt32(&z, (z+1)&(128-1))-1)*4)) = uint32_t(0)
  1104  		}
  1105  		y = 1000000000.0*y + float64(*(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4)))
  1106  	}
  1107  
  1108  	y = y * float64(sign)
  1109  
  1110  	// Limit precision for denormal results
  1111  	if bits > 53+e2-emin {
  1112  		bits = 53 + e2 - emin
  1113  		if bits < 0 {
  1114  			bits = 0
  1115  		}
  1116  		denormal = 1
  1117  	}
  1118  
  1119  	// Calculate bias term to force rounding, move out lower bits
  1120  	if bits < 53 {
  1121  		bias = Xcopysignl(tls, Xscalbn(tls, float64(1), 2*53-bits-1), y)
  1122  		frac = Xfmodl(tls, y, Xscalbn(tls, float64(1), 53-bits))
  1123  		y = y - frac
  1124  		y = y + bias
  1125  	}
  1126  
  1127  	// Process tail of decimal input so it can affect rounding
  1128  	if (a+i)&(128-1) != z {
  1129  		var t uint32_t = *(*uint32_t)(unsafe.Pointer(bp + uintptr((a+i)&(128-1))*4))
  1130  		if t < uint32_t(500000000) && (t != 0 || (a+i+1)&(128-1) != z) {
  1131  			frac = frac + 0.25*float64(sign)
  1132  		} else if t > uint32_t(500000000) {
  1133  			frac = frac + 0.75*float64(sign)
  1134  		} else if t == uint32_t(500000000) {
  1135  			if (a+i+1)&(128-1) == z {
  1136  				frac = frac + 0.5*float64(sign)
  1137  			} else {
  1138  				frac = frac + 0.75*float64(sign)
  1139  			}
  1140  		}
  1141  		if 53-bits >= 2 && !(Xfmodl(tls, frac, float64(1)) != 0) {
  1142  			frac += 1
  1143  		}
  1144  	}
  1145  
  1146  	y = y + frac
  1147  	y = y - bias
  1148  
  1149  	if (e2+53)&0x7fffffff > emax-5 {
  1150  		if Xfabsl(tls, y) >= float64(float64(2))/2.22044604925031308085e-16 {
  1151  			if denormal != 0 && bits == 53+e2-emin {
  1152  				denormal = 0
  1153  			}
  1154  			y = y * 0.5
  1155  			e2++
  1156  		}
  1157  		if e2+53 > emax || denormal != 0 && frac != 0 {
  1158  			*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1159  		}
  1160  	}
  1161  
  1162  	return Xscalbnl(tls, y, e2)
  1163  }
  1164  
  1165  var _sth = [2]uint32_t{uint32_t(9007199), uint32_t(254740991)} /* floatscan.c:67:24 */
  1166  var _sp10s = [8]int32{10, 100, 1000, 10000,
  1167  	100000, 1000000, 10000000, 100000000} /* floatscan.c:80:19 */
  1168  
  1169  func hexfloat(tls *TLS, f uintptr, bits int32, emin int32, sign int32, pok int32) float64 { /* floatscan.c:315:20: */
  1170  	var x uint32_t = uint32_t(0)
  1171  	var y float64 = float64(0)
  1172  	var scale float64 = float64(1)
  1173  	var bias float64 = float64(0)
  1174  	var gottail int32 = 0
  1175  	var gotrad int32 = 0
  1176  	var gotdig int32 = 0
  1177  	var rp int64 = int64(0)
  1178  	var dc int64 = int64(0)
  1179  	var e2 int64 = int64(0)
  1180  	var d int32
  1181  	var c int32
  1182  
  1183  	c = func() int32 {
  1184  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1185  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1186  		}
  1187  		return X__shgetc(tls, f)
  1188  	}()
  1189  
  1190  	// Skip leading zeros
  1191  	for ; c == '0'; c = func() int32 {
  1192  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1193  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1194  		}
  1195  		return X__shgetc(tls, f)
  1196  	}() {
  1197  		gotdig = 1
  1198  	}
  1199  
  1200  	if c == '.' {
  1201  		gotrad = 1
  1202  		c = func() int32 {
  1203  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1204  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1205  			}
  1206  			return X__shgetc(tls, f)
  1207  		}()
  1208  		// Count zeros after the radix point before significand
  1209  		rp = int64(0)
  1210  	__1:
  1211  		if !(c == '0') {
  1212  			goto __3
  1213  		}
  1214  		gotdig = 1
  1215  		goto __2
  1216  	__2:
  1217  		c = func() int32 {
  1218  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1219  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1220  			}
  1221  			return X__shgetc(tls, f)
  1222  		}()
  1223  		rp--
  1224  		goto __1
  1225  		goto __3
  1226  	__3:
  1227  	}
  1228  
  1229  	for ; uint32(c-'0') < 10 || uint32(c|32-'a') < 6 || c == '.'; c = func() int32 {
  1230  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1231  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1232  		}
  1233  		return X__shgetc(tls, f)
  1234  	}() {
  1235  		if c == '.' {
  1236  			if gotrad != 0 {
  1237  				break
  1238  			}
  1239  			rp = dc
  1240  			gotrad = 1
  1241  		} else {
  1242  			gotdig = 1
  1243  			if c > '9' {
  1244  				d = c | 32 + 10 - 'a'
  1245  			} else {
  1246  				d = c - '0'
  1247  			}
  1248  			if dc < int64(8) {
  1249  				x = x*uint32_t(16) + uint32_t(d)
  1250  			} else if dc < int64(53/4+1) {
  1251  				y = y + float64(d)*AssignDivFloat64(&scale, float64(16))
  1252  			} else if d != 0 && !(gottail != 0) {
  1253  				y = y + 0.5*scale
  1254  				gottail = 1
  1255  			}
  1256  			dc++
  1257  		}
  1258  	}
  1259  	if !(gotdig != 0) {
  1260  		if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1261  			(*FILE)(unsafe.Pointer(f)).rpos--
  1262  		} else {
  1263  		}
  1264  		if pok != 0 {
  1265  			if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1266  				(*FILE)(unsafe.Pointer(f)).rpos--
  1267  			} else {
  1268  			}
  1269  			if gotrad != 0 {
  1270  				if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1271  					(*FILE)(unsafe.Pointer(f)).rpos--
  1272  				} else {
  1273  				}
  1274  			}
  1275  		} else {
  1276  			X__shlim(tls, f, int64(0))
  1277  		}
  1278  		return float64(sign) * 0.0
  1279  	}
  1280  	if !(gotrad != 0) {
  1281  		rp = dc
  1282  	}
  1283  	for dc < int64(8) {
  1284  		x = x * uint32_t(16)
  1285  		dc++
  1286  	}
  1287  	if c|32 == 'p' {
  1288  		e2 = scanexp(tls, f, pok)
  1289  		if e2 == -0x7fffffffffffffff-int64(1) {
  1290  			if pok != 0 {
  1291  				if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1292  					(*FILE)(unsafe.Pointer(f)).rpos--
  1293  				} else {
  1294  				}
  1295  			} else {
  1296  				X__shlim(tls, f, int64(0))
  1297  				return float64(0)
  1298  			}
  1299  			e2 = int64(0)
  1300  		}
  1301  	} else {
  1302  		if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1303  			(*FILE)(unsafe.Pointer(f)).rpos--
  1304  		} else {
  1305  		}
  1306  	}
  1307  	e2 = e2 + (int64(4)*rp - int64(32))
  1308  
  1309  	if !(x != 0) {
  1310  		return float64(sign) * 0.0
  1311  	}
  1312  	if e2 > int64(-emin) {
  1313  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1314  		return float64(sign) * 1.79769313486231570815e+308 * 1.79769313486231570815e+308
  1315  	}
  1316  	if e2 < int64(emin-2*53) {
  1317  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1318  		return float64(sign) * 2.22507385850720138309e-308 * 2.22507385850720138309e-308
  1319  	}
  1320  
  1321  	for x < 0x80000000 {
  1322  		if y >= 0.5 {
  1323  			x = x + (x + uint32_t(1))
  1324  			y = y + (y - float64(1))
  1325  		} else {
  1326  			x = x + x
  1327  			y = y + y
  1328  		}
  1329  		e2--
  1330  	}
  1331  
  1332  	if int64(bits) > int64(32)+e2-int64(emin) {
  1333  		bits = int32(int64(32) + e2 - int64(emin))
  1334  		if bits < 0 {
  1335  			bits = 0
  1336  		}
  1337  	}
  1338  
  1339  	if bits < 53 {
  1340  		bias = Xcopysignl(tls, Xscalbn(tls, float64(1), 32+53-bits-1), float64(sign))
  1341  	}
  1342  
  1343  	if bits < 32 && y != 0 && !(x&uint32_t(1) != 0) {
  1344  		x++
  1345  		y = float64(0)
  1346  	}
  1347  
  1348  	y = bias + float64(sign)*float64(x) + float64(sign)*y
  1349  	y = y - bias
  1350  
  1351  	if !(y != 0) {
  1352  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1353  	}
  1354  
  1355  	return Xscalbnl(tls, y, int32(e2))
  1356  }
  1357  
  1358  func X__floatscan(tls *TLS, f uintptr, prec int32, pok int32) float64 { /* floatscan.c:427:13: */
  1359  	var sign int32 = 1
  1360  	var i size_t
  1361  	var bits int32
  1362  	var emin int32
  1363  	var c int32
  1364  
  1365  	switch prec {
  1366  	case 0:
  1367  		bits = 24
  1368  		emin = -125 - bits
  1369  		break
  1370  	case 1:
  1371  		bits = 53
  1372  		emin = -1021 - bits
  1373  		break
  1374  	case 2:
  1375  		bits = 53
  1376  		emin = -1021 - bits
  1377  		break
  1378  	default:
  1379  		return float64(0)
  1380  	}
  1381  
  1382  	for __isspace(tls, AssignInt32(&c, func() int32 {
  1383  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1384  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1385  		}
  1386  		return X__shgetc(tls, f)
  1387  	}())) != 0 {
  1388  	}
  1389  
  1390  	if c == '+' || c == '-' {
  1391  		sign = sign - 2*Bool32(c == '-')
  1392  		c = func() int32 {
  1393  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1394  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1395  			}
  1396  			return X__shgetc(tls, f)
  1397  		}()
  1398  	}
  1399  
  1400  	for i = uint64(0); i < uint64(8) && c|32 == int32(*(*int8)(unsafe.Pointer(ts /* "infinity" */ + uintptr(i)))); i++ {
  1401  		if i < uint64(7) {
  1402  			c = func() int32 {
  1403  				if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1404  					return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1405  				}
  1406  				return X__shgetc(tls, f)
  1407  			}()
  1408  		}
  1409  	}
  1410  	if i == uint64(3) || i == uint64(8) || i > uint64(3) && pok != 0 {
  1411  		if i != uint64(8) {
  1412  			if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1413  				(*FILE)(unsafe.Pointer(f)).rpos--
  1414  			} else {
  1415  			}
  1416  			if pok != 0 {
  1417  				for ; i > uint64(3); i-- {
  1418  					if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1419  						(*FILE)(unsafe.Pointer(f)).rpos--
  1420  					} else {
  1421  					}
  1422  				}
  1423  			}
  1424  		}
  1425  		return float64(float32(sign) * X__builtin_inff(tls))
  1426  	}
  1427  	if !(i != 0) {
  1428  		for i = uint64(0); i < uint64(3) && c|32 == int32(*(*int8)(unsafe.Pointer(ts + 9 /* "nan" */ + uintptr(i)))); i++ {
  1429  			if i < uint64(2) {
  1430  				c = func() int32 {
  1431  					if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1432  						return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1433  					}
  1434  					return X__shgetc(tls, f)
  1435  				}()
  1436  			}
  1437  		}
  1438  	}
  1439  	if i == uint64(3) {
  1440  		if func() int32 {
  1441  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1442  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1443  			}
  1444  			return X__shgetc(tls, f)
  1445  		}() != '(' {
  1446  			if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1447  				(*FILE)(unsafe.Pointer(f)).rpos--
  1448  			} else {
  1449  			}
  1450  			return float64(X__builtin_nanf(tls, ts+13))
  1451  		}
  1452  		for i = uint64(1); ; i++ {
  1453  			c = func() int32 {
  1454  				if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1455  					return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1456  				}
  1457  				return X__shgetc(tls, f)
  1458  			}()
  1459  			if uint32(c-'0') < 10 || uint32(c-'A') < 26 || uint32(c-'a') < 26 || c == '_' {
  1460  				continue
  1461  			}
  1462  			if c == ')' {
  1463  				return float64(X__builtin_nanf(tls, ts+13))
  1464  			}
  1465  			if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1466  				(*FILE)(unsafe.Pointer(f)).rpos--
  1467  			} else {
  1468  			}
  1469  			if !(pok != 0) {
  1470  				*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  1471  				X__shlim(tls, f, int64(0))
  1472  				return float64(0)
  1473  			}
  1474  			for PostDecUint64(&i, 1) != 0 {
  1475  				if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1476  					(*FILE)(unsafe.Pointer(f)).rpos--
  1477  				} else {
  1478  				}
  1479  			}
  1480  			return float64(X__builtin_nanf(tls, ts+13))
  1481  		}
  1482  		return float64(X__builtin_nanf(tls, ts+13))
  1483  	}
  1484  
  1485  	if i != 0 {
  1486  		if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1487  			(*FILE)(unsafe.Pointer(f)).rpos--
  1488  		} else {
  1489  		}
  1490  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  1491  		X__shlim(tls, f, int64(0))
  1492  		return float64(0)
  1493  	}
  1494  
  1495  	if c == '0' {
  1496  		c = func() int32 {
  1497  			if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1498  				return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1499  			}
  1500  			return X__shgetc(tls, f)
  1501  		}()
  1502  		if c|32 == 'x' {
  1503  			return hexfloat(tls, f, bits, emin, sign, pok)
  1504  		}
  1505  		if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1506  			(*FILE)(unsafe.Pointer(f)).rpos--
  1507  		} else {
  1508  		}
  1509  		c = '0'
  1510  	}
  1511  
  1512  	return decfloat(tls, f, c, bits, emin, sign, pok)
  1513  }
  1514  
  1515  // Lookup table for digit values. -1==255>=36 -> invalid
  1516  var table1 = [257]uint8{Uint8FromInt32(-1),
  1517  	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),
  1518  	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),
  1519  	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),
  1520  	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),
  1521  	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),
  1522  	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),
  1523  	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),
  1524  	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),
  1525  	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),
  1526  	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),
  1527  	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),
  1528  	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),
  1529  	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),
  1530  	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),
  1531  	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),
  1532  	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),
  1533  } /* intscan.c:7:28 */
  1534  
  1535  func X__intscan(tls *TLS, f uintptr, base uint32, pok int32, lim uint64) uint64 { /* intscan.c:26:20: */
  1536  	var val uintptr
  1537  	var c int32
  1538  	var neg int32
  1539  	var x uint32
  1540  	var y uint64
  1541  	var bs int32
  1542  	val = uintptr(unsafe.Pointer(&table1)) + uintptr(1)
  1543  	neg = 0
  1544  	if !(base > uint32(36) || base == uint32(1)) {
  1545  		goto __1
  1546  	}
  1547  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  1548  	return uint64(0)
  1549  __1:
  1550  	;
  1551  __2:
  1552  	if !(__isspace(tls, AssignInt32(&c, func() int32 {
  1553  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1554  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1555  		}
  1556  		return X__shgetc(tls, f)
  1557  	}())) != 0) {
  1558  		goto __3
  1559  	}
  1560  	goto __2
  1561  __3:
  1562  	;
  1563  	if !(c == '+' || c == '-') {
  1564  		goto __4
  1565  	}
  1566  	neg = -Bool32(c == '-')
  1567  	c = func() int32 {
  1568  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1569  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1570  		}
  1571  		return X__shgetc(tls, f)
  1572  	}()
  1573  __4:
  1574  	;
  1575  	if !((base == uint32(0) || base == uint32(16)) && c == '0') {
  1576  		goto __5
  1577  	}
  1578  	c = func() int32 {
  1579  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1580  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1581  		}
  1582  		return X__shgetc(tls, f)
  1583  	}()
  1584  	if !(c|32 == 'x') {
  1585  		goto __7
  1586  	}
  1587  	c = func() int32 {
  1588  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1589  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1590  		}
  1591  		return X__shgetc(tls, f)
  1592  	}()
  1593  	if !(int32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) >= 16) {
  1594  		goto __9
  1595  	}
  1596  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1597  		(*FILE)(unsafe.Pointer(f)).rpos--
  1598  	} else {
  1599  	}
  1600  	if !(pok != 0) {
  1601  		goto __10
  1602  	}
  1603  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1604  		(*FILE)(unsafe.Pointer(f)).rpos--
  1605  	} else {
  1606  	}
  1607  	goto __11
  1608  __10:
  1609  	X__shlim(tls, f, int64(0))
  1610  __11:
  1611  	;
  1612  	return uint64(0)
  1613  __9:
  1614  	;
  1615  	base = uint32(16)
  1616  	goto __8
  1617  __7:
  1618  	if !(base == uint32(0)) {
  1619  		goto __12
  1620  	}
  1621  	base = uint32(8)
  1622  __12:
  1623  	;
  1624  __8:
  1625  	;
  1626  	goto __6
  1627  __5:
  1628  	if !(base == uint32(0)) {
  1629  		goto __13
  1630  	}
  1631  	base = uint32(10)
  1632  __13:
  1633  	;
  1634  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) >= base) {
  1635  		goto __14
  1636  	}
  1637  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1638  		(*FILE)(unsafe.Pointer(f)).rpos--
  1639  	} else {
  1640  	}
  1641  	X__shlim(tls, f, int64(0))
  1642  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 22
  1643  	return uint64(0)
  1644  __14:
  1645  	;
  1646  __6:
  1647  	;
  1648  	if !(base == uint32(10)) {
  1649  		goto __15
  1650  	}
  1651  	x = uint32(0)
  1652  __17:
  1653  	if !(uint32(c-'0') < 10 && x <= 0xffffffff/uint32(10)-uint32(1)) {
  1654  		goto __19
  1655  	}
  1656  	x = x*uint32(10) + uint32(c-'0')
  1657  	goto __18
  1658  __18:
  1659  	c = func() int32 {
  1660  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1661  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1662  		}
  1663  		return X__shgetc(tls, f)
  1664  	}()
  1665  	goto __17
  1666  	goto __19
  1667  __19:
  1668  	;
  1669  	y = uint64(x)
  1670  __20:
  1671  	if !(uint32(c-'0') < 10 && y <= (2*uint64(0x7fffffffffffffff)+uint64(1))/uint64(10) && uint64(10)*y <= 2*uint64(0x7fffffffffffffff)+uint64(1)-uint64(c-'0')) {
  1672  		goto __22
  1673  	}
  1674  	y = y*uint64(10) + uint64(c-'0')
  1675  	goto __21
  1676  __21:
  1677  	c = func() int32 {
  1678  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1679  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1680  		}
  1681  		return X__shgetc(tls, f)
  1682  	}()
  1683  	goto __20
  1684  	goto __22
  1685  __22:
  1686  	;
  1687  	if !(uint32(c-'0') >= 10) {
  1688  		goto __23
  1689  	}
  1690  	goto done
  1691  __23:
  1692  	;
  1693  	goto __16
  1694  __15:
  1695  	if !!(base&(base-uint32(1)) != 0) {
  1696  		goto __24
  1697  	}
  1698  	bs = int32(*(*int8)(unsafe.Pointer(ts + 14 + uintptr(uint32(0x17)*base>>5&uint32(7)))))
  1699  	x = uint32(0)
  1700  __26:
  1701  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && x <= 0xffffffff/uint32(32)) {
  1702  		goto __28
  1703  	}
  1704  	x = x<<bs | uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  1705  	goto __27
  1706  __27:
  1707  	c = func() int32 {
  1708  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1709  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1710  		}
  1711  		return X__shgetc(tls, f)
  1712  	}()
  1713  	goto __26
  1714  	goto __28
  1715  __28:
  1716  	;
  1717  	y = uint64(x)
  1718  __29:
  1719  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && y <= uint64(2*uint64(0x7fffffffffffffff)+uint64(1))>>bs) {
  1720  		goto __31
  1721  	}
  1722  	y = y<<bs | uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  1723  	goto __30
  1724  __30:
  1725  	c = func() int32 {
  1726  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1727  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1728  		}
  1729  		return X__shgetc(tls, f)
  1730  	}()
  1731  	goto __29
  1732  	goto __31
  1733  __31:
  1734  	;
  1735  	goto __25
  1736  __24:
  1737  	x = uint32(0)
  1738  __32:
  1739  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base && x <= 0xffffffff/uint32(36)-uint32(1)) {
  1740  		goto __34
  1741  	}
  1742  	x = x*base + uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  1743  	goto __33
  1744  __33:
  1745  	c = func() int32 {
  1746  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1747  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1748  		}
  1749  		return X__shgetc(tls, f)
  1750  	}()
  1751  	goto __32
  1752  	goto __34
  1753  __34:
  1754  	;
  1755  	y = uint64(x)
  1756  __35:
  1757  	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))))) {
  1758  		goto __37
  1759  	}
  1760  	y = y*uint64(base) + uint64(*(*uint8)(unsafe.Pointer(val + uintptr(c))))
  1761  	goto __36
  1762  __36:
  1763  	c = func() int32 {
  1764  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1765  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1766  		}
  1767  		return X__shgetc(tls, f)
  1768  	}()
  1769  	goto __35
  1770  	goto __37
  1771  __37:
  1772  	;
  1773  __25:
  1774  	;
  1775  __16:
  1776  	;
  1777  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base) {
  1778  		goto __38
  1779  	}
  1780  __39:
  1781  	if !(uint32(*(*uint8)(unsafe.Pointer(val + uintptr(c)))) < base) {
  1782  		goto __41
  1783  	}
  1784  	goto __40
  1785  __40:
  1786  	c = func() int32 {
  1787  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  1788  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  1789  		}
  1790  		return X__shgetc(tls, f)
  1791  	}()
  1792  	goto __39
  1793  	goto __41
  1794  __41:
  1795  	;
  1796  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1797  	y = lim
  1798  	if !(lim&uint64(1) != 0) {
  1799  		goto __42
  1800  	}
  1801  	neg = 0
  1802  __42:
  1803  	;
  1804  __38:
  1805  	;
  1806  done:
  1807  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  1808  		(*FILE)(unsafe.Pointer(f)).rpos--
  1809  	} else {
  1810  	}
  1811  	if !(y >= lim) {
  1812  		goto __43
  1813  	}
  1814  	if !(!(lim&uint64(1) != 0) && !(neg != 0)) {
  1815  		goto __44
  1816  	}
  1817  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1818  	return lim - uint64(1)
  1819  	goto __45
  1820  __44:
  1821  	if !(y > lim) {
  1822  		goto __46
  1823  	}
  1824  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 34
  1825  	return lim
  1826  __46:
  1827  	;
  1828  __45:
  1829  	;
  1830  __43:
  1831  	;
  1832  	return y ^ uint64(neg) - uint64(neg)
  1833  }
  1834  
  1835  // The shcnt field stores the number of bytes read so far, offset by
  1836  // the value of buf-rpos at the last function call (__shlim or __shgetc),
  1837  // so that between calls the inline shcnt macro can add rpos-buf to get
  1838  // the actual count.
  1839  
  1840  func X__shlim(tls *TLS, f uintptr, lim off_t) { /* shgetc.c:8:6: */
  1841  	(*FILE)(unsafe.Pointer(f)).shlim = lim
  1842  	(*FILE)(unsafe.Pointer(f)).shcnt = (int64((*FILE)(unsafe.Pointer(f)).buf) - int64((*FILE)(unsafe.Pointer(f)).rpos)) / 1
  1843  	// If lim is nonzero, rend must be a valid pointer.
  1844  	if lim != 0 && (int64((*FILE)(unsafe.Pointer(f)).rend)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 > lim {
  1845  		(*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rpos + uintptr(lim)
  1846  	} else {
  1847  		(*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rend
  1848  	}
  1849  }
  1850  
  1851  func X__shgetc(tls *TLS, f uintptr) int32 { /* shgetc.c:19:5: */
  1852  	var c int32
  1853  	var cnt off_t = (*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1
  1854  	if (*FILE)(unsafe.Pointer(f)).shlim != 0 && cnt >= (*FILE)(unsafe.Pointer(f)).shlim || AssignInt32(&c, X__uflow(tls, f)) < 0 {
  1855  		(*FILE)(unsafe.Pointer(f)).shcnt = (int64((*FILE)(unsafe.Pointer(f)).buf)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 + cnt
  1856  		(*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rpos
  1857  		(*FILE)(unsafe.Pointer(f)).shlim = int64(-1)
  1858  		return -1
  1859  	}
  1860  	cnt++
  1861  	if (*FILE)(unsafe.Pointer(f)).shlim != 0 && (int64((*FILE)(unsafe.Pointer(f)).rend)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 > (*FILE)(unsafe.Pointer(f)).shlim-cnt {
  1862  		(*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rpos + uintptr((*FILE)(unsafe.Pointer(f)).shlim-cnt)
  1863  	} else {
  1864  		(*FILE)(unsafe.Pointer(f)).shend = (*FILE)(unsafe.Pointer(f)).rend
  1865  	}
  1866  	(*FILE)(unsafe.Pointer(f)).shcnt = (int64((*FILE)(unsafe.Pointer(f)).buf)-int64((*FILE)(unsafe.Pointer(f)).rpos))/1 + cnt
  1867  	if (*FILE)(unsafe.Pointer(f)).rpos <= (*FILE)(unsafe.Pointer(f)).buf {
  1868  		*(*uint8)(unsafe.Pointer((*FILE)(unsafe.Pointer(f)).rpos + UintptrFromInt32(-1))) = uint8(c)
  1869  	}
  1870  	return c
  1871  }
  1872  
  1873  type lconv = struct {
  1874  	decimal_point      uintptr
  1875  	thousands_sep      uintptr
  1876  	grouping           uintptr
  1877  	int_curr_symbol    uintptr
  1878  	currency_symbol    uintptr
  1879  	mon_decimal_point  uintptr
  1880  	mon_thousands_sep  uintptr
  1881  	mon_grouping       uintptr
  1882  	positive_sign      uintptr
  1883  	negative_sign      uintptr
  1884  	int_frac_digits    int8
  1885  	frac_digits        int8
  1886  	p_cs_precedes      int8
  1887  	p_sep_by_space     int8
  1888  	n_cs_precedes      int8
  1889  	n_sep_by_space     int8
  1890  	p_sign_posn        int8
  1891  	n_sign_posn        int8
  1892  	int_p_cs_precedes  int8
  1893  	int_p_sep_by_space int8
  1894  	int_n_cs_precedes  int8
  1895  	int_n_sep_by_space int8
  1896  	int_p_sign_posn    int8
  1897  	int_n_sign_posn    int8
  1898  	_                  [2]byte
  1899  } /* locale.h:24:1 */
  1900  
  1901  // Support signed or unsigned plain-char
  1902  
  1903  // Implementation choices...
  1904  
  1905  // Arbitrary numbers...
  1906  
  1907  // POSIX/SUS requirements follow. These numbers come directly
  1908  // from SUS and have nothing to do with the host system.
  1909  
  1910  var posix_lconv = lconv{decimal_point: ts + 23, thousands_sep: ts + 13, grouping: ts + 13, int_curr_symbol: ts + 13, currency_symbol: ts + 13, mon_decimal_point: ts + 13, mon_thousands_sep: ts + 13, mon_grouping: ts + 13, positive_sign: ts + 13, negative_sign: ts + 13, int_frac_digits: Int8FromInt32(255), frac_digits: Int8FromInt32(255), p_cs_precedes: Int8FromInt32(255), p_sep_by_space: Int8FromInt32(255), n_cs_precedes: Int8FromInt32(255), n_sep_by_space: Int8FromInt32(255), p_sign_posn: Int8FromInt32(255), n_sign_posn: Int8FromInt32(255), int_p_cs_precedes: Int8FromInt32(255), int_p_sep_by_space: Int8FromInt32(255), int_n_cs_precedes: Int8FromInt32(255), int_n_sep_by_space: Int8FromInt32(255), int_p_sign_posn: Int8FromInt32(255), int_n_sign_posn: Int8FromInt32(255)} /* localeconv.c:4:27 */
  1911  
  1912  func Xlocaleconv(tls *TLS) uintptr { /* localeconv.c:31:14: */
  1913  	return uintptr(unsafe.Pointer(&posix_lconv))
  1914  }
  1915  
  1916  func X__fpclassify(tls *TLS, x float64) int32 { /* __fpclassify.c:4:5: */
  1917  	bp := tls.Alloc(8)
  1918  	defer tls.Free(8)
  1919  
  1920  	*(*struct{ f float64 })(unsafe.Pointer(bp)) = func() (r struct{ f float64 }) {
  1921  		*(*float64)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
  1922  		return r
  1923  	}()
  1924  	var e int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 52 & uint64(0x7ff))
  1925  	if !(e != 0) {
  1926  		if *(*uint64_t)(unsafe.Pointer(bp))<<1 != 0 {
  1927  			return 3
  1928  		}
  1929  		return 2
  1930  	}
  1931  	if e == 0x7ff {
  1932  		if *(*uint64_t)(unsafe.Pointer(bp))<<12 != 0 {
  1933  			return 0
  1934  		}
  1935  		return 1
  1936  	}
  1937  	return 4
  1938  }
  1939  
  1940  func X__fpclassifyf(tls *TLS, x float32) int32 { /* __fpclassifyf.c:4:5: */
  1941  	bp := tls.Alloc(4)
  1942  	defer tls.Free(4)
  1943  
  1944  	*(*struct{ f float32 })(unsafe.Pointer(bp)) = func() (r struct{ f float32 }) {
  1945  		*(*float32)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
  1946  		return r
  1947  	}()
  1948  	var e int32 = int32(*(*uint32_t)(unsafe.Pointer(bp)) >> 23 & uint32_t(0xff))
  1949  	if !(e != 0) {
  1950  		if *(*uint32_t)(unsafe.Pointer(bp))<<1 != 0 {
  1951  			return 3
  1952  		}
  1953  		return 2
  1954  	}
  1955  	if e == 0xff {
  1956  		if *(*uint32_t)(unsafe.Pointer(bp))<<9 != 0 {
  1957  			return 0
  1958  		}
  1959  		return 1
  1960  	}
  1961  	return 4
  1962  }
  1963  
  1964  func X__fpclassifyl(tls *TLS, x float64) int32 { /* __fpclassifyl.c:4:5: */
  1965  	return X__fpclassify(tls, x)
  1966  }
  1967  
  1968  func Xcopysignl(tls *TLS, x float64, y float64) float64 { /* copysignl.c:4:13: */
  1969  	return Xcopysign(tls, x, y)
  1970  }
  1971  
  1972  func Xfabsl(tls *TLS, x float64) float64 { /* fabsl.c:3:13: */
  1973  	return Xfabs(tls, x)
  1974  }
  1975  
  1976  func Xfmodl(tls *TLS, x float64, y float64) float64 { /* fmodl.c:4:13: */
  1977  	return Xfmod(tls, x, y)
  1978  }
  1979  
  1980  func Xnanf(tls *TLS, s uintptr) float32 { /* nanf.c:3:7: */
  1981  	return X__builtin_nanf(tls, ts+13)
  1982  }
  1983  
  1984  var toint double_t = float64(float64(1)) / 2.22044604925031308085e-16 /* rint.c:10:23 */
  1985  
  1986  func Xrint(tls *TLS, x float64) float64 { /* rint.c:12:8: */
  1987  	bp := tls.Alloc(8)
  1988  	defer tls.Free(8)
  1989  
  1990  	*(*struct{ f float64 })(unsafe.Pointer(bp)) = func() (r struct{ f float64 }) {
  1991  		*(*float64)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = x
  1992  		return r
  1993  	}()
  1994  	var e int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 52 & uint64(0x7ff))
  1995  	var s int32 = int32(*(*uint64_t)(unsafe.Pointer(bp)) >> 63)
  1996  	var y double_t
  1997  
  1998  	if e >= 0x3ff+52 {
  1999  		return x
  2000  	}
  2001  	if s != 0 {
  2002  		y = x - toint + toint
  2003  	} else {
  2004  		y = x + toint - toint
  2005  	}
  2006  	if y == float64(0) {
  2007  		if s != 0 {
  2008  			return -Float64FromFloat64(0.0)
  2009  		}
  2010  		return float64(0)
  2011  	}
  2012  	return y
  2013  }
  2014  
  2015  func Xscalbn(tls *TLS, x float64, n int32) float64 { /* scalbn.c:4:8: */
  2016  	bp := tls.Alloc(8)
  2017  	defer tls.Free(8)
  2018  
  2019  	// var u struct {f float64;} at bp, 8
  2020  
  2021  	var y double_t = x
  2022  
  2023  	if n > 1023 {
  2024  		y = y * 0x1p1023
  2025  		n = n - 1023
  2026  		if n > 1023 {
  2027  			y = y * 0x1p1023
  2028  			n = n - 1023
  2029  			if n > 1023 {
  2030  				n = 1023
  2031  			}
  2032  		}
  2033  	} else if n < -1022 {
  2034  		// make sure final n < -53 to avoid double
  2035  		// 		   rounding in the subnormal range
  2036  		y = y * (float64(0x1p-1022) * 0x1p53)
  2037  		n = n + (1022 - 53)
  2038  		if n < -1022 {
  2039  			y = y * (float64(0x1p-1022) * 0x1p53)
  2040  			n = n + (1022 - 53)
  2041  			if n < -1022 {
  2042  				n = -1022
  2043  			}
  2044  		}
  2045  	}
  2046  	*(*uint64_t)(unsafe.Pointer(bp)) = uint64_t(0x3ff+n) << 52
  2047  	x = y * *(*float64)(unsafe.Pointer(bp))
  2048  	return x
  2049  }
  2050  
  2051  func Xscalbnl(tls *TLS, x float64, n int32) float64 { /* scalbnl.c:4:13: */
  2052  	return Xscalbn(tls, x, n)
  2053  }
  2054  
  2055  // Support signed or unsigned plain-char
  2056  
  2057  // Implementation choices...
  2058  
  2059  // Arbitrary numbers...
  2060  
  2061  // POSIX/SUS requirements follow. These numbers come directly
  2062  // from SUS and have nothing to do with the host system.
  2063  
  2064  type __locale_map = struct {
  2065  	__map    uintptr
  2066  	map_size size_t
  2067  	name     [24]int8
  2068  	next     uintptr
  2069  } /* alltypes.h:343:9 */
  2070  
  2071  type tls_module = struct {
  2072  	next   uintptr
  2073  	image  uintptr
  2074  	len    size_t
  2075  	size   size_t
  2076  	align  size_t
  2077  	offset size_t
  2078  } /* libc.h:14:1 */
  2079  
  2080  type __libc = struct {
  2081  	can_do_threads  int8
  2082  	threaded        int8
  2083  	secure          int8
  2084  	need_locks      int8
  2085  	threads_minus_1 int32
  2086  	auxv            uintptr
  2087  	tls_head        uintptr
  2088  	tls_size        size_t
  2089  	tls_align       size_t
  2090  	tls_cnt         size_t
  2091  	page_size       size_t
  2092  	global_locale   struct{ cat [6]uintptr }
  2093  } /* libc.h:20:1 */
  2094  
  2095  type time_t = int64 /* alltypes.h:85:16 */
  2096  
  2097  type clockid_t = int32 /* alltypes.h:214:13 */
  2098  
  2099  type timespec = struct {
  2100  	tv_sec  time_t
  2101  	tv_nsec int64
  2102  } /* alltypes.h:229:1 */
  2103  
  2104  type pthread_t = uintptr /* alltypes.h:273:26 */
  2105  
  2106  type pthread_once_t = int32 /* alltypes.h:279:13 */
  2107  
  2108  type pthread_key_t = uint32 /* alltypes.h:284:18 */
  2109  
  2110  type pthread_spinlock_t = int32 /* alltypes.h:289:13 */
  2111  
  2112  type pthread_mutexattr_t = struct{ __attr uint32 } /* alltypes.h:294:37 */
  2113  
  2114  type pthread_condattr_t = struct{ __attr uint32 } /* alltypes.h:299:37 */
  2115  
  2116  type pthread_barrierattr_t = struct{ __attr uint32 } /* alltypes.h:304:37 */
  2117  
  2118  type pthread_rwlockattr_t = struct{ __attr [2]uint32 } /* alltypes.h:309:40 */
  2119  
  2120  type __sigset_t = struct{ __bits [16]uint64 } /* alltypes.h:349:9 */
  2121  
  2122  type sigset_t = __sigset_t /* alltypes.h:349:71 */
  2123  
  2124  type pthread_attr_t = struct {
  2125  	__u struct {
  2126  		_   [0]uint64
  2127  		__i [14]int32
  2128  	}
  2129  } /* alltypes.h:372:147 */
  2130  
  2131  type pthread_mutex_t = struct {
  2132  	__u struct {
  2133  		_   [0]uint64
  2134  		__i [10]int32
  2135  	}
  2136  } /* alltypes.h:377:157 */
  2137  
  2138  type pthread_cond_t = struct {
  2139  	__u struct {
  2140  		_   [0]uint64
  2141  		__i [12]int32
  2142  	}
  2143  } /* alltypes.h:387:112 */
  2144  
  2145  type pthread_rwlock_t = struct {
  2146  	__u struct {
  2147  		_   [0]uint64
  2148  		__i [14]int32
  2149  	}
  2150  } /* alltypes.h:397:139 */
  2151  
  2152  type pthread_barrier_t = struct {
  2153  	__u struct {
  2154  		_   [0]uint64
  2155  		__i [8]int32
  2156  	}
  2157  } /* alltypes.h:402:137 */
  2158  
  2159  type sched_param = struct {
  2160  	sched_priority int32
  2161  	__reserved1    int32
  2162  	__reserved2    [2]struct {
  2163  		__reserved1 time_t
  2164  		__reserved2 int64
  2165  	}
  2166  	__reserved3 int32
  2167  	_           [4]byte
  2168  } /* sched.h:19:1 */
  2169  
  2170  type timer_t = uintptr /* alltypes.h:209:14 */
  2171  
  2172  type clock_t = int64 /* alltypes.h:219:14 */
  2173  
  2174  type tm = struct {
  2175  	tm_sec    int32
  2176  	tm_min    int32
  2177  	tm_hour   int32
  2178  	tm_mday   int32
  2179  	tm_mon    int32
  2180  	tm_year   int32
  2181  	tm_wday   int32
  2182  	tm_yday   int32
  2183  	tm_isdst  int32
  2184  	_         [4]byte
  2185  	tm_gmtoff int64
  2186  	tm_zone   uintptr
  2187  } /* time.h:38:1 */
  2188  
  2189  type itimerspec = struct {
  2190  	it_interval struct {
  2191  		tv_sec  time_t
  2192  		tv_nsec int64
  2193  	}
  2194  	it_value struct {
  2195  		tv_sec  time_t
  2196  		tv_nsec int64
  2197  	}
  2198  } /* time.h:80:1 */
  2199  
  2200  type sigevent = struct {
  2201  	sigev_value struct {
  2202  		_         [0]uint64
  2203  		sival_int int32
  2204  		_         [4]byte
  2205  	}
  2206  	sigev_signo             int32
  2207  	sigev_notify            int32
  2208  	sigev_notify_function   uintptr
  2209  	sigev_notify_attributes uintptr
  2210  	__pad                   [32]int8
  2211  } /* time.h:107:1 */
  2212  
  2213  type __ptcb = struct {
  2214  	__f    uintptr
  2215  	__x    uintptr
  2216  	__next uintptr
  2217  } /* alltypes.h:273:9 */
  2218  
  2219  type sigaltstack = struct {
  2220  	ss_sp    uintptr
  2221  	ss_flags int32
  2222  	_        [4]byte
  2223  	ss_size  size_t
  2224  } /* signal.h:44:9 */
  2225  
  2226  type stack_t = sigaltstack /* signal.h:44:28 */
  2227  
  2228  type greg_t = int64        /* signal.h:59:19 */
  2229  type gregset_t = [23]int64 /* signal.h:59:27 */
  2230  type _fpstate = struct {
  2231  	cwd       uint16
  2232  	swd       uint16
  2233  	ftw       uint16
  2234  	fop       uint16
  2235  	rip       uint64
  2236  	rdp       uint64
  2237  	mxcsr     uint32
  2238  	mxcr_mask uint32
  2239  	_st       [8]struct {
  2240  		significand [4]uint16
  2241  		exponent    uint16
  2242  		padding     [3]uint16
  2243  	}
  2244  	_xmm    [16]struct{ element [4]uint32 }
  2245  	padding [24]uint32
  2246  } /* signal.h:60:9 */
  2247  
  2248  type fpregset_t = uintptr /* signal.h:71:3 */
  2249  type sigcontext = struct {
  2250  	r8          uint64
  2251  	r9          uint64
  2252  	r10         uint64
  2253  	r11         uint64
  2254  	r12         uint64
  2255  	r13         uint64
  2256  	r14         uint64
  2257  	r15         uint64
  2258  	rdi         uint64
  2259  	rsi         uint64
  2260  	rbp         uint64
  2261  	rbx         uint64
  2262  	rdx         uint64
  2263  	rax         uint64
  2264  	rcx         uint64
  2265  	rsp         uint64
  2266  	rip         uint64
  2267  	eflags      uint64
  2268  	cs          uint16
  2269  	gs          uint16
  2270  	fs          uint16
  2271  	__pad0      uint16
  2272  	err         uint64
  2273  	trapno      uint64
  2274  	oldmask     uint64
  2275  	cr2         uint64
  2276  	fpstate     uintptr
  2277  	__reserved1 [8]uint64
  2278  } /* signal.h:72:1 */
  2279  
  2280  type mcontext_t = struct {
  2281  	gregs       gregset_t
  2282  	fpregs      fpregset_t
  2283  	__reserved1 [8]uint64
  2284  } /* signal.h:84:3 */
  2285  
  2286  type __ucontext = struct {
  2287  	uc_flags     uint64
  2288  	uc_link      uintptr
  2289  	uc_stack     stack_t
  2290  	uc_mcontext  mcontext_t
  2291  	uc_sigmask   sigset_t
  2292  	__fpregs_mem [64]uint64
  2293  } /* signal.h:97:9 */
  2294  
  2295  type ucontext_t = __ucontext /* signal.h:104:3 */
  2296  
  2297  type sigval = struct {
  2298  	_         [0]uint64
  2299  	sival_int int32
  2300  	_         [4]byte
  2301  } /* time.h:107:1 */
  2302  
  2303  type siginfo_t = struct {
  2304  	si_signo    int32
  2305  	si_errno    int32
  2306  	si_code     int32
  2307  	_           [4]byte
  2308  	__si_fields struct {
  2309  		_     [0]uint64
  2310  		__pad [112]int8
  2311  	}
  2312  } /* signal.h:145:3 */
  2313  
  2314  type sigaction = struct {
  2315  	__sa_handler struct{ sa_handler uintptr }
  2316  	sa_mask      sigset_t
  2317  	sa_flags     int32
  2318  	_            [4]byte
  2319  	sa_restorer  uintptr
  2320  } /* signal.h:167:1 */
  2321  
  2322  type sig_t = uintptr /* signal.h:251:14 */
  2323  
  2324  type sig_atomic_t = int32 /* signal.h:269:13 */
  2325  
  2326  func a_cas(tls *TLS, p uintptr, t int32, s int32) int32 { /* atomic_arch.h:2:19: */
  2327  	panic(`arch/x86_64/atomic_arch.h:4:2: assembler statements not supported`)
  2328  	return t
  2329  }
  2330  
  2331  func a_swap(tls *TLS, p uintptr, v int32) int32 { /* atomic_arch.h:20:19: */
  2332  	panic(`arch/x86_64/atomic_arch.h:22:2: assembler statements not supported`)
  2333  	return v
  2334  }
  2335  
  2336  func a_or(tls *TLS, p uintptr, v int32) { /* atomic_arch.h:46:20: */
  2337  	panic(`arch/x86_64/atomic_arch.h:48:2: assembler statements not supported`)
  2338  }
  2339  
  2340  func a_or_64(tls *TLS, p uintptr, v uint64_t) { /* atomic_arch.h:62:20: */
  2341  	panic(`arch/x86_64/atomic_arch.h:64:2: assembler statements not supported`)
  2342  }
  2343  
  2344  func a_ctz_64(tls *TLS, x uint64_t) int32 { /* atomic_arch.h:112:19: */
  2345  	panic(`arch/x86_64/atomic_arch.h:114:2: assembler statements not supported`)
  2346  	return int32(x)
  2347  }
  2348  
  2349  func a_ctz_32(tls *TLS, x uint32_t) int32 { /* atomic.h:256:19: */
  2350  	return int32(_sdebruijn328[x&-x*uint32_t(0x076be629)>>27])
  2351  }
  2352  
  2353  var _sdebruijn328 = [32]int8{
  2354  	int8(0), int8(1), int8(23), int8(2), int8(29), int8(24), int8(19), int8(3), int8(30), int8(27), int8(25), int8(11), int8(20), int8(8), int8(4), int8(13),
  2355  	int8(31), int8(22), int8(28), int8(18), int8(26), int8(10), int8(7), int8(12), int8(21), int8(17), int8(9), int8(6), int8(16), int8(5), int8(15), int8(14),
  2356  } /* atomic.h:261:20 */
  2357  
  2358  type __timer = struct {
  2359  	timerid int32
  2360  	_       [4]byte
  2361  	thread  pthread_t
  2362  } /* pthread_impl.h:64:1 */
  2363  
  2364  func __pthread_self(tls *TLS) uintptr { /* pthread_arch.h:1:30: */
  2365  	var self uintptr
  2366  	panic(`arch/x86_64/pthread_arch.h:4:2: assembler statements not supported`)
  2367  	return self
  2368  }
  2369  
  2370  func __wake(tls *TLS, addr uintptr, cnt int32, priv int32) { /* pthread_impl.h:155:20: */
  2371  	if priv != 0 {
  2372  		priv = 128
  2373  	}
  2374  	if cnt < 0 {
  2375  		cnt = 0x7fffffff
  2376  	}
  2377  	_ = Bool32(X__syscall3(tls, int64(202), int64(addr), int64(1|priv), int64(cnt)) != int64(-38) || X__syscall3(tls, int64(202), int64(addr), int64(1), int64(cnt)) != 0)
  2378  }
  2379  
  2380  func __futexwait(tls *TLS, addr uintptr, val int32, priv int32) { /* pthread_impl.h:162:20: */
  2381  	if priv != 0 {
  2382  		priv = 128
  2383  	}
  2384  	_ = Bool32(X__syscall4(tls, int64(202), int64(addr), int64(0|priv), int64(val), int64(0)) != int64(-38) || X__syscall4(tls, int64(202), int64(addr), int64(0), int64(val), int64(0)) != 0)
  2385  }
  2386  
  2387  var X__fsmu8 = [51]uint32_t{
  2388  	func() uint32 {
  2389  		if 0x2 < 2 {
  2390  			return Uint32FromInt32(-1)
  2391  		}
  2392  		return func() uint32 {
  2393  			if Int32(0x80) == Int32(0x80) {
  2394  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2395  			}
  2396  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2397  		}()<<23 | uint32_t(0x2)
  2398  	}(), func() uint32 {
  2399  		if 0x3 < 2 {
  2400  			return Uint32FromInt32(-1)
  2401  		}
  2402  		return func() uint32 {
  2403  			if Int32(0x80) == Int32(0x80) {
  2404  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2405  			}
  2406  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2407  		}()<<23 | uint32_t(0x3)
  2408  	}(), func() uint32 {
  2409  		if 0x4 < 2 {
  2410  			return Uint32FromInt32(-1)
  2411  		}
  2412  		return func() uint32 {
  2413  			if Int32(0x80) == Int32(0x80) {
  2414  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2415  			}
  2416  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2417  		}()<<23 | uint32_t(0x4)
  2418  	}(), func() uint32 {
  2419  		if 0x5 < 2 {
  2420  			return Uint32FromInt32(-1)
  2421  		}
  2422  		return func() uint32 {
  2423  			if Int32(0x80) == Int32(0x80) {
  2424  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2425  			}
  2426  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2427  		}()<<23 | uint32_t(0x5)
  2428  	}(), func() uint32 {
  2429  		if 0x6 < 2 {
  2430  			return Uint32FromInt32(-1)
  2431  		}
  2432  		return func() uint32 {
  2433  			if Int32(0x80) == Int32(0x80) {
  2434  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2435  			}
  2436  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2437  		}()<<23 | uint32_t(0x6)
  2438  	}(), func() uint32 {
  2439  		if 0x7 < 2 {
  2440  			return Uint32FromInt32(-1)
  2441  		}
  2442  		return func() uint32 {
  2443  			if Int32(0x80) == Int32(0x80) {
  2444  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2445  			}
  2446  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2447  		}()<<23 | uint32_t(0x7)
  2448  	}(),
  2449  	func() uint32 {
  2450  		if 0x8 < 2 {
  2451  			return Uint32FromInt32(-1)
  2452  		}
  2453  		return func() uint32 {
  2454  			if Int32(0x80) == Int32(0x80) {
  2455  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2456  			}
  2457  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2458  		}()<<23 | uint32_t(0x8)
  2459  	}(), func() uint32 {
  2460  		if 0x9 < 2 {
  2461  			return Uint32FromInt32(-1)
  2462  		}
  2463  		return func() uint32 {
  2464  			if Int32(0x80) == Int32(0x80) {
  2465  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2466  			}
  2467  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2468  		}()<<23 | uint32_t(0x9)
  2469  	}(), func() uint32 {
  2470  		if 0xa < 2 {
  2471  			return Uint32FromInt32(-1)
  2472  		}
  2473  		return func() uint32 {
  2474  			if Int32(0x80) == Int32(0x80) {
  2475  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2476  			}
  2477  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2478  		}()<<23 | uint32_t(0xa)
  2479  	}(), func() uint32 {
  2480  		if 0xb < 2 {
  2481  			return Uint32FromInt32(-1)
  2482  		}
  2483  		return func() uint32 {
  2484  			if Int32(0x80) == Int32(0x80) {
  2485  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2486  			}
  2487  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2488  		}()<<23 | uint32_t(0xb)
  2489  	}(), func() uint32 {
  2490  		if 0xc < 2 {
  2491  			return Uint32FromInt32(-1)
  2492  		}
  2493  		return func() uint32 {
  2494  			if Int32(0x80) == Int32(0x80) {
  2495  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2496  			}
  2497  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2498  		}()<<23 | uint32_t(0xc)
  2499  	}(), func() uint32 {
  2500  		if 0xd < 2 {
  2501  			return Uint32FromInt32(-1)
  2502  		}
  2503  		return func() uint32 {
  2504  			if Int32(0x80) == Int32(0x80) {
  2505  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2506  			}
  2507  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2508  		}()<<23 | uint32_t(0xd)
  2509  	}(), func() uint32 {
  2510  		if 0xe < 2 {
  2511  			return Uint32FromInt32(-1)
  2512  		}
  2513  		return func() uint32 {
  2514  			if Int32(0x80) == Int32(0x80) {
  2515  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2516  			}
  2517  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2518  		}()<<23 | uint32_t(0xe)
  2519  	}(), func() uint32 {
  2520  		if 0xf < 2 {
  2521  			return Uint32FromInt32(-1)
  2522  		}
  2523  		return func() uint32 {
  2524  			if Int32(0x80) == Int32(0x80) {
  2525  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2526  			}
  2527  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2528  		}()<<23 | uint32_t(0xf)
  2529  	}(),
  2530  	func() uint32 {
  2531  		if 0x0+16 < 2 {
  2532  			return Uint32FromInt32(-1)
  2533  		}
  2534  		return func() uint32 {
  2535  			if Int32(0x80) == Int32(0x80) {
  2536  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2537  			}
  2538  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2539  		}()<<23 | uint32_t(0x0+16)
  2540  	}(), func() uint32 {
  2541  		if 0x1+16 < 2 {
  2542  			return Uint32FromInt32(-1)
  2543  		}
  2544  		return func() uint32 {
  2545  			if Int32(0x80) == Int32(0x80) {
  2546  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2547  			}
  2548  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2549  		}()<<23 | uint32_t(0x1+16)
  2550  	}(), func() uint32 {
  2551  		if 0x2+16 < 2 {
  2552  			return Uint32FromInt32(-1)
  2553  		}
  2554  		return func() uint32 {
  2555  			if Int32(0x80) == Int32(0x80) {
  2556  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2557  			}
  2558  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2559  		}()<<23 | uint32_t(0x2+16)
  2560  	}(), func() uint32 {
  2561  		if 0x3+16 < 2 {
  2562  			return Uint32FromInt32(-1)
  2563  		}
  2564  		return func() uint32 {
  2565  			if Int32(0x80) == Int32(0x80) {
  2566  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2567  			}
  2568  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2569  		}()<<23 | uint32_t(0x3+16)
  2570  	}(), func() uint32 {
  2571  		if 0x4+16 < 2 {
  2572  			return Uint32FromInt32(-1)
  2573  		}
  2574  		return func() uint32 {
  2575  			if Int32(0x80) == Int32(0x80) {
  2576  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2577  			}
  2578  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2579  		}()<<23 | uint32_t(0x4+16)
  2580  	}(), func() uint32 {
  2581  		if 0x5+16 < 2 {
  2582  			return Uint32FromInt32(-1)
  2583  		}
  2584  		return func() uint32 {
  2585  			if Int32(0x80) == Int32(0x80) {
  2586  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2587  			}
  2588  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2589  		}()<<23 | uint32_t(0x5+16)
  2590  	}(), func() uint32 {
  2591  		if 0x6+16 < 2 {
  2592  			return Uint32FromInt32(-1)
  2593  		}
  2594  		return func() uint32 {
  2595  			if Int32(0x80) == Int32(0x80) {
  2596  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2597  			}
  2598  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2599  		}()<<23 | uint32_t(0x6+16)
  2600  	}(), func() uint32 {
  2601  		if 0x7+16 < 2 {
  2602  			return Uint32FromInt32(-1)
  2603  		}
  2604  		return func() uint32 {
  2605  			if Int32(0x80) == Int32(0x80) {
  2606  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2607  			}
  2608  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2609  		}()<<23 | uint32_t(0x7+16)
  2610  	}(),
  2611  	func() uint32 {
  2612  		if 0x8+16 < 2 {
  2613  			return Uint32FromInt32(-1)
  2614  		}
  2615  		return func() uint32 {
  2616  			if Int32(0x80) == Int32(0x80) {
  2617  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2618  			}
  2619  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2620  		}()<<23 | uint32_t(0x8+16)
  2621  	}(), func() uint32 {
  2622  		if 0x9+16 < 2 {
  2623  			return Uint32FromInt32(-1)
  2624  		}
  2625  		return func() uint32 {
  2626  			if Int32(0x80) == Int32(0x80) {
  2627  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2628  			}
  2629  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2630  		}()<<23 | uint32_t(0x9+16)
  2631  	}(), func() uint32 {
  2632  		if 0xa+16 < 2 {
  2633  			return Uint32FromInt32(-1)
  2634  		}
  2635  		return func() uint32 {
  2636  			if Int32(0x80) == Int32(0x80) {
  2637  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2638  			}
  2639  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2640  		}()<<23 | uint32_t(0xa+16)
  2641  	}(), func() uint32 {
  2642  		if 0xb+16 < 2 {
  2643  			return Uint32FromInt32(-1)
  2644  		}
  2645  		return func() uint32 {
  2646  			if Int32(0x80) == Int32(0x80) {
  2647  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2648  			}
  2649  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2650  		}()<<23 | uint32_t(0xb+16)
  2651  	}(), func() uint32 {
  2652  		if 0xc+16 < 2 {
  2653  			return Uint32FromInt32(-1)
  2654  		}
  2655  		return func() uint32 {
  2656  			if Int32(0x80) == Int32(0x80) {
  2657  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2658  			}
  2659  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2660  		}()<<23 | uint32_t(0xc+16)
  2661  	}(), func() uint32 {
  2662  		if 0xd+16 < 2 {
  2663  			return Uint32FromInt32(-1)
  2664  		}
  2665  		return func() uint32 {
  2666  			if Int32(0x80) == Int32(0x80) {
  2667  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2668  			}
  2669  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2670  		}()<<23 | uint32_t(0xd+16)
  2671  	}(), func() uint32 {
  2672  		if 0xe+16 < 2 {
  2673  			return Uint32FromInt32(-1)
  2674  		}
  2675  		return func() uint32 {
  2676  			if Int32(0x80) == Int32(0x80) {
  2677  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2678  			}
  2679  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2680  		}()<<23 | uint32_t(0xe+16)
  2681  	}(), func() uint32 {
  2682  		if 0xf+16 < 2 {
  2683  			return Uint32FromInt32(-1)
  2684  		}
  2685  		return func() uint32 {
  2686  			if Int32(0x80) == Int32(0x80) {
  2687  				return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2688  			}
  2689  			return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2690  		}()<<23 | uint32_t(0xf+16)
  2691  	}(),
  2692  	func() uint32 {
  2693  		if 0x0 == 0 {
  2694  			return func() uint32 {
  2695  				if Int32(0xa0) == Int32(0x80) {
  2696  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2697  				}
  2698  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2699  			}() << 23
  2700  		}
  2701  		return func() uint32 {
  2702  			if 0x0 == 0xd {
  2703  				return func() uint32 {
  2704  					if Int32(0x80) == Int32(0x80) {
  2705  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2706  					}
  2707  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2708  				}() << 23
  2709  			}
  2710  			return func() uint32 {
  2711  				if Int32(0x80) == Int32(0x80) {
  2712  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2713  				}
  2714  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2715  			}() << 23
  2716  		}()
  2717  	}() | uint32_t(func() uint32 {
  2718  		if Int32(0x80) == Int32(0x80) {
  2719  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2720  		}
  2721  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2722  	}()<<23)>>6 | uint32_t(0x0), func() uint32 {
  2723  		if 0x1 == 0 {
  2724  			return func() uint32 {
  2725  				if Int32(0xa0) == Int32(0x80) {
  2726  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2727  				}
  2728  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2729  			}() << 23
  2730  		}
  2731  		return func() uint32 {
  2732  			if 0x1 == 0xd {
  2733  				return func() uint32 {
  2734  					if Int32(0x80) == Int32(0x80) {
  2735  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2736  					}
  2737  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2738  				}() << 23
  2739  			}
  2740  			return func() uint32 {
  2741  				if Int32(0x80) == Int32(0x80) {
  2742  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2743  				}
  2744  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2745  			}() << 23
  2746  		}()
  2747  	}() | uint32_t(func() uint32 {
  2748  		if Int32(0x80) == Int32(0x80) {
  2749  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2750  		}
  2751  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2752  	}()<<23)>>6 | uint32_t(0x1), func() uint32 {
  2753  		if 0x2 == 0 {
  2754  			return func() uint32 {
  2755  				if Int32(0xa0) == Int32(0x80) {
  2756  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2757  				}
  2758  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2759  			}() << 23
  2760  		}
  2761  		return func() uint32 {
  2762  			if 0x2 == 0xd {
  2763  				return func() uint32 {
  2764  					if Int32(0x80) == Int32(0x80) {
  2765  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2766  					}
  2767  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2768  				}() << 23
  2769  			}
  2770  			return func() uint32 {
  2771  				if Int32(0x80) == Int32(0x80) {
  2772  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2773  				}
  2774  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2775  			}() << 23
  2776  		}()
  2777  	}() | uint32_t(func() uint32 {
  2778  		if Int32(0x80) == Int32(0x80) {
  2779  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2780  		}
  2781  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2782  	}()<<23)>>6 | uint32_t(0x2), func() uint32 {
  2783  		if 0x3 == 0 {
  2784  			return func() uint32 {
  2785  				if Int32(0xa0) == Int32(0x80) {
  2786  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2787  				}
  2788  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2789  			}() << 23
  2790  		}
  2791  		return func() uint32 {
  2792  			if 0x3 == 0xd {
  2793  				return func() uint32 {
  2794  					if Int32(0x80) == Int32(0x80) {
  2795  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2796  					}
  2797  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2798  				}() << 23
  2799  			}
  2800  			return func() uint32 {
  2801  				if Int32(0x80) == Int32(0x80) {
  2802  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2803  				}
  2804  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2805  			}() << 23
  2806  		}()
  2807  	}() | uint32_t(func() uint32 {
  2808  		if Int32(0x80) == Int32(0x80) {
  2809  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2810  		}
  2811  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2812  	}()<<23)>>6 | uint32_t(0x3), func() uint32 {
  2813  		if 0x4 == 0 {
  2814  			return func() uint32 {
  2815  				if Int32(0xa0) == Int32(0x80) {
  2816  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2817  				}
  2818  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2819  			}() << 23
  2820  		}
  2821  		return func() uint32 {
  2822  			if 0x4 == 0xd {
  2823  				return func() uint32 {
  2824  					if Int32(0x80) == Int32(0x80) {
  2825  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2826  					}
  2827  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2828  				}() << 23
  2829  			}
  2830  			return func() uint32 {
  2831  				if Int32(0x80) == Int32(0x80) {
  2832  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2833  				}
  2834  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2835  			}() << 23
  2836  		}()
  2837  	}() | uint32_t(func() uint32 {
  2838  		if Int32(0x80) == Int32(0x80) {
  2839  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2840  		}
  2841  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2842  	}()<<23)>>6 | uint32_t(0x4), func() uint32 {
  2843  		if 0x5 == 0 {
  2844  			return func() uint32 {
  2845  				if Int32(0xa0) == Int32(0x80) {
  2846  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2847  				}
  2848  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2849  			}() << 23
  2850  		}
  2851  		return func() uint32 {
  2852  			if 0x5 == 0xd {
  2853  				return func() uint32 {
  2854  					if Int32(0x80) == Int32(0x80) {
  2855  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2856  					}
  2857  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2858  				}() << 23
  2859  			}
  2860  			return func() uint32 {
  2861  				if Int32(0x80) == Int32(0x80) {
  2862  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2863  				}
  2864  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2865  			}() << 23
  2866  		}()
  2867  	}() | uint32_t(func() uint32 {
  2868  		if Int32(0x80) == Int32(0x80) {
  2869  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2870  		}
  2871  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2872  	}()<<23)>>6 | uint32_t(0x5), func() uint32 {
  2873  		if 0x6 == 0 {
  2874  			return func() uint32 {
  2875  				if Int32(0xa0) == Int32(0x80) {
  2876  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2877  				}
  2878  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2879  			}() << 23
  2880  		}
  2881  		return func() uint32 {
  2882  			if 0x6 == 0xd {
  2883  				return func() uint32 {
  2884  					if Int32(0x80) == Int32(0x80) {
  2885  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2886  					}
  2887  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2888  				}() << 23
  2889  			}
  2890  			return func() uint32 {
  2891  				if Int32(0x80) == Int32(0x80) {
  2892  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2893  				}
  2894  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2895  			}() << 23
  2896  		}()
  2897  	}() | uint32_t(func() uint32 {
  2898  		if Int32(0x80) == Int32(0x80) {
  2899  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2900  		}
  2901  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2902  	}()<<23)>>6 | uint32_t(0x6), func() uint32 {
  2903  		if 0x7 == 0 {
  2904  			return func() uint32 {
  2905  				if Int32(0xa0) == Int32(0x80) {
  2906  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2907  				}
  2908  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2909  			}() << 23
  2910  		}
  2911  		return func() uint32 {
  2912  			if 0x7 == 0xd {
  2913  				return func() uint32 {
  2914  					if Int32(0x80) == Int32(0x80) {
  2915  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2916  					}
  2917  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2918  				}() << 23
  2919  			}
  2920  			return func() uint32 {
  2921  				if Int32(0x80) == Int32(0x80) {
  2922  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2923  				}
  2924  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2925  			}() << 23
  2926  		}()
  2927  	}() | uint32_t(func() uint32 {
  2928  		if Int32(0x80) == Int32(0x80) {
  2929  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2930  		}
  2931  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2932  	}()<<23)>>6 | uint32_t(0x7),
  2933  	func() uint32 {
  2934  		if 0x8 == 0 {
  2935  			return func() uint32 {
  2936  				if Int32(0xa0) == Int32(0x80) {
  2937  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2938  				}
  2939  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2940  			}() << 23
  2941  		}
  2942  		return func() uint32 {
  2943  			if 0x8 == 0xd {
  2944  				return func() uint32 {
  2945  					if Int32(0x80) == Int32(0x80) {
  2946  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2947  					}
  2948  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2949  				}() << 23
  2950  			}
  2951  			return func() uint32 {
  2952  				if Int32(0x80) == Int32(0x80) {
  2953  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2954  				}
  2955  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2956  			}() << 23
  2957  		}()
  2958  	}() | uint32_t(func() uint32 {
  2959  		if Int32(0x80) == Int32(0x80) {
  2960  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2961  		}
  2962  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2963  	}()<<23)>>6 | uint32_t(0x8), func() uint32 {
  2964  		if 0x9 == 0 {
  2965  			return func() uint32 {
  2966  				if Int32(0xa0) == Int32(0x80) {
  2967  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2968  				}
  2969  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  2970  			}() << 23
  2971  		}
  2972  		return func() uint32 {
  2973  			if 0x9 == 0xd {
  2974  				return func() uint32 {
  2975  					if Int32(0x80) == Int32(0x80) {
  2976  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  2977  					}
  2978  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2979  				}() << 23
  2980  			}
  2981  			return func() uint32 {
  2982  				if Int32(0x80) == Int32(0x80) {
  2983  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2984  				}
  2985  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2986  			}() << 23
  2987  		}()
  2988  	}() | uint32_t(func() uint32 {
  2989  		if Int32(0x80) == Int32(0x80) {
  2990  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2991  		}
  2992  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  2993  	}()<<23)>>6 | uint32_t(0x9), func() uint32 {
  2994  		if 0xa == 0 {
  2995  			return func() uint32 {
  2996  				if Int32(0xa0) == Int32(0x80) {
  2997  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  2998  				}
  2999  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  3000  			}() << 23
  3001  		}
  3002  		return func() uint32 {
  3003  			if 0xa == 0xd {
  3004  				return func() uint32 {
  3005  					if Int32(0x80) == Int32(0x80) {
  3006  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  3007  					}
  3008  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3009  				}() << 23
  3010  			}
  3011  			return func() uint32 {
  3012  				if Int32(0x80) == Int32(0x80) {
  3013  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3014  				}
  3015  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3016  			}() << 23
  3017  		}()
  3018  	}() | uint32_t(func() uint32 {
  3019  		if Int32(0x80) == Int32(0x80) {
  3020  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3021  		}
  3022  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3023  	}()<<23)>>6 | uint32_t(0xa), func() uint32 {
  3024  		if 0xb == 0 {
  3025  			return func() uint32 {
  3026  				if Int32(0xa0) == Int32(0x80) {
  3027  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3028  				}
  3029  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  3030  			}() << 23
  3031  		}
  3032  		return func() uint32 {
  3033  			if 0xb == 0xd {
  3034  				return func() uint32 {
  3035  					if Int32(0x80) == Int32(0x80) {
  3036  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  3037  					}
  3038  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3039  				}() << 23
  3040  			}
  3041  			return func() uint32 {
  3042  				if Int32(0x80) == Int32(0x80) {
  3043  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3044  				}
  3045  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3046  			}() << 23
  3047  		}()
  3048  	}() | uint32_t(func() uint32 {
  3049  		if Int32(0x80) == Int32(0x80) {
  3050  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3051  		}
  3052  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3053  	}()<<23)>>6 | uint32_t(0xb), func() uint32 {
  3054  		if 0xc == 0 {
  3055  			return func() uint32 {
  3056  				if Int32(0xa0) == Int32(0x80) {
  3057  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3058  				}
  3059  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  3060  			}() << 23
  3061  		}
  3062  		return func() uint32 {
  3063  			if 0xc == 0xd {
  3064  				return func() uint32 {
  3065  					if Int32(0x80) == Int32(0x80) {
  3066  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  3067  					}
  3068  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3069  				}() << 23
  3070  			}
  3071  			return func() uint32 {
  3072  				if Int32(0x80) == Int32(0x80) {
  3073  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3074  				}
  3075  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3076  			}() << 23
  3077  		}()
  3078  	}() | uint32_t(func() uint32 {
  3079  		if Int32(0x80) == Int32(0x80) {
  3080  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3081  		}
  3082  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3083  	}()<<23)>>6 | uint32_t(0xc), func() uint32 {
  3084  		if 0xd == 0 {
  3085  			return func() uint32 {
  3086  				if Int32(0xa0) == Int32(0x80) {
  3087  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3088  				}
  3089  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  3090  			}() << 23
  3091  		}
  3092  		return func() uint32 {
  3093  			if 0xd == 0xd {
  3094  				return func() uint32 {
  3095  					if Int32(0x80) == Int32(0x80) {
  3096  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  3097  					}
  3098  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3099  				}() << 23
  3100  			}
  3101  			return func() uint32 {
  3102  				if Int32(0x80) == Int32(0x80) {
  3103  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3104  				}
  3105  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3106  			}() << 23
  3107  		}()
  3108  	}() | uint32_t(func() uint32 {
  3109  		if Int32(0x80) == Int32(0x80) {
  3110  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3111  		}
  3112  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3113  	}()<<23)>>6 | uint32_t(0xd), func() uint32 {
  3114  		if 0xe == 0 {
  3115  			return func() uint32 {
  3116  				if Int32(0xa0) == Int32(0x80) {
  3117  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3118  				}
  3119  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  3120  			}() << 23
  3121  		}
  3122  		return func() uint32 {
  3123  			if 0xe == 0xd {
  3124  				return func() uint32 {
  3125  					if Int32(0x80) == Int32(0x80) {
  3126  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  3127  					}
  3128  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3129  				}() << 23
  3130  			}
  3131  			return func() uint32 {
  3132  				if Int32(0x80) == Int32(0x80) {
  3133  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3134  				}
  3135  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3136  			}() << 23
  3137  		}()
  3138  	}() | uint32_t(func() uint32 {
  3139  		if Int32(0x80) == Int32(0x80) {
  3140  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3141  		}
  3142  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3143  	}()<<23)>>6 | uint32_t(0xe), func() uint32 {
  3144  		if 0xf == 0 {
  3145  			return func() uint32 {
  3146  				if Int32(0xa0) == Int32(0x80) {
  3147  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3148  				}
  3149  				return Uint32(Uint32(0) - Uint32FromInt32(0xa0))
  3150  			}() << 23
  3151  		}
  3152  		return func() uint32 {
  3153  			if 0xf == 0xd {
  3154  				return func() uint32 {
  3155  					if Int32(0x80) == Int32(0x80) {
  3156  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xa0))
  3157  					}
  3158  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3159  				}() << 23
  3160  			}
  3161  			return func() uint32 {
  3162  				if Int32(0x80) == Int32(0x80) {
  3163  					return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3164  				}
  3165  				return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3166  			}() << 23
  3167  		}()
  3168  	}() | uint32_t(func() uint32 {
  3169  		if Int32(0x80) == Int32(0x80) {
  3170  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3171  		}
  3172  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3173  	}()<<23)>>6 | uint32_t(0xf),
  3174  	func() uint32 {
  3175  		if 0x0 >= 5 {
  3176  			return uint32(0)
  3177  		}
  3178  		return func() uint32 {
  3179  			if 0x0 == 0 {
  3180  				return func() uint32 {
  3181  					if Int32(0x90) == Int32(0x80) {
  3182  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3183  					}
  3184  					return Uint32(Uint32(0) - Uint32FromInt32(0x90))
  3185  				}() << 23
  3186  			}
  3187  			return func() uint32 {
  3188  				if 0x0 == 4 {
  3189  					return func() uint32 {
  3190  						if Int32(0x80) == Int32(0x80) {
  3191  							return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
  3192  						}
  3193  						return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3194  					}() << 23
  3195  				}
  3196  				return func() uint32 {
  3197  					if Int32(0x80) == Int32(0x80) {
  3198  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3199  					}
  3200  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3201  				}() << 23
  3202  			}()
  3203  		}()
  3204  	}() | uint32_t(func() uint32 {
  3205  		if Int32(0x80) == Int32(0x80) {
  3206  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3207  		}
  3208  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3209  	}()<<23)>>6 | uint32_t(func() uint32 {
  3210  		if Int32(0x80) == Int32(0x80) {
  3211  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3212  		}
  3213  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3214  	}()<<23)>>12 | uint32_t(0x0), func() uint32 {
  3215  		if 0x1 >= 5 {
  3216  			return uint32(0)
  3217  		}
  3218  		return func() uint32 {
  3219  			if 0x1 == 0 {
  3220  				return func() uint32 {
  3221  					if Int32(0x90) == Int32(0x80) {
  3222  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3223  					}
  3224  					return Uint32(Uint32(0) - Uint32FromInt32(0x90))
  3225  				}() << 23
  3226  			}
  3227  			return func() uint32 {
  3228  				if 0x1 == 4 {
  3229  					return func() uint32 {
  3230  						if Int32(0x80) == Int32(0x80) {
  3231  							return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
  3232  						}
  3233  						return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3234  					}() << 23
  3235  				}
  3236  				return func() uint32 {
  3237  					if Int32(0x80) == Int32(0x80) {
  3238  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3239  					}
  3240  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3241  				}() << 23
  3242  			}()
  3243  		}()
  3244  	}() | uint32_t(func() uint32 {
  3245  		if Int32(0x80) == Int32(0x80) {
  3246  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3247  		}
  3248  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3249  	}()<<23)>>6 | uint32_t(func() uint32 {
  3250  		if Int32(0x80) == Int32(0x80) {
  3251  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3252  		}
  3253  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3254  	}()<<23)>>12 | uint32_t(0x1), func() uint32 {
  3255  		if 0x2 >= 5 {
  3256  			return uint32(0)
  3257  		}
  3258  		return func() uint32 {
  3259  			if 0x2 == 0 {
  3260  				return func() uint32 {
  3261  					if Int32(0x90) == Int32(0x80) {
  3262  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3263  					}
  3264  					return Uint32(Uint32(0) - Uint32FromInt32(0x90))
  3265  				}() << 23
  3266  			}
  3267  			return func() uint32 {
  3268  				if 0x2 == 4 {
  3269  					return func() uint32 {
  3270  						if Int32(0x80) == Int32(0x80) {
  3271  							return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
  3272  						}
  3273  						return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3274  					}() << 23
  3275  				}
  3276  				return func() uint32 {
  3277  					if Int32(0x80) == Int32(0x80) {
  3278  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3279  					}
  3280  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3281  				}() << 23
  3282  			}()
  3283  		}()
  3284  	}() | uint32_t(func() uint32 {
  3285  		if Int32(0x80) == Int32(0x80) {
  3286  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3287  		}
  3288  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3289  	}()<<23)>>6 | uint32_t(func() uint32 {
  3290  		if Int32(0x80) == Int32(0x80) {
  3291  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3292  		}
  3293  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3294  	}()<<23)>>12 | uint32_t(0x2), func() uint32 {
  3295  		if 0x3 >= 5 {
  3296  			return uint32(0)
  3297  		}
  3298  		return func() uint32 {
  3299  			if 0x3 == 0 {
  3300  				return func() uint32 {
  3301  					if Int32(0x90) == Int32(0x80) {
  3302  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3303  					}
  3304  					return Uint32(Uint32(0) - Uint32FromInt32(0x90))
  3305  				}() << 23
  3306  			}
  3307  			return func() uint32 {
  3308  				if 0x3 == 4 {
  3309  					return func() uint32 {
  3310  						if Int32(0x80) == Int32(0x80) {
  3311  							return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
  3312  						}
  3313  						return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3314  					}() << 23
  3315  				}
  3316  				return func() uint32 {
  3317  					if Int32(0x80) == Int32(0x80) {
  3318  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3319  					}
  3320  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3321  				}() << 23
  3322  			}()
  3323  		}()
  3324  	}() | uint32_t(func() uint32 {
  3325  		if Int32(0x80) == Int32(0x80) {
  3326  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3327  		}
  3328  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3329  	}()<<23)>>6 | uint32_t(func() uint32 {
  3330  		if Int32(0x80) == Int32(0x80) {
  3331  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3332  		}
  3333  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3334  	}()<<23)>>12 | uint32_t(0x3), func() uint32 {
  3335  		if 0x4 >= 5 {
  3336  			return uint32(0)
  3337  		}
  3338  		return func() uint32 {
  3339  			if 0x4 == 0 {
  3340  				return func() uint32 {
  3341  					if Int32(0x90) == Int32(0x80) {
  3342  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3343  					}
  3344  					return Uint32(Uint32(0) - Uint32FromInt32(0x90))
  3345  				}() << 23
  3346  			}
  3347  			return func() uint32 {
  3348  				if 0x4 == 4 {
  3349  					return func() uint32 {
  3350  						if Int32(0x80) == Int32(0x80) {
  3351  							return Uint32(Uint32(0x40) - Uint32FromInt32(0x90))
  3352  						}
  3353  						return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3354  					}() << 23
  3355  				}
  3356  				return func() uint32 {
  3357  					if Int32(0x80) == Int32(0x80) {
  3358  						return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3359  					}
  3360  					return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3361  				}() << 23
  3362  			}()
  3363  		}()
  3364  	}() | uint32_t(func() uint32 {
  3365  		if Int32(0x80) == Int32(0x80) {
  3366  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3367  		}
  3368  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3369  	}()<<23)>>6 | uint32_t(func() uint32 {
  3370  		if Int32(0x80) == Int32(0x80) {
  3371  			return Uint32(Uint32(0x40) - Uint32FromInt32(0xc0))
  3372  		}
  3373  		return Uint32(Uint32(0) - Uint32FromInt32(0x80))
  3374  	}()<<23)>>12 | uint32_t(0x4),
  3375  } /* internal.c:18:16 */
  3376  
  3377  type wint_t = uint32 /* alltypes.h:198:18 */
  3378  
  3379  type wctype_t = uint64 /* alltypes.h:203:23 */
  3380  
  3381  type __mbstate_t = struct {
  3382  	__opaque1 uint32
  3383  	__opaque2 uint32
  3384  } /* alltypes.h:337:9 */
  3385  
  3386  type mbstate_t = __mbstate_t /* alltypes.h:337:63 */
  3387  
  3388  func Xmbrtowc(tls *TLS, wc uintptr, src uintptr, n size_t, st uintptr) size_t { /* mbrtowc.c:6:8: */
  3389  	bp := tls.Alloc(4)
  3390  	defer tls.Free(4)
  3391  
  3392  	var c uint32
  3393  	var s uintptr
  3394  	var N uint32
  3395  	// var dummy wchar_t at bp, 4
  3396  	s = src
  3397  	N = uint32(n)
  3398  
  3399  	if !!(st != 0) {
  3400  		goto __1
  3401  	}
  3402  	st = uintptr(unsafe.Pointer(&_sinternal_state))
  3403  __1:
  3404  	;
  3405  	c = *(*uint32)(unsafe.Pointer(st))
  3406  
  3407  	if !!(s != 0) {
  3408  		goto __2
  3409  	}
  3410  	if !(c != 0) {
  3411  		goto __4
  3412  	}
  3413  	goto ilseq
  3414  __4:
  3415  	;
  3416  	return uint64(0)
  3417  	goto __3
  3418  __2:
  3419  	if !!(wc != 0) {
  3420  		goto __5
  3421  	}
  3422  	wc = bp /* &dummy */
  3423  __5:
  3424  	;
  3425  __3:
  3426  	;
  3427  
  3428  	if !!(n != 0) {
  3429  		goto __6
  3430  	}
  3431  	return Uint64FromInt32(-2)
  3432  __6:
  3433  	;
  3434  	if !!(c != 0) {
  3435  		goto __7
  3436  	}
  3437  	if !(int32(*(*uint8)(unsafe.Pointer(s))) < 0x80) {
  3438  		goto __8
  3439  	}
  3440  	return BoolUint64(!!(AssignPtrInt32(wc, wchar_t(*(*uint8)(unsafe.Pointer(s)))) != 0))
  3441  __8:
  3442  	;
  3443  	if !(func() int32 {
  3444  		if !!(int32(*(*uintptr)(unsafe.Pointer((*__pthread)(unsafe.Pointer(__pthread_self(tls))).locale))) != 0) {
  3445  			return 4
  3446  		}
  3447  		return 1
  3448  	}() == 1) {
  3449  		goto __9
  3450  	}
  3451  	*(*wchar_t)(unsafe.Pointer(wc)) = 0xdfff & int32(int8(*(*uint8)(unsafe.Pointer(s))))
  3452  	return 1
  3453  __9:
  3454  	;
  3455  	if !(uint32(*(*uint8)(unsafe.Pointer(s)))-0xc2 > 0xf4-0xc2) {
  3456  		goto __10
  3457  	}
  3458  	goto ilseq
  3459  __10:
  3460  	;
  3461  	c = X__fsmu8[uint32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))))-0xc2]
  3462  	n--
  3463  __7:
  3464  	;
  3465  
  3466  	if !(n != 0) {
  3467  		goto __11
  3468  	}
  3469  	if !((int32(*(*uint8)(unsafe.Pointer(s)))>>3-0x10|(int32(*(*uint8)(unsafe.Pointer(s)))>>3+int32_t(c)>>26))&CplInt32(7) != 0) {
  3470  		goto __12
  3471  	}
  3472  	goto ilseq
  3473  __12:
  3474  	;
  3475  loop:
  3476  	c = c<<6 | uint32(int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&s, 1))))-0x80)
  3477  	n--
  3478  	if !!(c&(uint32(1)<<31) != 0) {
  3479  		goto __13
  3480  	}
  3481  	*(*uint32)(unsafe.Pointer(st)) = uint32(0)
  3482  	*(*wchar_t)(unsafe.Pointer(wc)) = wchar_t(c)
  3483  	return size_t(N) - n
  3484  __13:
  3485  	;
  3486  	if !(n != 0) {
  3487  		goto __14
  3488  	}
  3489  	if !(uint32(*(*uint8)(unsafe.Pointer(s)))-0x80 >= uint32(0x40)) {
  3490  		goto __15
  3491  	}
  3492  	goto ilseq
  3493  __15:
  3494  	;
  3495  	goto loop
  3496  __14:
  3497  	;
  3498  __11:
  3499  	;
  3500  
  3501  	*(*uint32)(unsafe.Pointer(st)) = c
  3502  	return Uint64FromInt32(-2)
  3503  ilseq:
  3504  	*(*uint32)(unsafe.Pointer(st)) = uint32(0)
  3505  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 84
  3506  	return Uint64FromInt32(-1)
  3507  }
  3508  
  3509  var _sinternal_state uint32 /* mbrtowc.c:8:18: */
  3510  
  3511  func Xmbsinit(tls *TLS, st uintptr) int32 { /* mbsinit.c:3:5: */
  3512  	return Bool32(!(st != 0) || !(int32(*(*uint32)(unsafe.Pointer(st))) != 0))
  3513  }
  3514  
  3515  type imaxdiv_t = struct {
  3516  	quot intmax_t
  3517  	rem  intmax_t
  3518  } /* inttypes.h:14:40 */
  3519  
  3520  type socklen_t = uint32 /* alltypes.h:361:18 */
  3521  
  3522  type sa_family_t = uint16 /* alltypes.h:366:24 */
  3523  
  3524  type msghdr = struct {
  3525  	msg_name       uintptr
  3526  	msg_namelen    socklen_t
  3527  	_              [4]byte
  3528  	msg_iov        uintptr
  3529  	msg_iovlen     int32
  3530  	__pad1         int32
  3531  	msg_control    uintptr
  3532  	msg_controllen socklen_t
  3533  	__pad2         int32
  3534  	msg_flags      int32
  3535  	_              [4]byte
  3536  } /* socket.h:22:1 */
  3537  
  3538  type cmsghdr = struct {
  3539  	cmsg_len   socklen_t
  3540  	__pad1     int32
  3541  	cmsg_level int32
  3542  	cmsg_type  int32
  3543  } /* socket.h:44:1 */
  3544  
  3545  type linger = struct {
  3546  	l_onoff  int32
  3547  	l_linger int32
  3548  } /* socket.h:74:1 */
  3549  
  3550  type sockaddr = struct {
  3551  	sa_family sa_family_t
  3552  	sa_data   [14]int8
  3553  } /* socket.h:367:1 */
  3554  
  3555  type sockaddr_storage = struct {
  3556  	ss_family    sa_family_t
  3557  	__ss_padding [118]int8
  3558  	__ss_align   uint64
  3559  } /* socket.h:372:1 */
  3560  
  3561  type in_port_t = uint16_t                 /* in.h:12:18 */
  3562  type in_addr_t = uint32_t                 /* in.h:13:18 */
  3563  type in_addr = struct{ s_addr in_addr_t } /* in.h:14:1 */
  3564  
  3565  type sockaddr_in = struct {
  3566  	sin_family sa_family_t
  3567  	sin_port   in_port_t
  3568  	sin_addr   struct{ s_addr in_addr_t }
  3569  	sin_zero   [8]uint8_t
  3570  } /* in.h:16:1 */
  3571  
  3572  type in6_addr = struct {
  3573  	__in6_union struct {
  3574  		_         [0]uint32
  3575  		__s6_addr [16]uint8_t
  3576  	}
  3577  } /* in.h:23:1 */
  3578  
  3579  type sockaddr_in6 = struct {
  3580  	sin6_family   sa_family_t
  3581  	sin6_port     in_port_t
  3582  	sin6_flowinfo uint32_t
  3583  	sin6_addr     struct {
  3584  		__in6_union struct {
  3585  			_         [0]uint32
  3586  			__s6_addr [16]uint8_t
  3587  		}
  3588  	}
  3589  	sin6_scope_id uint32_t
  3590  } /* in.h:34:1 */
  3591  
  3592  type ipv6_mreq = struct {
  3593  	ipv6mr_multiaddr struct {
  3594  		__in6_union struct {
  3595  			_         [0]uint32
  3596  			__s6_addr [16]uint8_t
  3597  		}
  3598  	}
  3599  	ipv6mr_interface uint32
  3600  } /* in.h:42:1 */
  3601  
  3602  type ip_opts = struct {
  3603  	ip_dst  struct{ s_addr in_addr_t }
  3604  	ip_opts [40]int8
  3605  } /* in.h:229:1 */
  3606  
  3607  type ip_mreq = struct {
  3608  	imr_multiaddr struct{ s_addr in_addr_t }
  3609  	imr_interface struct{ s_addr in_addr_t }
  3610  } /* in.h:247:1 */
  3611  
  3612  type ip_mreqn = struct {
  3613  	imr_multiaddr struct{ s_addr in_addr_t }
  3614  	imr_address   struct{ s_addr in_addr_t }
  3615  	imr_ifindex   int32
  3616  } /* in.h:252:1 */
  3617  
  3618  type ip_mreq_source = struct {
  3619  	imr_multiaddr  struct{ s_addr in_addr_t }
  3620  	imr_interface  struct{ s_addr in_addr_t }
  3621  	imr_sourceaddr struct{ s_addr in_addr_t }
  3622  } /* in.h:258:1 */
  3623  
  3624  type ip_msfilter = struct {
  3625  	imsf_multiaddr struct{ s_addr in_addr_t }
  3626  	imsf_interface struct{ s_addr in_addr_t }
  3627  	imsf_fmode     uint32_t
  3628  	imsf_numsrc    uint32_t
  3629  	imsf_slist     [1]struct{ s_addr in_addr_t }
  3630  } /* in.h:264:1 */
  3631  
  3632  type group_req = struct {
  3633  	gr_interface uint32_t
  3634  	_            [4]byte
  3635  	gr_group     struct {
  3636  		ss_family    sa_family_t
  3637  		__ss_padding [118]int8
  3638  		__ss_align   uint64
  3639  	}
  3640  } /* in.h:275:1 */
  3641  
  3642  type group_source_req = struct {
  3643  	gsr_interface uint32_t
  3644  	_             [4]byte
  3645  	gsr_group     struct {
  3646  		ss_family    sa_family_t
  3647  		__ss_padding [118]int8
  3648  		__ss_align   uint64
  3649  	}
  3650  	gsr_source struct {
  3651  		ss_family    sa_family_t
  3652  		__ss_padding [118]int8
  3653  		__ss_align   uint64
  3654  	}
  3655  } /* in.h:280:1 */
  3656  
  3657  type group_filter = struct {
  3658  	gf_interface uint32_t
  3659  	_            [4]byte
  3660  	gf_group     struct {
  3661  		ss_family    sa_family_t
  3662  		__ss_padding [118]int8
  3663  		__ss_align   uint64
  3664  	}
  3665  	gf_fmode  uint32_t
  3666  	gf_numsrc uint32_t
  3667  	gf_slist  [1]struct {
  3668  		ss_family    sa_family_t
  3669  		__ss_padding [118]int8
  3670  		__ss_align   uint64
  3671  	}
  3672  } /* in.h:286:1 */
  3673  
  3674  type in_pktinfo = struct {
  3675  	ipi_ifindex  int32
  3676  	ipi_spec_dst struct{ s_addr in_addr_t }
  3677  	ipi_addr     struct{ s_addr in_addr_t }
  3678  } /* in.h:297:1 */
  3679  
  3680  type in6_pktinfo = struct {
  3681  	ipi6_addr struct {
  3682  		__in6_union struct {
  3683  			_         [0]uint32
  3684  			__s6_addr [16]uint8_t
  3685  		}
  3686  	}
  3687  	ipi6_ifindex uint32
  3688  } /* in.h:303:1 */
  3689  
  3690  type ip6_mtuinfo = struct {
  3691  	ip6m_addr struct {
  3692  		sin6_family   sa_family_t
  3693  		sin6_port     in_port_t
  3694  		sin6_flowinfo uint32_t
  3695  		sin6_addr     struct {
  3696  			__in6_union struct {
  3697  				_         [0]uint32
  3698  				__s6_addr [16]uint8_t
  3699  			}
  3700  		}
  3701  		sin6_scope_id uint32_t
  3702  	}
  3703  	ip6m_mtu uint32_t
  3704  } /* in.h:308:1 */
  3705  
  3706  type addrinfo = struct {
  3707  	ai_flags     int32
  3708  	ai_family    int32
  3709  	ai_socktype  int32
  3710  	ai_protocol  int32
  3711  	ai_addrlen   socklen_t
  3712  	_            [4]byte
  3713  	ai_addr      uintptr
  3714  	ai_canonname uintptr
  3715  	ai_next      uintptr
  3716  } /* netdb.h:16:1 */
  3717  
  3718  // Legacy functions follow (marked OBsolete in SUS)
  3719  
  3720  type netent = struct {
  3721  	n_name     uintptr
  3722  	n_aliases  uintptr
  3723  	n_addrtype int32
  3724  	n_net      uint32_t
  3725  } /* netdb.h:62:1 */
  3726  
  3727  type hostent = struct {
  3728  	h_name      uintptr
  3729  	h_aliases   uintptr
  3730  	h_addrtype  int32
  3731  	h_length    int32
  3732  	h_addr_list uintptr
  3733  } /* netdb.h:69:1 */
  3734  
  3735  type servent = struct {
  3736  	s_name    uintptr
  3737  	s_aliases uintptr
  3738  	s_port    int32
  3739  	_         [4]byte
  3740  	s_proto   uintptr
  3741  } /* netdb.h:78:1 */
  3742  
  3743  type protoent = struct {
  3744  	p_name    uintptr
  3745  	p_aliases uintptr
  3746  	p_proto   int32
  3747  	_         [4]byte
  3748  } /* netdb.h:85:1 */
  3749  
  3750  type aibuf = struct {
  3751  	ai struct {
  3752  		ai_flags     int32
  3753  		ai_family    int32
  3754  		ai_socktype  int32
  3755  		ai_protocol  int32
  3756  		ai_addrlen   socklen_t
  3757  		_            [4]byte
  3758  		ai_addr      uintptr
  3759  		ai_canonname uintptr
  3760  		ai_next      uintptr
  3761  	}
  3762  	sa struct {
  3763  		sin struct {
  3764  			sin_family sa_family_t
  3765  			sin_port   in_port_t
  3766  			sin_addr   struct{ s_addr in_addr_t }
  3767  			sin_zero   [8]uint8_t
  3768  		}
  3769  		_ [12]byte
  3770  	}
  3771  	lock [1]int32
  3772  	slot int16
  3773  	ref  int16
  3774  	_    [4]byte
  3775  } /* lookup.h:10:1 */
  3776  
  3777  type sa = struct {
  3778  	sin struct {
  3779  		sin_family sa_family_t
  3780  		sin_port   in_port_t
  3781  		sin_addr   struct{ s_addr in_addr_t }
  3782  		sin_zero   [8]uint8_t
  3783  	}
  3784  	_ [12]byte
  3785  } /* lookup.h:10:1 */
  3786  
  3787  type address = struct {
  3788  	family  int32
  3789  	scopeid uint32
  3790  	addr    [16]uint8_t
  3791  	sortkey int32
  3792  } /* lookup.h:20:1 */
  3793  
  3794  type service = struct {
  3795  	port     uint16_t
  3796  	proto    uint8
  3797  	socktype uint8
  3798  } /* lookup.h:27:1 */
  3799  
  3800  type resolvconf = struct {
  3801  	ns [3]struct {
  3802  		family  int32
  3803  		scopeid uint32
  3804  		addr    [16]uint8_t
  3805  		sortkey int32
  3806  	}
  3807  	nns      uint32
  3808  	attempts uint32
  3809  	ndots    uint32
  3810  	timeout  uint32
  3811  } /* lookup.h:34:1 */
  3812  
  3813  func Xfreeaddrinfo(tls *TLS, p uintptr) { /* freeaddrinfo.c:7:6: */
  3814  	var cnt size_t
  3815  	cnt = uint64(1)
  3816  __1:
  3817  	if !((*addrinfo)(unsafe.Pointer(p)).ai_next != 0) {
  3818  		goto __3
  3819  	}
  3820  	goto __2
  3821  __2:
  3822  	cnt++
  3823  	p = (*addrinfo)(unsafe.Pointer(p)).ai_next
  3824  	goto __1
  3825  	goto __3
  3826  __3:
  3827  	;
  3828  	var b uintptr = p - uintptr(uint64(uintptr(0)))
  3829  	b -= 88 * uintptr((*aibuf)(unsafe.Pointer(b)).slot)
  3830  	//TODO LOCK(b->lock);
  3831  	if !(int32(AssignSubPtrInt16(b+82, int16(cnt))) != 0) {
  3832  		Xfree(tls, b)
  3833  	}
  3834  	//TODO else UNLOCK(b->lock);
  3835  }
  3836  
  3837  func Xgetaddrinfo(tls *TLS, host uintptr, serv uintptr, hint uintptr, res uintptr) int32 { /* getaddrinfo.c:12:5: */
  3838  	bp := tls.Alloc(1608)
  3839  	defer tls.Free(1608)
  3840  
  3841  	// var ports [2]service at bp, 8
  3842  
  3843  	// var addrs [48]address at bp+8, 1344
  3844  
  3845  	// var canon [256]int8 at bp+1352, 256
  3846  
  3847  	var outcanon uintptr
  3848  	var nservs int32
  3849  	var naddrs int32
  3850  	var nais int32
  3851  	var canon_len int32
  3852  	var i int32
  3853  	var j int32
  3854  	var k int32
  3855  	var family int32 = 0
  3856  	var flags int32 = 0
  3857  	var proto int32 = 0
  3858  	var socktype int32 = 0
  3859  	var out uintptr
  3860  
  3861  	if !(host != 0) && !(serv != 0) {
  3862  		return -2
  3863  	}
  3864  
  3865  	if hint != 0 {
  3866  		family = (*addrinfo)(unsafe.Pointer(hint)).ai_family
  3867  		flags = (*addrinfo)(unsafe.Pointer(hint)).ai_flags
  3868  		proto = (*addrinfo)(unsafe.Pointer(hint)).ai_protocol
  3869  		socktype = (*addrinfo)(unsafe.Pointer(hint)).ai_socktype
  3870  
  3871  		var mask int32 = 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x400
  3872  		if flags&mask != flags {
  3873  			return -1
  3874  		}
  3875  
  3876  		switch family {
  3877  		case 2:
  3878  			fallthrough
  3879  		case 10:
  3880  			fallthrough
  3881  		case 0:
  3882  			break
  3883  			fallthrough
  3884  		default:
  3885  			return -6
  3886  		}
  3887  	}
  3888  
  3889  	if flags&0x20 != 0 {
  3890  		Xabort(tls) //TODO-
  3891  		// 	/* Define the "an address is configured" condition for address
  3892  		// 	 * families via ability to create a socket for the family plus
  3893  		// 	 * routability of the loopback address for the family. */
  3894  		// 	static const struct sockaddr_in lo4 = {
  3895  		// 		.sin_family = AF_INET, .sin_port = 65535,
  3896  		// 		.sin_addr.s_addr = __BYTE_ORDER == __BIG_ENDIAN
  3897  		// 			? 0x7f000001 : 0x0100007f
  3898  		// 	};
  3899  		// 	static const struct sockaddr_in6 lo6 = {
  3900  		// 		.sin6_family = AF_INET6, .sin6_port = 65535,
  3901  		// 		.sin6_addr = IN6ADDR_LOOPBACK_INIT
  3902  		// 	};
  3903  		// 	int tf[2] = { AF_INET, AF_INET6 };
  3904  		// 	const void *ta[2] = { &lo4, &lo6 };
  3905  		// 	socklen_t tl[2] = { sizeof lo4, sizeof lo6 };
  3906  		// 	for (i=0; i<2; i++) {
  3907  		// 		if (family==tf[1-i]) continue;
  3908  		// 		int s = socket(tf[i], SOCK_CLOEXEC|SOCK_DGRAM,
  3909  		// 			IPPROTO_UDP);
  3910  		// 		if (s>=0) {
  3911  		// 			int cs;
  3912  		// 			pthread_setcancelstate(
  3913  		// 				PTHREAD_CANCEL_DISABLE, &cs);
  3914  		// 			int r = connect(s, ta[i], tl[i]);
  3915  		// 			pthread_setcancelstate(cs, 0);
  3916  		// 			close(s);
  3917  		// 			if (!r) continue;
  3918  		// 		}
  3919  		// 		switch (errno) {
  3920  		// 		case EADDRNOTAVAIL:
  3921  		// 		case EAFNOSUPPORT:
  3922  		// 		case EHOSTUNREACH:
  3923  		// 		case ENETDOWN:
  3924  		// 		case ENETUNREACH:
  3925  		// 			break;
  3926  		// 		default:
  3927  		// 			return EAI_SYSTEM;
  3928  		// 		}
  3929  		// 		if (family == tf[i]) return EAI_NONAME;
  3930  		// 		family = tf[1-i];
  3931  		// 	}
  3932  	}
  3933  
  3934  	nservs = X__lookup_serv(tls, bp, serv, proto, socktype, flags)
  3935  	if nservs < 0 {
  3936  		return nservs
  3937  	}
  3938  
  3939  	naddrs = X__lookup_name(tls, bp+8, bp+1352, host, family, flags)
  3940  	if naddrs < 0 {
  3941  		return naddrs
  3942  	}
  3943  
  3944  	nais = nservs * naddrs
  3945  	canon_len = int32(Xstrlen(tls, bp+1352))
  3946  	out = Xcalloc(tls, uint64(1), uint64(nais)*uint64(unsafe.Sizeof(aibuf{}))+uint64(canon_len)+uint64(1))
  3947  	if !(out != 0) {
  3948  		return -10
  3949  	}
  3950  
  3951  	if canon_len != 0 {
  3952  		outcanon = out + uintptr(nais)*88
  3953  		Xmemcpy(tls, outcanon, bp+1352, uint64(canon_len+1))
  3954  	} else {
  3955  		outcanon = uintptr(0)
  3956  	}
  3957  
  3958  	for k = AssignInt32(&i, 0); i < naddrs; i++ {
  3959  		j = 0
  3960  	__1:
  3961  		if !(j < nservs) {
  3962  			goto __3
  3963  		}
  3964  		{
  3965  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).slot = int16(k)
  3966  			//TODO out[k].ai = (struct addrinfo){
  3967  			//TODO 	.ai_family = addrs[i].family,
  3968  			//TODO 	.ai_socktype = ports[j].socktype,
  3969  			//TODO 	.ai_protocol = ports[j].proto,
  3970  			//TODO 	.ai_addrlen = addrs[i].family == AF_INET
  3971  			//TODO 		? sizeof(struct sockaddr_in)
  3972  			//TODO 		: sizeof(struct sockaddr_in6),
  3973  			//TODO 	.ai_addr = (void *)&out[k].sa,
  3974  			//TODO 	.ai_canonname = outcanon };
  3975  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_family = (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).family
  3976  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_socktype = int32((*service)(unsafe.Pointer(bp + uintptr(j)*4)).socktype)
  3977  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_protocol = int32((*service)(unsafe.Pointer(bp + uintptr(j)*4)).proto)
  3978  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_addrlen = func() uint32 {
  3979  				if (*address)(unsafe.Pointer(bp+8+uintptr(i)*28)).family == 2 {
  3980  					return uint32(unsafe.Sizeof(sockaddr_in{}))
  3981  				}
  3982  				return uint32(unsafe.Sizeof(sockaddr_in6{}))
  3983  			}()
  3984  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_addr = out + uintptr(k)*88 + 48
  3985  			(*aibuf)(unsafe.Pointer(out + uintptr(k)*88)).ai.ai_canonname = outcanon
  3986  			if k != 0 {
  3987  				(*aibuf)(unsafe.Pointer(out + uintptr(k-1)*88)).ai.ai_next = out + uintptr(k)*88
  3988  			}
  3989  			switch (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).family {
  3990  			case 2:
  3991  				(*sockaddr_in)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin_family = sa_family_t(2)
  3992  				(*sockaddr_in)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin_port = Xhtons(tls, (*service)(unsafe.Pointer(bp+uintptr(j)*4)).port)
  3993  				Xmemcpy(tls, out+uintptr(k)*88+48+4, bp+8+uintptr(i)*28+8, uint64(4))
  3994  				break
  3995  			case 10:
  3996  				(*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin6_family = sa_family_t(10)
  3997  				(*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin6_port = Xhtons(tls, (*service)(unsafe.Pointer(bp+uintptr(j)*4)).port)
  3998  				(*sockaddr_in6)(unsafe.Pointer(out + uintptr(k)*88 + 48)).sin6_scope_id = (*address)(unsafe.Pointer(bp + 8 + uintptr(i)*28)).scopeid
  3999  				Xmemcpy(tls, out+uintptr(k)*88+48+8, bp+8+uintptr(i)*28+8, uint64(16))
  4000  				break
  4001  			}
  4002  
  4003  		}
  4004  		goto __2
  4005  	__2:
  4006  		j++
  4007  		k++
  4008  		goto __1
  4009  		goto __3
  4010  	__3:
  4011  	}
  4012  	(*aibuf)(unsafe.Pointer(out)).ref = int16(nais)
  4013  	*(*uintptr)(unsafe.Pointer(res)) = out
  4014  	return 0
  4015  }
  4016  
  4017  type ucred = struct {
  4018  	pid pid_t
  4019  	uid uid_t
  4020  	gid gid_t
  4021  } /* socket.h:57:1 */
  4022  
  4023  type mmsghdr = struct {
  4024  	msg_hdr struct {
  4025  		msg_name       uintptr
  4026  		msg_namelen    socklen_t
  4027  		_              [4]byte
  4028  		msg_iov        uintptr
  4029  		msg_iovlen     int32
  4030  		__pad1         int32
  4031  		msg_control    uintptr
  4032  		msg_controllen socklen_t
  4033  		__pad2         int32
  4034  		msg_flags      int32
  4035  		_              [4]byte
  4036  	}
  4037  	msg_len uint32
  4038  	_       [4]byte
  4039  } /* socket.h:63:1 */
  4040  
  4041  func Xgethostbyaddr(tls *TLS, a uintptr, l socklen_t, af int32) uintptr { /* gethostbyaddr.c:7:16: */
  4042  	bp := tls.Alloc(8)
  4043  	defer tls.Free(8)
  4044  
  4045  	var size size_t = uint64(63)
  4046  	// var res uintptr at bp, 8
  4047  
  4048  	var err int32
  4049  	for __ccgo := true; __ccgo; __ccgo = err == 34 {
  4050  		Xfree(tls, _sh)
  4051  		_sh = Xmalloc(tls, AssignAddUint64(&size, size+uint64(1)))
  4052  		if !(_sh != 0) {
  4053  			*(*int32)(unsafe.Pointer(X__h_errno_location(tls))) = 3
  4054  			return uintptr(0)
  4055  		}
  4056  		err = Xgethostbyaddr_r(tls, a, l, af, _sh,
  4057  			_sh+uintptr(1)*32, size-size_t(unsafe.Sizeof(hostent{})), bp, X__h_errno_location(tls))
  4058  	}
  4059  	if err != 0 {
  4060  		return uintptr(0)
  4061  	}
  4062  	return _sh
  4063  }
  4064  
  4065  var _sh uintptr /* gethostbyaddr.c:9:24: */
  4066  
  4067  func Xgethostbyaddr_r(tls *TLS, a uintptr, l socklen_t, af int32, h uintptr, buf uintptr, buflen size_t, res uintptr, err uintptr) int32 { /* gethostbyaddr_r.c:10:5: */
  4068  	bp := tls.Alloc(28)
  4069  	defer tls.Free(28)
  4070  
  4071  	//TODO union {
  4072  	//TODO 	struct sockaddr_in sin;
  4073  	//TODO 	struct sockaddr_in6 sin6;
  4074  	//TODO } sa = { .sin.sin_family = af };
  4075  	*(*struct {
  4076  		sin sockaddr_in
  4077  		_   [12]byte
  4078  	})(unsafe.Pointer(bp)) = struct {
  4079  		sin sockaddr_in
  4080  		_   [12]byte
  4081  	}{} //TODO-
  4082  	(*sockaddr_in)(unsafe.Pointer(bp)).sin_family = sa_family_t(af) //TODO-
  4083  	var sl socklen_t
  4084  	if af == 10 {
  4085  		sl = uint32(unsafe.Sizeof(sockaddr_in6{}))
  4086  	} else {
  4087  		sl = uint32(unsafe.Sizeof(sockaddr_in{}))
  4088  	}
  4089  	var i int32
  4090  
  4091  	*(*uintptr)(unsafe.Pointer(res)) = uintptr(0)
  4092  
  4093  	// Load address argument into sockaddr structure
  4094  	if af == 10 && l == socklen_t(16) {
  4095  		Xmemcpy(tls, bp+8, a, uint64(16))
  4096  	} else if af == 2 && l == socklen_t(4) {
  4097  		Xmemcpy(tls, bp+4, a, uint64(4))
  4098  	} else {
  4099  		*(*int32)(unsafe.Pointer(err)) = 3
  4100  		return 22
  4101  	}
  4102  
  4103  	// Align buffer and check for space for pointers and ip address
  4104  	i = int32(uintptr_t(buf) & (uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)))
  4105  	if !(i != 0) {
  4106  		i = int32(unsafe.Sizeof(uintptr(0)))
  4107  	}
  4108  	if buflen <= uint64(5)*uint64(unsafe.Sizeof(uintptr(0)))-uint64(i)+uint64(l) {
  4109  		return 34
  4110  	}
  4111  	buf += uintptr(uint64(unsafe.Sizeof(uintptr(0))) - uint64(i))
  4112  	buflen = buflen - (uint64(5)*uint64(unsafe.Sizeof(uintptr(0))) - uint64(i) + uint64(l))
  4113  
  4114  	(*hostent)(unsafe.Pointer(h)).h_addr_list = buf
  4115  	buf += uintptr(uint64(2) * uint64(unsafe.Sizeof(uintptr(0))))
  4116  	(*hostent)(unsafe.Pointer(h)).h_aliases = buf
  4117  	buf += uintptr(uint64(2) * uint64(unsafe.Sizeof(uintptr(0))))
  4118  
  4119  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list)) = buf
  4120  	Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list)), a, uint64(l))
  4121  	buf += uintptr(l)
  4122  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + 1*8)) = uintptr(0)
  4123  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases)) = buf
  4124  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)) = uintptr(0)
  4125  
  4126  	switch Xgetnameinfo(tls, bp, sl, buf, uint32(buflen), uintptr(0), uint32(0), 0) {
  4127  	case -3:
  4128  		*(*int32)(unsafe.Pointer(err)) = 2
  4129  		return 11
  4130  	case -12:
  4131  		return 34
  4132  	default:
  4133  		fallthrough
  4134  	case -10:
  4135  		fallthrough
  4136  	case -11:
  4137  		fallthrough
  4138  	case -4:
  4139  		*(*int32)(unsafe.Pointer(err)) = 3
  4140  		return *(*int32)(unsafe.Pointer(X___errno_location(tls)))
  4141  	case 0:
  4142  		break
  4143  	}
  4144  
  4145  	(*hostent)(unsafe.Pointer(h)).h_addrtype = af
  4146  	(*hostent)(unsafe.Pointer(h)).h_length = int32(l)
  4147  	(*hostent)(unsafe.Pointer(h)).h_name = *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases))
  4148  	*(*uintptr)(unsafe.Pointer(res)) = h
  4149  	return 0
  4150  }
  4151  
  4152  func Xgethostbyname(tls *TLS, name uintptr) uintptr { /* gethostbyname.c:8:16: */
  4153  	return Xgethostbyname2(tls, name, 2)
  4154  }
  4155  
  4156  func Xgethostbyname2(tls *TLS, name uintptr, af int32) uintptr { /* gethostbyname2.c:8:16: */
  4157  	bp := tls.Alloc(8)
  4158  	defer tls.Free(8)
  4159  
  4160  	var size size_t = uint64(63)
  4161  	// var res uintptr at bp, 8
  4162  
  4163  	var err int32
  4164  	for __ccgo := true; __ccgo; __ccgo = err == 34 {
  4165  		Xfree(tls, _sh1)
  4166  		_sh1 = Xmalloc(tls, AssignAddUint64(&size, size+uint64(1)))
  4167  		if !(_sh1 != 0) {
  4168  			*(*int32)(unsafe.Pointer(X__h_errno_location(tls))) = 3
  4169  			return uintptr(0)
  4170  		}
  4171  		err = Xgethostbyname2_r(tls, name, af, _sh1,
  4172  			_sh1+uintptr(1)*32, size-size_t(unsafe.Sizeof(hostent{})), bp, X__h_errno_location(tls))
  4173  	}
  4174  	if err != 0 {
  4175  		return uintptr(0)
  4176  	}
  4177  	return _sh1
  4178  }
  4179  
  4180  var _sh1 uintptr /* gethostbyname2.c:10:24: */
  4181  
  4182  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: */
  4183  	bp := tls.Alloc(1600)
  4184  	defer tls.Free(1600)
  4185  
  4186  	// var addrs [48]address at bp, 1344
  4187  
  4188  	// var canon [256]int8 at bp+1344, 256
  4189  
  4190  	var i int32
  4191  	var cnt int32
  4192  	var align size_t
  4193  	var need size_t
  4194  
  4195  	*(*uintptr)(unsafe.Pointer(res)) = uintptr(0)
  4196  	cnt = X__lookup_name(tls, bp, bp+1344, name, af, 0x02)
  4197  	if cnt < 0 {
  4198  		switch cnt {
  4199  		case -2:
  4200  			*(*int32)(unsafe.Pointer(err)) = 1
  4201  			return 2
  4202  			fallthrough
  4203  		case -3:
  4204  			*(*int32)(unsafe.Pointer(err)) = 2
  4205  			return 11
  4206  			fallthrough
  4207  		default:
  4208  			fallthrough
  4209  		case -4:
  4210  			*(*int32)(unsafe.Pointer(err)) = 3
  4211  			return 74
  4212  			fallthrough
  4213  		case -10:
  4214  			fallthrough
  4215  		case -11:
  4216  			*(*int32)(unsafe.Pointer(err)) = 3
  4217  			return *(*int32)(unsafe.Pointer(X___errno_location(tls)))
  4218  		}
  4219  	}
  4220  
  4221  	(*hostent)(unsafe.Pointer(h)).h_addrtype = af
  4222  	(*hostent)(unsafe.Pointer(h)).h_length = func() int32 {
  4223  		if af == 10 {
  4224  			return 16
  4225  		}
  4226  		return 4
  4227  	}()
  4228  
  4229  	// Align buffer
  4230  	align = -uintptr_t(buf) & (uint64(unsafe.Sizeof(uintptr(0))) - uint64(1))
  4231  
  4232  	need = uint64(4) * uint64(unsafe.Sizeof(uintptr(0)))
  4233  	need = need + uint64(cnt+1)*(uint64(unsafe.Sizeof(uintptr(0)))+uint64((*hostent)(unsafe.Pointer(h)).h_length))
  4234  	need = need + (Xstrlen(tls, name) + uint64(1))
  4235  	need = need + (Xstrlen(tls, bp+1344) + uint64(1))
  4236  	need = need + align
  4237  
  4238  	if need > buflen {
  4239  		return 34
  4240  	}
  4241  
  4242  	buf += uintptr(align)
  4243  	(*hostent)(unsafe.Pointer(h)).h_aliases = buf
  4244  	buf += uintptr(uint64(3) * uint64(unsafe.Sizeof(uintptr(0))))
  4245  	(*hostent)(unsafe.Pointer(h)).h_addr_list = buf
  4246  	buf += uintptr(uint64(cnt+1) * uint64(unsafe.Sizeof(uintptr(0))))
  4247  
  4248  	for i = 0; i < cnt; i++ {
  4249  		*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + uintptr(i)*8)) = buf
  4250  		buf += uintptr((*hostent)(unsafe.Pointer(h)).h_length)
  4251  		Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + uintptr(i)*8)), bp+uintptr(i)*28+8, uint64((*hostent)(unsafe.Pointer(h)).h_length))
  4252  	}
  4253  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_addr_list + uintptr(i)*8)) = uintptr(0)
  4254  
  4255  	(*hostent)(unsafe.Pointer(h)).h_name = AssignPtrUintptr((*hostent)(unsafe.Pointer(h)).h_aliases, buf)
  4256  	Xstrcpy(tls, (*hostent)(unsafe.Pointer(h)).h_name, bp+1344)
  4257  	buf += uintptr(Xstrlen(tls, (*hostent)(unsafe.Pointer(h)).h_name) + uint64(1))
  4258  
  4259  	if Xstrcmp(tls, (*hostent)(unsafe.Pointer(h)).h_name, name) != 0 {
  4260  		*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)) = buf
  4261  		Xstrcpy(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)), name)
  4262  		buf += uintptr(Xstrlen(tls, *(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8))) + uint64(1))
  4263  	} else {
  4264  		*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 1*8)) = uintptr(0)
  4265  	}
  4266  
  4267  	*(*uintptr)(unsafe.Pointer((*hostent)(unsafe.Pointer(h)).h_aliases + 2*8)) = uintptr(0)
  4268  
  4269  	*(*uintptr)(unsafe.Pointer(res)) = h
  4270  	return 0
  4271  }
  4272  
  4273  func Xgethostbyname_r(tls *TLS, name uintptr, h uintptr, buf uintptr, buflen size_t, res uintptr, err uintptr) int32 { /* gethostbyname_r.c:6:5: */
  4274  	return Xgethostbyname2_r(tls, name, 2, h, buf, buflen, res, err)
  4275  }
  4276  
  4277  type if_nameindex = struct {
  4278  	if_index uint32
  4279  	_        [4]byte
  4280  	if_name  uintptr
  4281  } /* if.h:12:1 */
  4282  
  4283  type ifaddr = struct {
  4284  	ifa_addr struct {
  4285  		sa_family sa_family_t
  4286  		sa_data   [14]int8
  4287  	}
  4288  	ifa_ifu struct {
  4289  		ifu_broadaddr struct {
  4290  			sa_family sa_family_t
  4291  			sa_data   [14]int8
  4292  		}
  4293  	}
  4294  	ifa_ifp  uintptr
  4295  	ifa_next uintptr
  4296  } /* if.h:51:1 */
  4297  
  4298  type ifmap = struct {
  4299  	mem_start uint64
  4300  	mem_end   uint64
  4301  	base_addr uint16
  4302  	irq       uint8
  4303  	dma       uint8
  4304  	port      uint8
  4305  	_         [3]byte
  4306  } /* if.h:64:1 */
  4307  
  4308  type ifreq = struct {
  4309  	ifr_ifrn struct{ ifrn_name [16]int8 }
  4310  	ifr_ifru struct {
  4311  		_         [0]uint64
  4312  		ifru_addr struct {
  4313  			sa_family sa_family_t
  4314  			sa_data   [14]int8
  4315  		}
  4316  		_ [8]byte
  4317  	}
  4318  } /* if.h:76:1 */
  4319  
  4320  type ifconf = struct {
  4321  	ifc_len  int32
  4322  	_        [4]byte
  4323  	ifc_ifcu struct{ ifcu_buf uintptr }
  4324  } /* if.h:116:1 */
  4325  
  4326  type ns_sect = uint32 /* nameser.h:37:3 */
  4327  
  4328  type __ns_msg = struct {
  4329  	_msg      uintptr
  4330  	_eom      uintptr
  4331  	_id       uint16_t
  4332  	_flags    uint16_t
  4333  	_counts   [4]uint16_t
  4334  	_         [4]byte
  4335  	_sections [4]uintptr
  4336  	_sect     ns_sect
  4337  	_rrnum    int32
  4338  	_msg_ptr  uintptr
  4339  } /* nameser.h:39:9 */
  4340  
  4341  type ns_msg = __ns_msg /* nameser.h:46:3 */
  4342  
  4343  type _ns_flagdata = struct {
  4344  	mask  int32
  4345  	shift int32
  4346  } /* nameser.h:48:1 */
  4347  
  4348  type __ns_rr = struct {
  4349  	name     [1025]int8
  4350  	_        [1]byte
  4351  	__type   uint16_t
  4352  	rr_class uint16_t
  4353  	_        [2]byte
  4354  	ttl      uint32_t
  4355  	rdlength uint16_t
  4356  	_        [2]byte
  4357  	rdata    uintptr
  4358  } /* nameser.h:59:9 */
  4359  
  4360  type ns_rr = __ns_rr /* nameser.h:66:3 */
  4361  
  4362  type ns_flag = uint32 /* nameser.h:87:3 */
  4363  
  4364  type ns_opcode = uint32 /* nameser.h:96:3 */
  4365  
  4366  type ns_rcode = uint32 /* nameser.h:115:3 */
  4367  
  4368  type ns_update_operation = uint32 /* nameser.h:121:3 */
  4369  
  4370  type ns_tsig_key1 = struct {
  4371  	name [1025]int8
  4372  	alg  [1025]int8
  4373  	_    [6]byte
  4374  	data uintptr
  4375  	len  int32
  4376  	_    [4]byte
  4377  } /* nameser.h:123:1 */
  4378  
  4379  type ns_tsig_key = ns_tsig_key1 /* nameser.h:128:28 */
  4380  
  4381  type ns_tcp_tsig_state1 = struct {
  4382  	counter int32
  4383  	_       [4]byte
  4384  	key     uintptr
  4385  	ctx     uintptr
  4386  	sig     [512]uint8
  4387  	siglen  int32
  4388  	_       [4]byte
  4389  } /* nameser.h:130:1 */
  4390  
  4391  type ns_tcp_tsig_state = ns_tcp_tsig_state1 /* nameser.h:137:34 */
  4392  
  4393  type ns_type = uint32 /* nameser.h:200:3 */
  4394  
  4395  type ns_class = uint32 /* nameser.h:219:3 */
  4396  
  4397  type ns_key_types = uint32 /* nameser.h:226:3 */
  4398  
  4399  type ns_cert_types = uint32 /* nameser.h:234:3 */
  4400  
  4401  type HEADER = struct {
  4402  	_       [0]uint32
  4403  	id      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 */
  4404  	qdcount uint32 /* unsigned qdcount: 16, unsigned ancount: 16 */
  4405  	nscount uint32 /* unsigned nscount: 16, unsigned arcount: 16 */
  4406  } /* nameser.h:353:3 */
  4407  
  4408  // unused; purely for broken apps
  4409  type __res_state = struct {
  4410  	retrans     int32
  4411  	retry       int32
  4412  	options     uint64
  4413  	nscount     int32
  4414  	nsaddr_list [3]struct {
  4415  		sin_family sa_family_t
  4416  		sin_port   in_port_t
  4417  		sin_addr   struct{ s_addr in_addr_t }
  4418  		sin_zero   [8]uint8_t
  4419  	}
  4420  	id        uint16
  4421  	_         [2]byte
  4422  	dnsrch    [7]uintptr
  4423  	defdname  [256]int8
  4424  	pfcode    uint64
  4425  	ndots     uint32 /* unsigned ndots: 4, unsigned nsort: 4, unsigned ipv6_unavail: 1, unsigned unused: 23 */
  4426  	_         [4]byte
  4427  	sort_list [10]struct {
  4428  		addr struct{ s_addr in_addr_t }
  4429  		mask uint32_t
  4430  	}
  4431  	qhook       uintptr
  4432  	rhook       uintptr
  4433  	res_h_errno int32
  4434  	_vcsock     int32
  4435  	_flags      uint32
  4436  	_           [4]byte
  4437  	_u          struct {
  4438  		_   [0]uint64
  4439  		pad [52]int8
  4440  		_   [4]byte
  4441  	}
  4442  } /* resolv.h:26:9 */
  4443  
  4444  // unused; purely for broken apps
  4445  type res_state = uintptr /* resolv.h:62:3 */
  4446  
  4447  type res_sym = struct {
  4448  	number    int32
  4449  	_         [4]byte
  4450  	name      uintptr
  4451  	humanname uintptr
  4452  } /* resolv.h:70:1 */
  4453  
  4454  func itoa(tls *TLS, p uintptr, x uint32) uintptr { /* getnameinfo.c:18:13: */
  4455  	p += uintptr(uint64(3) * uint64(unsafe.Sizeof(int32(0))))
  4456  	*(*int8)(unsafe.Pointer(PreDecUintptr(&p, 1))) = int8(0)
  4457  	for __ccgo := true; __ccgo; __ccgo = x != 0 {
  4458  		*(*int8)(unsafe.Pointer(PreDecUintptr(&p, 1))) = int8(uint32('0') + x%uint32(10))
  4459  		x = x / uint32(10)
  4460  	}
  4461  	return p
  4462  }
  4463  
  4464  func mkptr4(tls *TLS, s uintptr, ip uintptr) { /* getnameinfo.c:28:13: */
  4465  	bp := tls.Alloc(32)
  4466  	defer tls.Free(32)
  4467  
  4468  	Xsprintf(tls, s, ts+25,
  4469  		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)))))
  4470  }
  4471  
  4472  func mkptr6(tls *TLS, s uintptr, ip uintptr) { /* getnameinfo.c:34:13: */
  4473  	var i int32
  4474  	for i = 15; i >= 0; i-- {
  4475  		*(*int8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = _sxdigits[int32(*(*uint8)(unsafe.Pointer(ip + uintptr(i))))&15]
  4476  		*(*int8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = int8('.')
  4477  		*(*int8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = _sxdigits[int32(*(*uint8)(unsafe.Pointer(ip + uintptr(i))))>>4]
  4478  		*(*int8)(unsafe.Pointer(PostIncUintptr(&s, 1))) = int8('.')
  4479  	}
  4480  	Xstrcpy(tls, s, ts+50)
  4481  }
  4482  
  4483  var _sxdigits = *(*[17]int8)(unsafe.Pointer(ts + 59)) /* getnameinfo.c:36:20 */
  4484  
  4485  func reverse_hosts(tls *TLS, buf uintptr, a uintptr, scopeid uint32, family int32) { /* getnameinfo.c:45:13: */
  4486  	bp := tls.Alloc(556)
  4487  	defer tls.Free(556)
  4488  
  4489  	// var line [512]int8 at bp+16, 512
  4490  
  4491  	var p uintptr
  4492  	var z uintptr
  4493  	var _buf [1032]uint8
  4494  	_ = _buf
  4495  	// var atmp [16]uint8 at bp, 16
  4496  
  4497  	// var iplit address at bp+528, 28
  4498  
  4499  	//TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
  4500  	var f uintptr = Xfopen(tls, ts+76, ts+87)
  4501  	if !(f != 0) {
  4502  		return
  4503  	}
  4504  	if family == 2 {
  4505  		Xmemcpy(tls, bp+uintptr(12), a, uint64(4))
  4506  		Xmemcpy(tls, bp, ts+90, uint64(12))
  4507  		a = bp /* &atmp[0] */
  4508  	}
  4509  	for Xfgets(tls, bp+16, int32(unsafe.Sizeof([512]int8{})), f) != 0 {
  4510  		if AssignUintptr(&p, Xstrchr(tls, bp+16, '#')) != 0 {
  4511  			*(*int8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = int8('\n')
  4512  			*(*int8)(unsafe.Pointer(p)) = int8(0)
  4513  		}
  4514  
  4515  		for p = bp + 16; /* &line[0] */ *(*int8)(unsafe.Pointer(p)) != 0 && !(__isspace(tls, int32(*(*int8)(unsafe.Pointer(p)))) != 0); p++ {
  4516  		}
  4517  		*(*int8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = int8(0)
  4518  		if X__lookup_ipliteral(tls, bp+528, bp+16, 0) <= 0 {
  4519  			continue
  4520  		}
  4521  
  4522  		if (*address)(unsafe.Pointer(bp+528)).family == 2 {
  4523  			Xmemcpy(tls, bp+528+8+uintptr(12), bp+528+8, uint64(4))
  4524  			Xmemcpy(tls, bp+528+8, ts+90, uint64(12))
  4525  			(*address)(unsafe.Pointer(bp + 528 /* &iplit */)).scopeid = uint32(0)
  4526  		}
  4527  
  4528  		if Xmemcmp(tls, a, bp+528+8, uint64(16)) != 0 || (*address)(unsafe.Pointer(bp+528)).scopeid != scopeid {
  4529  			continue
  4530  		}
  4531  
  4532  		for ; *(*int8)(unsafe.Pointer(p)) != 0 && __isspace(tls, int32(*(*int8)(unsafe.Pointer(p)))) != 0; p++ {
  4533  		}
  4534  		for z = p; *(*int8)(unsafe.Pointer(z)) != 0 && !(__isspace(tls, int32(*(*int8)(unsafe.Pointer(z)))) != 0); z++ {
  4535  		}
  4536  		*(*int8)(unsafe.Pointer(z)) = int8(0)
  4537  		if (int64(z)-int64(p))/1 < int64(256) {
  4538  			Xmemcpy(tls, buf, p, uint64((int64(z)-int64(p))/1+int64(1)))
  4539  			break
  4540  		}
  4541  	}
  4542  	//TODO __fclose_ca(f);
  4543  	Xfclose(tls, f)
  4544  }
  4545  
  4546  func reverse_services(tls *TLS, buf uintptr, port int32, dgram int32) { /* getnameinfo.c:87:13: */
  4547  	Xabort(tls) //TODO-
  4548  	// unsigned long svport;
  4549  	// char line[128], *p, *z;
  4550  	// unsigned char _buf[1032];
  4551  	// FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
  4552  	// if (!f) return;
  4553  	// while (fgets(line, sizeof line, f)) {
  4554  	// 	if ((p=strchr(line, '#'))) *p++='\n', *p=0;
  4555  
  4556  	// 	for (p=line; *p && !isspace(*p); p++);
  4557  	// 	if (!*p) continue;
  4558  	// 	*p++ = 0;
  4559  	// 	svport = strtoul(p, &z, 10);
  4560  
  4561  	// 	if (svport != port || z==p) continue;
  4562  	// 	if (dgram && strncmp(z, "/udp", 4)) continue;
  4563  	// 	if (!dgram && strncmp(z, "/tcp", 4)) continue;
  4564  	// 	if (p-line > 32) continue;
  4565  
  4566  	// 	memcpy(buf, line, p-line);
  4567  	// 	break;
  4568  	// }
  4569  	// __fclose_ca(f);
  4570  }
  4571  
  4572  func Xgetnameinfo(tls *TLS, sa1 uintptr, sl socklen_t, node uintptr, nodelen socklen_t, serv uintptr, servlen socklen_t, flags int32) int32 { /* getnameinfo.c:125:5: */
  4573  	bp := tls.Alloc(347)
  4574  	defer tls.Free(347)
  4575  
  4576  	// var ptr [78]int8 at bp, 78
  4577  
  4578  	// var buf [256]int8 at bp+78, 256
  4579  
  4580  	// var num [13]int8 at bp+334, 13
  4581  
  4582  	var af int32 = int32((*sockaddr)(unsafe.Pointer(sa1)).sa_family)
  4583  	var a uintptr
  4584  	var scopeid uint32
  4585  
  4586  	switch af {
  4587  	case 2:
  4588  		a = sa1 + 4
  4589  		if uint64(sl) < uint64(unsafe.Sizeof(sockaddr_in{})) {
  4590  			return -6
  4591  		}
  4592  		mkptr4(tls, bp, a)
  4593  		scopeid = uint32(0)
  4594  		break
  4595  	case 10:
  4596  		a = sa1 + 8
  4597  		if uint64(sl) < uint64(unsafe.Sizeof(sockaddr_in6{})) {
  4598  			return -6
  4599  		}
  4600  		if Xmemcmp(tls, a, ts+90, uint64(12)) != 0 {
  4601  			mkptr6(tls, bp, a)
  4602  		} else {
  4603  			mkptr4(tls, bp, a+uintptr(12))
  4604  		}
  4605  		scopeid = (*sockaddr_in6)(unsafe.Pointer(sa1)).sin6_scope_id
  4606  		break
  4607  	default:
  4608  		return -6
  4609  	}
  4610  
  4611  	if node != 0 && nodelen != 0 {
  4612  		*(*int8)(unsafe.Pointer(bp + 78)) = int8(0)
  4613  		if !(flags&0x01 != 0) {
  4614  			reverse_hosts(tls, bp+78, a, scopeid, af)
  4615  		}
  4616  		if !(int32(*(*int8)(unsafe.Pointer(bp + 78))) != 0) && !(flags&0x01 != 0) {
  4617  			Xabort(tls) //TODO-
  4618  			// unsigned char query[18+PTR_MAX], reply[512];
  4619  			// int qlen = __res_mkquery(0, ptr, 1, RR_PTR,
  4620  			// 	0, 0, 0, query, sizeof query);
  4621  			// query[3] = 0; /* don't need AD flag */
  4622  			// int rlen = __res_send(query, qlen, reply, sizeof reply);
  4623  			// buf[0] = 0;
  4624  			// if (rlen > 0)
  4625  			// 	__dns_parse(reply, rlen, dns_parse_callback, buf);
  4626  		}
  4627  		if !(int32(*(*int8)(unsafe.Pointer(bp + 78))) != 0) {
  4628  			if flags&0x08 != 0 {
  4629  				return -2
  4630  			}
  4631  			Xinet_ntop(tls, af, a, bp+78, uint32(unsafe.Sizeof([256]int8{})))
  4632  			if scopeid != 0 {
  4633  				Xabort(tls) //TODO-
  4634  				// char *p = 0, tmp[IF_NAMESIZE+1];
  4635  				// if (!(flags & NI_NUMERICSCOPE) &&
  4636  				//     (IN6_IS_ADDR_LINKLOCAL(a) ||
  4637  				//      IN6_IS_ADDR_MC_LINKLOCAL(a)))
  4638  				// 	p = if_indextoname(scopeid, tmp+1);
  4639  				// if (!p)
  4640  				// 	p = itoa(num, scopeid);
  4641  				// *--p = '%';
  4642  				// strcat(buf, p);
  4643  			}
  4644  		}
  4645  		if Xstrlen(tls, bp+78) >= size_t(nodelen) {
  4646  			return -12
  4647  		}
  4648  		Xstrcpy(tls, node, bp+78)
  4649  	}
  4650  
  4651  	if serv != 0 && servlen != 0 {
  4652  		var p uintptr = bp + 78 /* buf */
  4653  		var port int32 = int32(Xntohs(tls, (*sockaddr_in)(unsafe.Pointer(sa1)).sin_port))
  4654  		*(*int8)(unsafe.Pointer(bp + 78)) = int8(0)
  4655  		if !(flags&0x02 != 0) {
  4656  			reverse_services(tls, bp+78, port, flags&0x10)
  4657  		}
  4658  		if !(int32(*(*int8)(unsafe.Pointer(p))) != 0) {
  4659  			p = itoa(tls, bp+334, uint32(port))
  4660  		}
  4661  		if Xstrlen(tls, p) >= size_t(servlen) {
  4662  			return -12
  4663  		}
  4664  		Xstrcpy(tls, serv, p)
  4665  	}
  4666  
  4667  	return 0
  4668  }
  4669  
  4670  var Xh_errno int32 /* h_errno.c:4:5: */
  4671  
  4672  func X__h_errno_location(tls *TLS) uintptr { /* h_errno.c:6:5: */
  4673  	return uintptr(unsafe.Pointer(&Xh_errno))
  4674  }
  4675  
  4676  func X__inet_aton(tls *TLS, s0 uintptr, dest uintptr) int32 { /* inet_aton.c:7:5: */
  4677  	bp := tls.Alloc(40)
  4678  	defer tls.Free(40)
  4679  
  4680  	var s uintptr = s0
  4681  	var d uintptr = dest
  4682  	*(*[4]uint64)(unsafe.Pointer(bp /* a */)) = [4]uint64{0: uint64(0)}
  4683  	// var z uintptr at bp+32, 8
  4684  
  4685  	var i int32
  4686  
  4687  	for i = 0; i < 4; i++ {
  4688  		*(*uint64)(unsafe.Pointer(bp + uintptr(i)*8)) = Xstrtoul(tls, s, bp+32, 0)
  4689  		if *(*uintptr)(unsafe.Pointer(bp + 32)) == s || *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))) != 0 && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32))))) != '.' || !(func() int32 {
  4690  			if 0 != 0 {
  4691  				return Xisdigit(tls, int32(*(*int8)(unsafe.Pointer(s))))
  4692  			}
  4693  			return Bool32(uint32(*(*int8)(unsafe.Pointer(s)))-uint32('0') < uint32(10))
  4694  		}() != 0) {
  4695  			return 0
  4696  		}
  4697  		if !(int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32))))) != 0) {
  4698  			break
  4699  		}
  4700  		s = *(*uintptr)(unsafe.Pointer(bp + 32)) + uintptr(1)
  4701  	}
  4702  	if i == 4 {
  4703  		return 0
  4704  	}
  4705  	switch i {
  4706  	case 0:
  4707  		*(*uint64)(unsafe.Pointer(bp + 1*8)) = *(*uint64)(unsafe.Pointer(bp)) & uint64(0xffffff)
  4708  		AssignShrPtrUint64(bp, int(24))
  4709  		fallthrough
  4710  	case 1:
  4711  		*(*uint64)(unsafe.Pointer(bp + 2*8)) = *(*uint64)(unsafe.Pointer(bp + 1*8)) & uint64(0xffff)
  4712  		AssignShrPtrUint64(bp+1*8, int(16))
  4713  		fallthrough
  4714  	case 2:
  4715  		*(*uint64)(unsafe.Pointer(bp + 3*8)) = *(*uint64)(unsafe.Pointer(bp + 2*8)) & uint64(0xff)
  4716  		AssignShrPtrUint64(bp+2*8, int(8))
  4717  	}
  4718  	for i = 0; i < 4; i++ {
  4719  		if *(*uint64)(unsafe.Pointer(bp + uintptr(i)*8)) > uint64(255) {
  4720  			return 0
  4721  		}
  4722  		*(*uint8)(unsafe.Pointer(d + uintptr(i))) = uint8(*(*uint64)(unsafe.Pointer(bp + uintptr(i)*8)))
  4723  	}
  4724  	return 1
  4725  }
  4726  
  4727  func Xinet_ntop(tls *TLS, af int32, a0 uintptr, s uintptr, l socklen_t) uintptr { /* inet_ntop.c:7:12: */
  4728  	bp := tls.Alloc(276)
  4729  	defer tls.Free(276)
  4730  
  4731  	var a uintptr = a0
  4732  	var i int32
  4733  	var j int32
  4734  	var max int32
  4735  	var best int32
  4736  	// var buf [100]int8 at bp+176, 100
  4737  
  4738  	switch af {
  4739  	case 2:
  4740  		if socklen_t(Xsnprintf(tls, s, uint64(l), ts+103, 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 {
  4741  			return s
  4742  		}
  4743  		break
  4744  	case 10:
  4745  		if Xmemcmp(tls, a, ts+90, uint64(12)) != 0 {
  4746  			Xsnprintf(tls, bp+176, uint64(unsafe.Sizeof([100]int8{})),
  4747  				ts+115,
  4748  				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))),
  4749  					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))),
  4750  					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))),
  4751  					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)))))
  4752  		} else {
  4753  			Xsnprintf(tls, bp+176, uint64(unsafe.Sizeof([100]int8{})),
  4754  				ts+139,
  4755  				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))),
  4756  					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))),
  4757  					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))),
  4758  					int32(*(*uint8)(unsafe.Pointer(a + 12))), int32(*(*uint8)(unsafe.Pointer(a + 13))), int32(*(*uint8)(unsafe.Pointer(a + 14))), int32(*(*uint8)(unsafe.Pointer(a + 15)))))
  4759  		}
  4760  		// Replace longest /(^0|:)[:0]{2,}/ with "::"
  4761  		i = AssignInt32(&best, 0)
  4762  		max = 2
  4763  		for ; *(*int8)(unsafe.Pointer(bp + 176 + uintptr(i))) != 0; i++ {
  4764  			if i != 0 && int32(*(*int8)(unsafe.Pointer(bp + 176 + uintptr(i)))) != ':' {
  4765  				continue
  4766  			}
  4767  			j = int32(Xstrspn(tls, bp+176+uintptr(i), ts+169))
  4768  			if j > max {
  4769  				best = i
  4770  				max = j
  4771  			}
  4772  		}
  4773  		if max > 3 {
  4774  			*(*int8)(unsafe.Pointer(bp + 176 + uintptr(best))) = AssignPtrInt8(bp+176+uintptr(best+1), int8(':'))
  4775  			Xmemmove(tls, bp+176+uintptr(best)+uintptr(2), bp+176+uintptr(best)+uintptr(max), uint64(i-best-max+1))
  4776  		}
  4777  		if Xstrlen(tls, bp+176) < size_t(l) {
  4778  			Xstrcpy(tls, s, bp+176)
  4779  			return s
  4780  		}
  4781  		break
  4782  	default:
  4783  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 97
  4784  		return uintptr(0)
  4785  	}
  4786  	*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 28
  4787  	return uintptr(0)
  4788  }
  4789  
  4790  func hexval(tls *TLS, c uint32) int32 { /* inet_pton.c:7:12: */
  4791  	if c-uint32('0') < uint32(10) {
  4792  		return int32(c - uint32('0'))
  4793  	}
  4794  	c = c | uint32(32)
  4795  	if c-uint32('a') < uint32(6) {
  4796  		return int32(c - uint32('a') + uint32(10))
  4797  	}
  4798  	return -1
  4799  }
  4800  
  4801  func Xinet_pton(tls *TLS, af int32, s uintptr, a0 uintptr) int32 { /* inet_pton.c:15:5: */
  4802  	bp := tls.Alloc(16)
  4803  	defer tls.Free(16)
  4804  
  4805  	// var ip [8]uint16_t at bp, 16
  4806  
  4807  	var a uintptr = a0
  4808  	var i int32
  4809  	var j int32
  4810  	var v int32
  4811  	var d int32
  4812  	var brk int32 = -1
  4813  	var need_v4 int32 = 0
  4814  
  4815  	if af == 2 {
  4816  		for i = 0; i < 4; i++ {
  4817  			for v = AssignInt32(&j, 0); j < 3 && func() int32 {
  4818  				if 0 != 0 {
  4819  					return Xisdigit(tls, int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))))
  4820  				}
  4821  				return Bool32(uint32(*(*int8)(unsafe.Pointer(s + uintptr(j))))-uint32('0') < uint32(10))
  4822  			}() != 0; j++ {
  4823  				v = 10*v + int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))) - '0'
  4824  			}
  4825  			if j == 0 || j > 1 && int32(*(*int8)(unsafe.Pointer(s))) == '0' || v > 255 {
  4826  				return 0
  4827  			}
  4828  			*(*uint8)(unsafe.Pointer(a + uintptr(i))) = uint8(v)
  4829  			if int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))) == 0 && i == 3 {
  4830  				return 1
  4831  			}
  4832  			if int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))) != '.' {
  4833  				return 0
  4834  			}
  4835  			s += uintptr(j + 1)
  4836  		}
  4837  		return 0
  4838  	} else if af != 10 {
  4839  		*(*int32)(unsafe.Pointer(X___errno_location(tls))) = 97
  4840  		return -1
  4841  	}
  4842  
  4843  	if int32(*(*int8)(unsafe.Pointer(s))) == ':' && int32(*(*int8)(unsafe.Pointer(PreIncUintptr(&s, 1)))) != ':' {
  4844  		return 0
  4845  	}
  4846  
  4847  	for i = 0; ; i++ {
  4848  		if int32(*(*int8)(unsafe.Pointer(s))) == ':' && brk < 0 {
  4849  			brk = i
  4850  			*(*uint16_t)(unsafe.Pointer(bp + uintptr(i&7)*2)) = uint16_t(0)
  4851  			if !(int32(*(*int8)(unsafe.Pointer(PreIncUintptr(&s, 1)))) != 0) {
  4852  				break
  4853  			}
  4854  			if i == 7 {
  4855  				return 0
  4856  			}
  4857  			continue
  4858  		}
  4859  		for v = AssignInt32(&j, 0); j < 4 && AssignInt32(&d, hexval(tls, uint32(*(*int8)(unsafe.Pointer(s + uintptr(j)))))) >= 0; j++ {
  4860  			v = 16*v + d
  4861  		}
  4862  		if j == 0 {
  4863  			return 0
  4864  		}
  4865  		*(*uint16_t)(unsafe.Pointer(bp + uintptr(i&7)*2)) = uint16_t(v)
  4866  		if !(int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))) != 0) && (brk >= 0 || i == 7) {
  4867  			break
  4868  		}
  4869  		if i == 7 {
  4870  			return 0
  4871  		}
  4872  		if int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))) != ':' {
  4873  			if int32(*(*int8)(unsafe.Pointer(s + uintptr(j)))) != '.' || i < 6 && brk < 0 {
  4874  				return 0
  4875  			}
  4876  			need_v4 = 1
  4877  			i++
  4878  			break
  4879  		}
  4880  		s += uintptr(j + 1)
  4881  	}
  4882  	if brk >= 0 {
  4883  		Xmemmove(tls, bp+uintptr(brk)*2+uintptr(7)*2-uintptr(i)*2, bp+uintptr(brk)*2, uint64(2*(i+1-brk)))
  4884  		for j = 0; j < 7-i; j++ {
  4885  			*(*uint16_t)(unsafe.Pointer(bp + uintptr(brk+j)*2)) = uint16_t(0)
  4886  		}
  4887  	}
  4888  	for j = 0; j < 8; j++ {
  4889  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&a, 1))) = uint8(int32(*(*uint16_t)(unsafe.Pointer(bp + uintptr(j)*2))) >> 8)
  4890  		*(*uint8)(unsafe.Pointer(PostIncUintptr(&a, 1))) = uint8(*(*uint16_t)(unsafe.Pointer(bp + uintptr(j)*2)))
  4891  	}
  4892  	if need_v4 != 0 && Xinet_pton(tls, 2, s, a-uintptr(4)) <= 0 {
  4893  		return 0
  4894  	}
  4895  	return 1
  4896  }
  4897  
  4898  func X__lookup_ipliteral(tls *TLS, buf uintptr, name uintptr, family int32) int32 { /* lookup_ipliteral.c:12:5: */
  4899  	bp := tls.Alloc(96)
  4900  	defer tls.Free(96)
  4901  
  4902  	// var a4 in_addr at bp, 4
  4903  
  4904  	// var a6 in6_addr at bp+68, 16
  4905  
  4906  	if X__inet_aton(tls, name, bp) > 0 {
  4907  		if family == 10 { // wrong family
  4908  			return -2
  4909  		}
  4910  		Xmemcpy(tls, buf+8, bp, uint64(unsafe.Sizeof(in_addr{})))
  4911  		(*address)(unsafe.Pointer(buf)).family = 2
  4912  		(*address)(unsafe.Pointer(buf)).scopeid = uint32(0)
  4913  		return 1
  4914  	}
  4915  	// var tmp [64]int8 at bp+4, 64
  4916  
  4917  	var p uintptr = Xstrchr(tls, name, '%')
  4918  	// var z uintptr at bp+88, 8
  4919  
  4920  	var scopeid uint64 = uint64(0)
  4921  	if p != 0 && (int64(p)-int64(name))/1 < int64(64) {
  4922  		Xmemcpy(tls, bp+4, name, uint64((int64(p)-int64(name))/1))
  4923  		*(*int8)(unsafe.Pointer(bp + 4 + uintptr((int64(p)-int64(name))/1))) = int8(0)
  4924  		name = bp + 4 /* &tmp[0] */
  4925  	}
  4926  
  4927  	if Xinet_pton(tls, 10, name, bp+68) <= 0 {
  4928  		return 0
  4929  	}
  4930  	if family == 2 { // wrong family
  4931  		return -2
  4932  	}
  4933  
  4934  	Xmemcpy(tls, buf+8, bp+68, uint64(unsafe.Sizeof(in6_addr{})))
  4935  	(*address)(unsafe.Pointer(buf)).family = 10
  4936  	if p != 0 {
  4937  		if func() int32 {
  4938  			if 0 != 0 {
  4939  				return Xisdigit(tls, int32(*(*int8)(unsafe.Pointer(PreIncUintptr(&p, 1)))))
  4940  			}
  4941  			return Bool32(uint32(*(*int8)(unsafe.Pointer(PreIncUintptr(&p, 1))))-uint32('0') < uint32(10))
  4942  		}() != 0 {
  4943  			scopeid = Xstrtoull(tls, p, bp+88, 10)
  4944  		} else {
  4945  			*(*uintptr)(unsafe.Pointer(bp + 88 /* z */)) = p - uintptr(1)
  4946  		}
  4947  		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))) != 0 {
  4948  			Xabort(tls) //TODO-
  4949  			// if (!IN6_IS_ADDR_LINKLOCAL(&a6) &&
  4950  			//     !IN6_IS_ADDR_MC_LINKLOCAL(&a6))
  4951  			// 	return EAI_NONAME;
  4952  			// scopeid = if_nametoindex(p);
  4953  			// if (!scopeid) return EAI_NONAME;
  4954  		}
  4955  		if scopeid > uint64(0xffffffff) {
  4956  			return -2
  4957  		}
  4958  	}
  4959  	(*address)(unsafe.Pointer(buf)).scopeid = uint32(scopeid)
  4960  	return 1
  4961  }
  4962  
  4963  func is_valid_hostname(tls *TLS, host uintptr) int32 { /* lookup_name.c:18:12: */
  4964  	var s uintptr
  4965  	//TODO if (strnlen(host, 255)-1 >= 254 || mbstowcs(0, host, 0) == -1) return 0;
  4966  	if Xstrnlen(tls, host, uint64(255))-uint64(1) >= uint64(254) {
  4967  		return 0
  4968  	}
  4969  	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++ {
  4970  	}
  4971  	return BoolInt32(!(*(*uint8)(unsafe.Pointer(s)) != 0))
  4972  }
  4973  
  4974  var Xzero_struct_address address /* lookup_name.c:27:16: */
  4975  
  4976  func name_from_null(tls *TLS, buf uintptr, name uintptr, family int32, flags int32) int32 { /* lookup_name.c:29:12: */
  4977  	var cnt int32 = 0
  4978  	if name != 0 {
  4979  		return 0
  4980  	}
  4981  	if flags&0x01 != 0 {
  4982  		//TODO if (family != AF_INET6)
  4983  		//TODO 	buf[cnt++] = (struct address){ .family = AF_INET };
  4984  		if family != 10 {
  4985  			var x = Xzero_struct_address
  4986  			x.family = 2
  4987  			*(*address)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*28)) = x
  4988  		}
  4989  		//TODO if (family != AF_INET)
  4990  		//TODO 	buf[cnt++] = (struct address){ .family = AF_INET6 };
  4991  		if family != 2 {
  4992  			var x = Xzero_struct_address
  4993  			x.family = 10
  4994  			*(*address)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*28)) = x
  4995  		}
  4996  	} else {
  4997  		Xabort(tls) //TODO-
  4998  		// 	if (family != AF_INET6)
  4999  		// 		buf[cnt++] = (struct address){ .family = AF_INET, .addr = { 127,0,0,1 } };
  5000  		// 	if (family != AF_INET)
  5001  		// 		buf[cnt++] = (struct address){ .family = AF_INET6, .addr = { [15] = 1 } };
  5002  	}
  5003  	return cnt
  5004  }
  5005  
  5006  func name_from_numeric(tls *TLS, buf uintptr, name uintptr, family int32) int32 { /* lookup_name.c:58:12: */
  5007  	return X__lookup_ipliteral(tls, buf, name, family)
  5008  }
  5009  
  5010  func name_from_hosts(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32) int32 { /* lookup_name.c:63:12: */
  5011  	bp := tls.Alloc(512)
  5012  	defer tls.Free(512)
  5013  
  5014  	// var line [512]int8 at bp, 512
  5015  
  5016  	var l size_t = Xstrlen(tls, name)
  5017  	var cnt int32 = 0
  5018  	var badfam int32 = 0
  5019  	var _buf [1032]uint8
  5020  	_ = _buf
  5021  	//TODO FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
  5022  	var _f FILE
  5023  	_ = _f
  5024  	var f uintptr = Xfopen(tls, ts+76, ts+87)
  5025  	if !(f != 0) {
  5026  		switch *(*int32)(unsafe.Pointer(X___errno_location(tls))) {
  5027  		case 2:
  5028  			fallthrough
  5029  		case 20:
  5030  			fallthrough
  5031  		case 13:
  5032  			return 0
  5033  			fallthrough
  5034  		default:
  5035  			return -11
  5036  		}
  5037  	}
  5038  	for Xfgets(tls, bp, int32(unsafe.Sizeof([512]int8{})), f) != 0 && cnt < 48 {
  5039  		var p uintptr
  5040  		var z uintptr
  5041  
  5042  		if AssignUintptr(&p, Xstrchr(tls, bp, '#')) != 0 {
  5043  			*(*int8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = int8('\n')
  5044  			*(*int8)(unsafe.Pointer(p)) = int8(0)
  5045  		}
  5046  		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++ {
  5047  		}
  5048  		if !(p != 0) {
  5049  			continue
  5050  		}
  5051  
  5052  		// Isolate IP address to parse
  5053  		for p = bp; /* &line[0] */ *(*int8)(unsafe.Pointer(p)) != 0 && !(__isspace(tls, int32(*(*int8)(unsafe.Pointer(p)))) != 0); p++ {
  5054  		}
  5055  		*(*int8)(unsafe.Pointer(PostIncUintptr(&p, 1))) = int8(0)
  5056  		switch name_from_numeric(tls, buf+uintptr(cnt)*28, bp, family) {
  5057  		case 1:
  5058  			cnt++
  5059  			break
  5060  		case 0:
  5061  			continue
  5062  		default:
  5063  			badfam = -2
  5064  			continue
  5065  		}
  5066  
  5067  		// Extract first name as canonical name
  5068  		for ; *(*int8)(unsafe.Pointer(p)) != 0 && __isspace(tls, int32(*(*int8)(unsafe.Pointer(p)))) != 0; p++ {
  5069  		}
  5070  		for z = p; *(*int8)(unsafe.Pointer(z)) != 0 && !(__isspace(tls, int32(*(*int8)(unsafe.Pointer(z)))) != 0); z++ {
  5071  		}
  5072  		*(*int8)(unsafe.Pointer(z)) = int8(0)
  5073  		if is_valid_hostname(tls, p) != 0 {
  5074  			Xmemcpy(tls, canon, p, uint64((int64(z)-int64(p))/1+int64(1)))
  5075  		}
  5076  	}
  5077  	//TODO __fclose_ca(f);
  5078  	Xfclose(tls, f)
  5079  	if cnt != 0 {
  5080  		return cnt
  5081  	}
  5082  	return badfam
  5083  }
  5084  
  5085  type dpc_ctx = struct {
  5086  	addrs uintptr
  5087  	canon uintptr
  5088  	cnt   int32
  5089  	_     [4]byte
  5090  } /* lookup_name.c:112:1 */
  5091  
  5092  func name_from_dns_search(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32) int32 { /* lookup_name.c:191:12: */
  5093  	return -1 //TODO-
  5094  	Xabort(tls)
  5095  	return int32(0) //TODO-
  5096  	// char search[256];
  5097  	// struct resolvconf conf;
  5098  	// size_t l, dots;
  5099  	// char *p, *z;
  5100  
  5101  	// if (__get_resolv_conf(&conf, search, sizeof search) < 0) return -1;
  5102  
  5103  	// /* Count dots, suppress search when >=ndots or name ends in
  5104  	//  * a dot, which is an explicit request for global scope. */
  5105  	// for (dots=l=0; name[l]; l++) if (name[l]=='.') dots++;
  5106  	// if (dots >= conf.ndots || name[l-1]=='.') *search = 0;
  5107  
  5108  	// /* Strip final dot for canon, fail if multiple trailing dots. */
  5109  	// if (name[l-1]=='.') l--;
  5110  	// if (!l || name[l-1]=='.') return EAI_NONAME;
  5111  
  5112  	// /* This can never happen; the caller already checked length. */
  5113  	// if (l >= 256) return EAI_NONAME;
  5114  
  5115  	// /* Name with search domain appended is setup in canon[]. This both
  5116  	//  * provides the desired default canonical name (if the requested
  5117  	//  * name is not a CNAME record) and serves as a buffer for passing
  5118  	//  * the full requested name to name_from_dns. */
  5119  	// memcpy(canon, name, l);
  5120  	// canon[l] = '.';
  5121  
  5122  	// for (p=search; *p; p=z) {
  5123  	// 	for (; isspace(*p); p++);
  5124  	// 	for (z=p; *z && !isspace(*z); z++);
  5125  	// 	if (z==p) break;
  5126  	// 	if (z-p < 256 - l - 1) {
  5127  	// 		memcpy(canon+l+1, p, z-p);
  5128  	// 		canon[z-p+1+l] = 0;
  5129  	// 		int cnt = name_from_dns(buf, canon, canon, family, &conf);
  5130  	// 		if (cnt) return cnt;
  5131  	// 	}
  5132  	// }
  5133  
  5134  	// canon[l] = 0;
  5135  	// return name_from_dns(buf, canon, name, family, &conf);
  5136  }
  5137  
  5138  type policy = struct {
  5139  	addr  [16]uint8
  5140  	len   uint8
  5141  	mask  uint8
  5142  	prec  uint8
  5143  	label uint8
  5144  } /* lookup_name.c:237:14 */
  5145  
  5146  var defpolicy = [6]policy{
  5147  	{addr: *(*[16]uint8)(unsafe.Pointer(ts + 172)), len: uint8(15), mask: uint8(0xff), prec: uint8(50)},
  5148  	{addr: *(*[16]uint8)(unsafe.Pointer(ts + 189)), len: uint8(11), mask: uint8(0xff), prec: uint8(35), label: uint8(4)},
  5149  	{addr: *(*[16]uint8)(unsafe.Pointer(ts + 205)), len: uint8(1), mask: uint8(0xff), prec: uint8(30), label: uint8(2)},
  5150  	{addr: *(*[16]uint8)(unsafe.Pointer(ts + 221)), len: uint8(3), mask: uint8(0xff), prec: uint8(5), label: uint8(5)},
  5151  	{addr: *(*[16]uint8)(unsafe.Pointer(ts + 237)), mask: uint8(0xfe), prec: uint8(3), label: uint8(13)},
  5152  	// Last rule must match all addresses to stop loop.
  5153  	{addr: *(*[16]uint8)(unsafe.Pointer(ts + 253)), prec: uint8(40), label: uint8(1)},
  5154  } /* lookup_name.c:241:3 */
  5155  
  5156  func policyof(tls *TLS, a uintptr) uintptr { /* lookup_name.c:259:28: */
  5157  	var i int32
  5158  	for i = 0; ; i++ {
  5159  		if Xmemcmp(tls, a, uintptr(unsafe.Pointer(&defpolicy))+uintptr(i)*20, uint64(defpolicy[i].len)) != 0 {
  5160  			continue
  5161  		}
  5162  		if int32(*(*uint8_t)(unsafe.Pointer(a + uintptr(defpolicy[i].len))))&int32(defpolicy[i].mask) !=
  5163  			int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&defpolicy)) + uintptr(i)*20 + uintptr(defpolicy[i].len)))) {
  5164  			continue
  5165  		}
  5166  		return uintptr(unsafe.Pointer(&defpolicy)) + uintptr(i)*20
  5167  	}
  5168  	return uintptr(0)
  5169  }
  5170  
  5171  func labelof(tls *TLS, a uintptr) int32 { /* lookup_name.c:272:12: */
  5172  	return int32((*policy)(unsafe.Pointer(policyof(tls, a))).label)
  5173  }
  5174  
  5175  func scopeof(tls *TLS, a uintptr) int32 { /* lookup_name.c:277:12: */
  5176  	if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xff {
  5177  		return int32(*(*uint8_t)(unsafe.Pointer(a + 1))) & 15
  5178  	}
  5179  	if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xfe && int32(*(*uint8_t)(unsafe.Pointer(a + 1)))&0xc0 == 0x80 {
  5180  		return 2
  5181  	}
  5182  	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 {
  5183  		return 2
  5184  	}
  5185  	if int32(*(*uint8_t)(unsafe.Pointer(a))) == 0xfe && int32(*(*uint8_t)(unsafe.Pointer(a + 1)))&0xc0 == 0xc0 {
  5186  		return 5
  5187  	}
  5188  	return 14
  5189  }
  5190  
  5191  func prefixmatch(tls *TLS, s uintptr, d uintptr) int32 { /* lookup_name.c:286:12: */
  5192  	// FIXME: The common prefix length should be limited to no greater
  5193  	// than the nominal length of the prefix portion of the source
  5194  	// address. However the definition of the source prefix length is
  5195  	// not clear and thus this limiting is not yet implemented.
  5196  	var i uint32
  5197  	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++ {
  5198  	}
  5199  	return int32(i)
  5200  }
  5201  
  5202  func addrcmp(tls *TLS, _a uintptr, _b uintptr) int32 { /* lookup_name.c:305:12: */
  5203  	var a uintptr = _a
  5204  	var b uintptr = _b
  5205  	return (*address)(unsafe.Pointer(b)).sortkey - (*address)(unsafe.Pointer(a)).sortkey
  5206  }
  5207  
  5208  func X__lookup_name(tls *TLS, buf uintptr, canon uintptr, name uintptr, family int32, flags int32) int32 { /* lookup_name.c:311:5: */
  5209  	bp := tls.Alloc(92)
  5210  	defer tls.Free(92)
  5211  
  5212  	var cnt int32 = 0
  5213  	var i int32
  5214  	var j int32
  5215  	_ = j
  5216  
  5217  	*(*int8)(unsafe.Pointer(canon)) = int8(0)
  5218  	if name != 0 {
  5219  		// reject empty name and check len so it fits into temp bufs
  5220  		var l size_t = Xstrnlen(tls, name, uint64(255))
  5221  		if l-uint64(1) >= uint64(254) {
  5222  			return -2
  5223  		}
  5224  		Xmemcpy(tls, canon, name, l+uint64(1))
  5225  	}
  5226  
  5227  	// Procedurally, a request for v6 addresses with the v4-mapped
  5228  	// flag set is like a request for unspecified family, followed
  5229  	// by filtering of the results.
  5230  	if flags&0x08 != 0 {
  5231  		if family == 10 {
  5232  			family = 0
  5233  		} else {
  5234  			flags = flags - 0x08
  5235  		}
  5236  	}
  5237  
  5238  	// Try each backend until there's at least one result.
  5239  	cnt = name_from_null(tls, buf, name, family, flags)
  5240  	if !(cnt != 0) {
  5241  		cnt = name_from_numeric(tls, buf, name, family)
  5242  	}
  5243  	if !(cnt != 0) && !(flags&0x04 != 0) {
  5244  		cnt = name_from_hosts(tls, buf, canon, name, family)
  5245  		if !(cnt != 0) {
  5246  			cnt = name_from_dns_search(tls, buf, canon, name, family)
  5247  		}
  5248  	}
  5249  	if cnt <= 0 {
  5250  		if cnt != 0 {
  5251  			return cnt
  5252  		}
  5253  		return -2
  5254  	}
  5255  
  5256  	// Filter/transform results for v4-mapped lookup, if requested.
  5257  	if flags&0x08 != 0 {
  5258  		Xabort(tls) //TODO-
  5259  		// 	if (!(flags & AI_ALL)) {
  5260  		// 		/* If any v6 results exist, remove v4 results. */
  5261  		// 		for (i=0; i<cnt && buf[i].family != AF_INET6; i++);
  5262  		// 		if (i<cnt) {
  5263  		// 			for (j=0; i<cnt; i++) {
  5264  		// 				if (buf[i].family == AF_INET6)
  5265  		// 					buf[j++] = buf[i];
  5266  		// 			}
  5267  		// 			cnt = i = j;
  5268  		// 		}
  5269  		// 	}
  5270  		// 	/* Translate any remaining v4 results to v6 */
  5271  		// 	for (i=0; i<cnt; i++) {
  5272  		// 		if (buf[i].family != AF_INET) continue;
  5273  		// 		memcpy(buf[i].addr+12, buf[i].addr, 4);
  5274  		// 		memcpy(buf[i].addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
  5275  		// 		buf[i].family = AF_INET6;
  5276  		// 	}
  5277  	}
  5278  
  5279  	// No further processing is needed if there are fewer than 2
  5280  	// results or if there are only IPv4 results.
  5281  	if cnt < 2 || family == 2 {
  5282  		return cnt
  5283  	}
  5284  	for i = 0; i < cnt; i++ {
  5285  		if (*address)(unsafe.Pointer(buf+uintptr(i)*28)).family != 2 {
  5286  			break
  5287  		}
  5288  	}
  5289  	if i == cnt {
  5290  		return cnt
  5291  	}
  5292  	var cs int32
  5293  	_ = cs
  5294  	//TODO pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
  5295  
  5296  	// The following implements a subset of RFC 3484/6724 destination
  5297  	// address selection by generating a single 31-bit sort key for
  5298  	// each address. Rules 3, 4, and 7 are omitted for having
  5299  	// excessive runtime and code size cost and dubious benefit.
  5300  	// So far the label/precedence table cannot be customized.
  5301  	for i = 0; i < cnt; i++ {
  5302  		var family int32 = (*address)(unsafe.Pointer(buf + uintptr(i)*28)).family
  5303  		var key int32 = 0
  5304  		*(*sockaddr_in6)(unsafe.Pointer(bp + 28 /* sa6 */)) = sockaddr_in6{}
  5305  		*(*sockaddr_in6)(unsafe.Pointer(bp /* da6 */)) = sockaddr_in6{sin6_family: sa_family_t(10), sin6_port: in_port_t(65535), sin6_scope_id: (*address)(unsafe.Pointer(buf + uintptr(i)*28)).scopeid}
  5306  		*(*sockaddr_in)(unsafe.Pointer(bp + 72 /* sa4 */)) = sockaddr_in{}
  5307  		*(*sockaddr_in)(unsafe.Pointer(bp + 56 /* da4 */)) = sockaddr_in{sin_family: sa_family_t(2), sin_port: in_port_t(65535)}
  5308  		var sa1 uintptr
  5309  		var da uintptr
  5310  		// var salen socklen_t at bp+88, 4
  5311  
  5312  		var dalen socklen_t
  5313  		if family == 10 {
  5314  			Xmemcpy(tls, bp+8, buf+uintptr(i)*28+8, uint64(16))
  5315  			da = bp /* &da6 */
  5316  			dalen = socklen_t(unsafe.Sizeof(sockaddr_in6{}))
  5317  			sa1 = bp + 28 /* &sa6 */
  5318  			*(*socklen_t)(unsafe.Pointer(bp + 88 /* salen */)) = socklen_t(unsafe.Sizeof(sockaddr_in6{}))
  5319  		} else {
  5320  			Xmemcpy(tls, bp+28+8,
  5321  				ts+90, uint64(12))
  5322  			Xmemcpy(tls, bp+8+uintptr(12), buf+uintptr(i)*28+8, uint64(4))
  5323  			Xmemcpy(tls, bp+8,
  5324  				ts+90, uint64(12))
  5325  			Xmemcpy(tls, bp+8+uintptr(12), buf+uintptr(i)*28+8, uint64(4))
  5326  			Xmemcpy(tls, bp+56+4, buf+uintptr(i)*28+8, uint64(4))
  5327  			da = bp + 56 /* &da4 */
  5328  			dalen = socklen_t(unsafe.Sizeof(sockaddr_in{}))
  5329  			sa1 = bp + 72 /* &sa4 */
  5330  			*(*socklen_t)(unsafe.Pointer(bp + 88 /* salen */)) = socklen_t(unsafe.Sizeof(sockaddr_in{}))
  5331  		}
  5332  		var dpolicy uintptr = policyof(tls, bp+8)
  5333  		var dscope int32 = scopeof(tls, bp+8)
  5334  		var dlabel int32 = int32((*policy)(unsafe.Pointer(dpolicy)).label)
  5335  		var dprec int32 = int32((*policy)(unsafe.Pointer(dpolicy)).prec)
  5336  		var prefixlen int32 = 0
  5337  		var fd int32 = Xsocket(tls, family, 2|02000000, 17)
  5338  		if fd >= 0 {
  5339  			if !(Xconnect(tls, fd, da, dalen) != 0) {
  5340  				key = key | 0x40000000
  5341  				if !(Xgetsockname(tls, fd, sa1, bp+88) != 0) {
  5342  					if family == 2 {
  5343  						Xmemcpy(tls,
  5344  							bp+28+8+uintptr(12),
  5345  							bp+72+4, uint64(4))
  5346  					}
  5347  					if dscope == scopeof(tls, bp+28+8) {
  5348  						key = key | 0x20000000
  5349  					}
  5350  					if dlabel == labelof(tls, bp+28+8) {
  5351  						key = key | 0x10000000
  5352  					}
  5353  					prefixlen = prefixmatch(tls, bp+28+8,
  5354  						bp+8)
  5355  				}
  5356  			}
  5357  			Xclose(tls, fd)
  5358  		}
  5359  		key = key | dprec<<20
  5360  		key = key | (15-dscope)<<16
  5361  		key = key | prefixlen<<8
  5362  		key = key | (48-i)<<0
  5363  		(*address)(unsafe.Pointer(buf + uintptr(i)*28)).sortkey = key
  5364  	}
  5365  	Xqsort(tls, buf, uint64(cnt), uint64(unsafe.Sizeof(address{})), *(*uintptr)(unsafe.Pointer(&struct {
  5366  		f func(*TLS, uintptr, uintptr) int32
  5367  	}{addrcmp})))
  5368  
  5369  	//TODO pthread_setcancelstate(cs, 0);
  5370  
  5371  	return cnt
  5372  }
  5373  
  5374  func X__lookup_serv(tls *TLS, buf uintptr, name uintptr, proto int32, socktype int32, flags int32) int32 { /* lookup_serv.c:12:5: */
  5375  	bp := tls.Alloc(8)
  5376  	defer tls.Free(8)
  5377  
  5378  	var line [128]int8
  5379  	_ = line
  5380  	var cnt int32 = 0
  5381  	var p uintptr
  5382  	_ = p
  5383  	*(*uintptr)(unsafe.Pointer(bp /* z */)) = ts + 13 /* "" */
  5384  	var port uint64 = uint64(0)
  5385  
  5386  	switch socktype {
  5387  	case 1:
  5388  		switch proto {
  5389  		case 0:
  5390  			proto = 6
  5391  			fallthrough
  5392  		case 6:
  5393  			break
  5394  		default:
  5395  			return -8
  5396  		}
  5397  		break
  5398  	case 2:
  5399  		switch proto {
  5400  		case 0:
  5401  			proto = 17
  5402  			fallthrough
  5403  		case 17:
  5404  			break
  5405  		default:
  5406  			return -8
  5407  		}
  5408  		fallthrough
  5409  	case 0:
  5410  		break
  5411  	default:
  5412  		if name != 0 {
  5413  			return -8
  5414  		}
  5415  		(*service)(unsafe.Pointer(buf)).port = uint16_t(0)
  5416  		(*service)(unsafe.Pointer(buf)).proto = uint8(proto)
  5417  		(*service)(unsafe.Pointer(buf)).socktype = uint8(socktype)
  5418  		return 1
  5419  	}
  5420  
  5421  	if name != 0 {
  5422  		if !(int32(*(*int8)(unsafe.Pointer(name))) != 0) {
  5423  			return -8
  5424  		}
  5425  		port = Xstrtoul(tls, name, bp, 10)
  5426  	}
  5427  	if !(int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))) != 0) {
  5428  		if port > uint64(65535) {
  5429  			return -8
  5430  		}
  5431  		if proto != 17 {
  5432  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).port = uint16_t(port)
  5433  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).socktype = uint8(1)
  5434  			(*service)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*4)).proto = uint8(6)
  5435  		}
  5436  		if proto != 6 {
  5437  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).port = uint16_t(port)
  5438  			(*service)(unsafe.Pointer(buf + uintptr(cnt)*4)).socktype = uint8(2)
  5439  			(*service)(unsafe.Pointer(buf + uintptr(PostIncInt32(&cnt, 1))*4)).proto = uint8(17)
  5440  		}
  5441  		return cnt
  5442  	}
  5443  
  5444  	if flags&0x400 != 0 {
  5445  		return -2
  5446  	}
  5447  
  5448  	var l size_t = Xstrlen(tls, name)
  5449  	_ = l
  5450  
  5451  	Xabort(tls) //TODO-
  5452  	// unsigned char _buf[1032];
  5453  	// FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
  5454  	// if (!f) switch (errno) {
  5455  	// case ENOENT:
  5456  	// case ENOTDIR:
  5457  	// case EACCES:
  5458  	// 	return EAI_SERVICE;
  5459  	// default:
  5460  	// 	return EAI_SYSTEM;
  5461  	// }
  5462  
  5463  	Xabort(tls) //TODO-
  5464  	// while (fgets(line, sizeof line, f) && cnt < MAXSERVS) {
  5465  	// 	if ((p=strchr(line, '#'))) *p++='\n', *p=0;
  5466  
  5467  	// 	/* Find service name */
  5468  	// 	for(p=line; (p=strstr(p, name)); p++) {
  5469  	// 		if (p>line && !isspace(p[-1])) continue;
  5470  	// 		if (p[l] && !isspace(p[l])) continue;
  5471  	// 		break;
  5472  	// 	}
  5473  	// 	if (!p) continue;
  5474  
  5475  	// 	/* Skip past canonical name at beginning of line */
  5476  	// 	for (p=line; *p && !isspace(*p); p++);
  5477  
  5478  	// 	port = strtoul(p, &z, 10);
  5479  	// 	if (port > 65535 || z==p) continue;
  5480  	// 	if (!strncmp(z, "/udp", 4)) {
  5481  	// 		if (proto == IPPROTO_TCP) continue;
  5482  	// 		buf[cnt].port = port;
  5483  	// 		buf[cnt].socktype = SOCK_DGRAM;
  5484  	// 		buf[cnt++].proto = IPPROTO_UDP;
  5485  	// 	}
  5486  	// 	if (!strncmp(z, "/tcp", 4)) {
  5487  	// 		if (proto == IPPROTO_UDP) continue;
  5488  	// 		buf[cnt].port = port;
  5489  	// 		buf[cnt].socktype = SOCK_STREAM;
  5490  	// 		buf[cnt++].proto = IPPROTO_TCP;
  5491  	// 	}
  5492  	// }
  5493  	// __fclose_ca(f);
  5494  	// return cnt > 0 ? cnt : EAI_SERVICE;
  5495  	Xabort(tls)
  5496  	return int32(0) //TODO-
  5497  }
  5498  
  5499  func temper(tls *TLS, x uint32) uint32 { /* rand_r.c:3:17: */
  5500  	x = x ^ x>>11
  5501  	x = x ^ x<<7&0x9D2C5680
  5502  	x = x ^ x<<15&0xEFC60000
  5503  	x = x ^ x>>18
  5504  	return x
  5505  }
  5506  
  5507  func Xrand_r(tls *TLS, seed uintptr) int32 { /* rand_r.c:12:5: */
  5508  	return int32(temper(tls, AssignPtrUint32(seed, *(*uint32)(unsafe.Pointer(seed))*uint32(1103515245)+uint32(12345))) / uint32(2))
  5509  }
  5510  
  5511  func X__lockfile(tls *TLS, f uintptr) int32 { /* __lockfile.c:4:5: */
  5512  	var owner int32 = (*FILE)(unsafe.Pointer(f)).lock
  5513  	var tid int32 = (*__pthread)(unsafe.Pointer(__pthread_self(tls))).tid
  5514  	if owner&CplInt32(0x40000000) == tid {
  5515  		return 0
  5516  	}
  5517  	owner = a_cas(tls, f+140, 0, tid)
  5518  	if !(owner != 0) {
  5519  		return 1
  5520  	}
  5521  	for AssignInt32(&owner, a_cas(tls, f+140, 0, tid|0x40000000)) != 0 {
  5522  		if owner&0x40000000 != 0 || a_cas(tls, f+140, owner, owner|0x40000000) == owner {
  5523  			__futexwait(tls, f+140, owner|0x40000000, 1)
  5524  		}
  5525  	}
  5526  	return 1
  5527  }
  5528  
  5529  func X__unlockfile(tls *TLS, f uintptr) { /* __lockfile.c:19:6: */
  5530  	if a_swap(tls, f+140, 0)&0x40000000 != 0 {
  5531  		__wake(tls, f+140, 1, 1)
  5532  	}
  5533  }
  5534  
  5535  func X__toread(tls *TLS, f uintptr) int32 { /* __toread.c:3:5: */
  5536  	*(*int32)(unsafe.Pointer(f + 136)) |= (*FILE)(unsafe.Pointer(f)).mode - 1
  5537  	if (*FILE)(unsafe.Pointer(f)).wpos != (*FILE)(unsafe.Pointer(f)).wbase {
  5538  		(*struct {
  5539  			f func(*TLS, uintptr, uintptr, size_t) size_t
  5540  		})(unsafe.Pointer(&struct{ uintptr }{(*FILE)(unsafe.Pointer(f)).write})).f(tls, f, uintptr(0), uint64(0))
  5541  	}
  5542  	(*FILE)(unsafe.Pointer(f)).wpos = AssignPtrUintptr(f+56, AssignPtrUintptr(f+32, uintptr(0)))
  5543  	if (*FILE)(unsafe.Pointer(f)).flags&uint32(4) != 0 {
  5544  		*(*uint32)(unsafe.Pointer(f)) |= uint32(32)
  5545  		return -1
  5546  	}
  5547  	(*FILE)(unsafe.Pointer(f)).rpos = AssignPtrUintptr(f+16, (*FILE)(unsafe.Pointer(f)).buf+uintptr((*FILE)(unsafe.Pointer(f)).buf_size))
  5548  	if (*FILE)(unsafe.Pointer(f)).flags&uint32(16) != 0 {
  5549  		return -1
  5550  	}
  5551  	return 0
  5552  }
  5553  
  5554  func X__toread_needs_stdio_exit(tls *TLS) { /* __toread.c:16:13: */
  5555  	X__builtin_abort(tls) //TODO-
  5556  	// __stdio_exit_needed();
  5557  }
  5558  
  5559  // This function assumes it will never be called if there is already
  5560  // data buffered for reading.
  5561  
  5562  func X__uflow(tls *TLS, f uintptr) int32 { /* __uflow.c:6:5: */
  5563  	bp := tls.Alloc(1)
  5564  	defer tls.Free(1)
  5565  
  5566  	// var c uint8 at bp, 1
  5567  
  5568  	if !(X__toread(tls, f) != 0) && (*struct {
  5569  		f func(*TLS, uintptr, uintptr, size_t) size_t
  5570  	})(unsafe.Pointer(&struct{ uintptr }{(*FILE)(unsafe.Pointer(f)).read})).f(tls, f, bp, uint64(1)) == uint64(1) {
  5571  		return int32(*(*uint8)(unsafe.Pointer(bp)))
  5572  	}
  5573  	return -1
  5574  }
  5575  
  5576  func Xsscanf(tls *TLS, s uintptr, fmt uintptr, va uintptr) int32 { /* sscanf.c:4:5: */
  5577  	var ret int32
  5578  	var ap va_list
  5579  	_ = ap
  5580  	ap = va
  5581  	ret = Xvsscanf(tls, s, fmt, ap)
  5582  	_ = ap
  5583  	return ret
  5584  }
  5585  
  5586  type wctrans_t = uintptr /* wctype.h:20:19 */
  5587  
  5588  func store_int(tls *TLS, dest uintptr, size int32, i uint64) { /* vfscanf.c:22:13: */
  5589  	if !(dest != 0) {
  5590  		return
  5591  	}
  5592  	switch size {
  5593  	case -2:
  5594  		*(*int8)(unsafe.Pointer(dest)) = int8(i)
  5595  		break
  5596  	case -1:
  5597  		*(*int16)(unsafe.Pointer(dest)) = int16(i)
  5598  		break
  5599  	case 0:
  5600  		*(*int32)(unsafe.Pointer(dest)) = int32(i)
  5601  		break
  5602  	case 1:
  5603  		*(*int64)(unsafe.Pointer(dest)) = int64(i)
  5604  		break
  5605  	case 3:
  5606  		*(*int64)(unsafe.Pointer(dest)) = int64(i)
  5607  		break
  5608  	}
  5609  }
  5610  
  5611  func arg_n(tls *TLS, ap va_list, n uint32) uintptr { /* vfscanf.c:44:13: */
  5612  	var p uintptr
  5613  	var i uint32
  5614  	var ap2 va_list
  5615  	_ = ap2
  5616  	ap2 = ap
  5617  	for i = n; i > uint32(1); i-- {
  5618  		VaUintptr(&ap2)
  5619  	}
  5620  	p = VaUintptr(&ap2)
  5621  	_ = ap2
  5622  	return p
  5623  }
  5624  
  5625  func Xvfscanf(tls *TLS, f uintptr, fmt uintptr, ap va_list) int32 { /* vfscanf.c:56:5: */
  5626  	bp := tls.Alloc(276)
  5627  	defer tls.Free(276)
  5628  
  5629  	var width int32
  5630  	var size int32
  5631  	var alloc int32
  5632  	var base int32
  5633  	var p uintptr
  5634  	var c int32
  5635  	var t int32
  5636  	var s uintptr
  5637  	var wcs uintptr
  5638  	// var st mbstate_t at bp+268, 8
  5639  
  5640  	var dest uintptr
  5641  	var invert int32
  5642  	var matches int32
  5643  	var x uint64
  5644  	var y float64
  5645  	var pos off_t
  5646  	// var scanset [257]uint8 at bp, 257
  5647  
  5648  	var i size_t
  5649  	var k size_t
  5650  	// var wc wchar_t at bp+260, 4
  5651  
  5652  	var __need_unlock int32
  5653  	var tmp uintptr
  5654  	var tmp1 uintptr
  5655  	alloc = 0
  5656  	dest = uintptr(0)
  5657  	matches = 0
  5658  	pos = int64(0)
  5659  	__need_unlock = func() int32 {
  5660  		if (*FILE)(unsafe.Pointer(f)).lock >= 0 {
  5661  			return X__lockfile(tls, f)
  5662  		}
  5663  		return 0
  5664  	}()
  5665  
  5666  	if !!(int32((*FILE)(unsafe.Pointer(f)).rpos) != 0) {
  5667  		goto __1
  5668  	}
  5669  	X__toread(tls, f)
  5670  __1:
  5671  	;
  5672  	if !!(int32((*FILE)(unsafe.Pointer(f)).rpos) != 0) {
  5673  		goto __2
  5674  	}
  5675  	goto input_fail
  5676  __2:
  5677  	;
  5678  
  5679  	p = fmt
  5680  __3:
  5681  	if !(*(*uint8)(unsafe.Pointer(p)) != 0) {
  5682  		goto __5
  5683  	}
  5684  
  5685  	alloc = 0
  5686  
  5687  	if !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p)))) != 0) {
  5688  		goto __6
  5689  	}
  5690  __7:
  5691  	if !(__isspace(tls, int32(*(*uint8)(unsafe.Pointer(p + 1)))) != 0) {
  5692  		goto __8
  5693  	}
  5694  	p++
  5695  	goto __7
  5696  __8:
  5697  	;
  5698  	X__shlim(tls, f, int64(0))
  5699  __9:
  5700  	if !(__isspace(tls, func() int32 {
  5701  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  5702  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  5703  		}
  5704  		return X__shgetc(tls, f)
  5705  	}()) != 0) {
  5706  		goto __10
  5707  	}
  5708  	goto __9
  5709  __10:
  5710  	;
  5711  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  5712  		(*FILE)(unsafe.Pointer(f)).rpos--
  5713  	} else {
  5714  	}
  5715  	pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
  5716  	goto __4
  5717  __6:
  5718  	;
  5719  	if !(int32(*(*uint8)(unsafe.Pointer(p))) != '%' || int32(*(*uint8)(unsafe.Pointer(p + 1))) == '%') {
  5720  		goto __11
  5721  	}
  5722  	X__shlim(tls, f, int64(0))
  5723  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == '%') {
  5724  		goto __12
  5725  	}
  5726  	p++
  5727  __14:
  5728  	if !(__isspace(tls, AssignInt32(&c, func() int32 {
  5729  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  5730  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  5731  		}
  5732  		return X__shgetc(tls, f)
  5733  	}())) != 0) {
  5734  		goto __15
  5735  	}
  5736  	goto __14
  5737  __15:
  5738  	;
  5739  	goto __13
  5740  __12:
  5741  	c = func() int32 {
  5742  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  5743  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  5744  		}
  5745  		return X__shgetc(tls, f)
  5746  	}()
  5747  __13:
  5748  	;
  5749  	if !(c != int32(*(*uint8)(unsafe.Pointer(p)))) {
  5750  		goto __16
  5751  	}
  5752  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  5753  		(*FILE)(unsafe.Pointer(f)).rpos--
  5754  	} else {
  5755  	}
  5756  	if !(c < 0) {
  5757  		goto __17
  5758  	}
  5759  	goto input_fail
  5760  __17:
  5761  	;
  5762  	goto match_fail
  5763  __16:
  5764  	;
  5765  	pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
  5766  	goto __4
  5767  __11:
  5768  	;
  5769  
  5770  	p++
  5771  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == '*') {
  5772  		goto __18
  5773  	}
  5774  	dest = uintptr(0)
  5775  	p++
  5776  	goto __19
  5777  __18:
  5778  	if !(func() int32 {
  5779  		if 0 != 0 {
  5780  			return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(p))))
  5781  		}
  5782  		return Bool32(uint32(*(*uint8)(unsafe.Pointer(p)))-uint32('0') < uint32(10))
  5783  	}() != 0 && int32(*(*uint8)(unsafe.Pointer(p + 1))) == '$') {
  5784  		goto __20
  5785  	}
  5786  	dest = arg_n(tls, ap, uint32(int32(*(*uint8)(unsafe.Pointer(p)))-'0'))
  5787  	p += uintptr(2)
  5788  	goto __21
  5789  __20:
  5790  	dest = VaUintptr(&ap)
  5791  __21:
  5792  	;
  5793  __19:
  5794  	;
  5795  
  5796  	width = 0
  5797  __22:
  5798  	if !(func() int32 {
  5799  		if 0 != 0 {
  5800  			return Xisdigit(tls, int32(*(*uint8)(unsafe.Pointer(p))))
  5801  		}
  5802  		return Bool32(uint32(*(*uint8)(unsafe.Pointer(p)))-uint32('0') < uint32(10))
  5803  	}() != 0) {
  5804  		goto __24
  5805  	}
  5806  	width = 10*width + int32(*(*uint8)(unsafe.Pointer(p))) - '0'
  5807  	goto __23
  5808  __23:
  5809  	p++
  5810  	goto __22
  5811  	goto __24
  5812  __24:
  5813  	;
  5814  
  5815  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == 'm') {
  5816  		goto __25
  5817  	}
  5818  	wcs = uintptr(0)
  5819  	s = uintptr(0)
  5820  	alloc = BoolInt32(!!(dest != 0))
  5821  	p++
  5822  	goto __26
  5823  __25:
  5824  	alloc = 0
  5825  __26:
  5826  	;
  5827  
  5828  	size = 0
  5829  	switch int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1)))) {
  5830  	case 'h':
  5831  		goto __28
  5832  	case 'l':
  5833  		goto __29
  5834  	case 'j':
  5835  		goto __30
  5836  	case 'z':
  5837  		goto __31
  5838  	case 't':
  5839  		goto __32
  5840  	case 'L':
  5841  		goto __33
  5842  	case 'd':
  5843  		goto __34
  5844  	case 'i':
  5845  		goto __35
  5846  	case 'o':
  5847  		goto __36
  5848  	case 'u':
  5849  		goto __37
  5850  	case 'x':
  5851  		goto __38
  5852  	case 'a':
  5853  		goto __39
  5854  	case 'e':
  5855  		goto __40
  5856  	case 'f':
  5857  		goto __41
  5858  	case 'g':
  5859  		goto __42
  5860  	case 'A':
  5861  		goto __43
  5862  	case 'E':
  5863  		goto __44
  5864  	case 'F':
  5865  		goto __45
  5866  	case 'G':
  5867  		goto __46
  5868  	case 'X':
  5869  		goto __47
  5870  	case 's':
  5871  		goto __48
  5872  	case 'c':
  5873  		goto __49
  5874  	case '[':
  5875  		goto __50
  5876  	case 'S':
  5877  		goto __51
  5878  	case 'C':
  5879  		goto __52
  5880  	case 'p':
  5881  		goto __53
  5882  	case 'n':
  5883  		goto __54
  5884  	default:
  5885  		goto __55
  5886  	}
  5887  	goto __27
  5888  __28:
  5889  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == 'h') {
  5890  		goto __56
  5891  	}
  5892  	p++
  5893  	size = -2
  5894  	goto __57
  5895  __56:
  5896  	size = -1
  5897  __57:
  5898  	;
  5899  	goto __27
  5900  __29:
  5901  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == 'l') {
  5902  		goto __58
  5903  	}
  5904  	p++
  5905  	size = 3
  5906  	goto __59
  5907  __58:
  5908  	size = 1
  5909  __59:
  5910  	;
  5911  	goto __27
  5912  __30:
  5913  	size = 3
  5914  	goto __27
  5915  __31:
  5916  __32:
  5917  	size = 1
  5918  	goto __27
  5919  __33:
  5920  	size = 2
  5921  	goto __27
  5922  __34:
  5923  __35:
  5924  __36:
  5925  __37:
  5926  __38:
  5927  __39:
  5928  __40:
  5929  __41:
  5930  __42:
  5931  __43:
  5932  __44:
  5933  __45:
  5934  __46:
  5935  __47:
  5936  __48:
  5937  __49:
  5938  __50:
  5939  __51:
  5940  __52:
  5941  __53:
  5942  __54:
  5943  	p--
  5944  	goto __27
  5945  __55:
  5946  	goto fmt_fail
  5947  __27:
  5948  	;
  5949  
  5950  	t = int32(*(*uint8)(unsafe.Pointer(p)))
  5951  
  5952  	// C or S
  5953  	if !(t&0x2f == 3) {
  5954  		goto __60
  5955  	}
  5956  	t = t | 32
  5957  	size = 1
  5958  __60:
  5959  	;
  5960  
  5961  	switch t {
  5962  	case 'c':
  5963  		goto __62
  5964  	case '[':
  5965  		goto __63
  5966  	case 'n':
  5967  		goto __64
  5968  	default:
  5969  		goto __65
  5970  	}
  5971  	goto __61
  5972  __62:
  5973  	if !(width < 1) {
  5974  		goto __66
  5975  	}
  5976  	width = 1
  5977  __66:
  5978  	;
  5979  __63:
  5980  	goto __61
  5981  __64:
  5982  	store_int(tls, dest, size, uint64(pos))
  5983  	// do not increment match count, etc!
  5984  	goto __4
  5985  __65:
  5986  	X__shlim(tls, f, int64(0))
  5987  __67:
  5988  	if !(__isspace(tls, func() int32 {
  5989  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  5990  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  5991  		}
  5992  		return X__shgetc(tls, f)
  5993  	}()) != 0) {
  5994  		goto __68
  5995  	}
  5996  	goto __67
  5997  __68:
  5998  	;
  5999  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  6000  		(*FILE)(unsafe.Pointer(f)).rpos--
  6001  	} else {
  6002  	}
  6003  	pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
  6004  __61:
  6005  	;
  6006  
  6007  	X__shlim(tls, f, int64(width))
  6008  	if !(func() int32 {
  6009  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  6010  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  6011  		}
  6012  		return X__shgetc(tls, f)
  6013  	}() < 0) {
  6014  		goto __69
  6015  	}
  6016  	goto input_fail
  6017  __69:
  6018  	;
  6019  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  6020  		(*FILE)(unsafe.Pointer(f)).rpos--
  6021  	} else {
  6022  	}
  6023  
  6024  	switch t {
  6025  	case 's':
  6026  		goto __71
  6027  	case 'c':
  6028  		goto __72
  6029  	case '[':
  6030  		goto __73
  6031  	case 'p':
  6032  		goto __74
  6033  	case 'X':
  6034  		goto __75
  6035  	case 'x':
  6036  		goto __76
  6037  	case 'o':
  6038  		goto __77
  6039  	case 'd':
  6040  		goto __78
  6041  	case 'u':
  6042  		goto __79
  6043  	case 'i':
  6044  		goto __80
  6045  	case 'a':
  6046  		goto __81
  6047  	case 'A':
  6048  		goto __82
  6049  	case 'e':
  6050  		goto __83
  6051  	case 'E':
  6052  		goto __84
  6053  	case 'f':
  6054  		goto __85
  6055  	case 'F':
  6056  		goto __86
  6057  	case 'g':
  6058  		goto __87
  6059  	case 'G':
  6060  		goto __88
  6061  	}
  6062  	goto __70
  6063  __71:
  6064  __72:
  6065  __73:
  6066  	if !(t == 'c' || t == 's') {
  6067  		goto __89
  6068  	}
  6069  	Xmemset(tls, bp, -1, uint64(unsafe.Sizeof([257]uint8{})))
  6070  	*(*uint8)(unsafe.Pointer(bp)) = uint8(0)
  6071  	if !(t == 's') {
  6072  		goto __91
  6073  	}
  6074  	*(*uint8)(unsafe.Pointer(bp + 10)) = uint8(0)
  6075  	*(*uint8)(unsafe.Pointer(bp + 11)) = uint8(0)
  6076  	*(*uint8)(unsafe.Pointer(bp + 12)) = uint8(0)
  6077  	*(*uint8)(unsafe.Pointer(bp + 13)) = uint8(0)
  6078  	*(*uint8)(unsafe.Pointer(bp + 14)) = uint8(0)
  6079  	*(*uint8)(unsafe.Pointer(bp + 33)) = uint8(0)
  6080  __91:
  6081  	;
  6082  	goto __90
  6083  __89:
  6084  	if !(int32(*(*uint8)(unsafe.Pointer(PreIncUintptr(&p, 1)))) == '^') {
  6085  		goto __92
  6086  	}
  6087  	p++
  6088  	invert = 1
  6089  	goto __93
  6090  __92:
  6091  	invert = 0
  6092  __93:
  6093  	;
  6094  	Xmemset(tls, bp, invert, uint64(unsafe.Sizeof([257]uint8{})))
  6095  	*(*uint8)(unsafe.Pointer(bp)) = uint8(0)
  6096  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == '-') {
  6097  		goto __94
  6098  	}
  6099  	p++
  6100  	*(*uint8)(unsafe.Pointer(bp + 46)) = uint8(1 - invert)
  6101  	goto __95
  6102  __94:
  6103  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == ']') {
  6104  		goto __96
  6105  	}
  6106  	p++
  6107  	*(*uint8)(unsafe.Pointer(bp + 94)) = uint8(1 - invert)
  6108  __96:
  6109  	;
  6110  __95:
  6111  	;
  6112  __97:
  6113  	if !(int32(*(*uint8)(unsafe.Pointer(p))) != ']') {
  6114  		goto __99
  6115  	}
  6116  	if !!(int32(*(*uint8)(unsafe.Pointer(p))) != 0) {
  6117  		goto __100
  6118  	}
  6119  	goto fmt_fail
  6120  __100:
  6121  	;
  6122  	if !(int32(*(*uint8)(unsafe.Pointer(p))) == '-' && *(*uint8)(unsafe.Pointer(p + 1)) != 0 && int32(*(*uint8)(unsafe.Pointer(p + 1))) != ']') {
  6123  		goto __101
  6124  	}
  6125  	c = int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&p, 1) + UintptrFromInt32(-1))))
  6126  __102:
  6127  	if !(c < int32(*(*uint8)(unsafe.Pointer(p)))) {
  6128  		goto __104
  6129  	}
  6130  	*(*uint8)(unsafe.Pointer(bp + uintptr(1+c))) = uint8(1 - invert)
  6131  	goto __103
  6132  __103:
  6133  	c++
  6134  	goto __102
  6135  	goto __104
  6136  __104:
  6137  	;
  6138  __101:
  6139  	;
  6140  	*(*uint8)(unsafe.Pointer(bp + uintptr(1+int32(*(*uint8)(unsafe.Pointer(p)))))) = uint8(1 - invert)
  6141  	goto __98
  6142  __98:
  6143  	p++
  6144  	goto __97
  6145  	goto __99
  6146  __99:
  6147  	;
  6148  __90:
  6149  	;
  6150  	wcs = uintptr(0)
  6151  	s = uintptr(0)
  6152  	i = uint64(0)
  6153  	if t == 'c' {
  6154  		k = uint64(uint32(width) + 1)
  6155  	} else {
  6156  		k = uint64(31)
  6157  	}
  6158  	if !(size == 1) {
  6159  		goto __105
  6160  	}
  6161  	if !(alloc != 0) {
  6162  		goto __107
  6163  	}
  6164  	wcs = Xmalloc(tls, k*size_t(unsafe.Sizeof(wchar_t(0))))
  6165  	if !!(wcs != 0) {
  6166  		goto __109
  6167  	}
  6168  	goto alloc_fail
  6169  __109:
  6170  	;
  6171  	goto __108
  6172  __107:
  6173  	wcs = dest
  6174  __108:
  6175  	;
  6176  	*(*mbstate_t)(unsafe.Pointer(bp + 268 /* st */)) = mbstate_t{}
  6177  __110:
  6178  	if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
  6179  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  6180  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  6181  		}
  6182  		return X__shgetc(tls, f)
  6183  	}())+1))) != 0) {
  6184  		goto __111
  6185  	}
  6186  	switch Xmbrtowc(tls, bp+260, func() uintptr { *(*int8)(unsafe.Pointer(bp + 264)) = int8(c); return bp + 264 }(), uint64(1), bp+268 /* &st */) {
  6187  	case Uint64FromInt32(-1):
  6188  		goto __113
  6189  	case Uint64FromInt32(-2):
  6190  		goto __114
  6191  	}
  6192  	goto __112
  6193  __113:
  6194  	goto input_fail
  6195  __114:
  6196  	goto __110
  6197  __112:
  6198  	;
  6199  	if !(wcs != 0) {
  6200  		goto __115
  6201  	}
  6202  	*(*wchar_t)(unsafe.Pointer(wcs + uintptr(PostIncUint64(&i, 1))*4)) = *(*wchar_t)(unsafe.Pointer(bp + 260 /* wc */))
  6203  __115:
  6204  	;
  6205  	if !(alloc != 0 && i == k) {
  6206  		goto __116
  6207  	}
  6208  	k = k + (k + uint64(1))
  6209  	tmp = Xrealloc(tls, wcs, k*size_t(unsafe.Sizeof(wchar_t(0))))
  6210  	if !!(tmp != 0) {
  6211  		goto __117
  6212  	}
  6213  	goto alloc_fail
  6214  __117:
  6215  	;
  6216  	wcs = tmp
  6217  __116:
  6218  	;
  6219  	goto __110
  6220  __111:
  6221  	;
  6222  	if !!(Xmbsinit(tls, bp+268) != 0) {
  6223  		goto __118
  6224  	}
  6225  	goto input_fail
  6226  __118:
  6227  	;
  6228  	goto __106
  6229  __105:
  6230  	if !(alloc != 0) {
  6231  		goto __119
  6232  	}
  6233  	s = Xmalloc(tls, k)
  6234  	if !!(s != 0) {
  6235  		goto __121
  6236  	}
  6237  	goto alloc_fail
  6238  __121:
  6239  	;
  6240  __122:
  6241  	if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
  6242  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  6243  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  6244  		}
  6245  		return X__shgetc(tls, f)
  6246  	}())+1))) != 0) {
  6247  		goto __123
  6248  	}
  6249  	*(*int8)(unsafe.Pointer(s + uintptr(PostIncUint64(&i, 1)))) = int8(c)
  6250  	if !(i == k) {
  6251  		goto __124
  6252  	}
  6253  	k = k + (k + uint64(1))
  6254  	tmp1 = Xrealloc(tls, s, k)
  6255  	if !!(tmp1 != 0) {
  6256  		goto __125
  6257  	}
  6258  	goto alloc_fail
  6259  __125:
  6260  	;
  6261  	s = tmp1
  6262  __124:
  6263  	;
  6264  	goto __122
  6265  __123:
  6266  	;
  6267  	goto __120
  6268  __119:
  6269  	if !(AssignUintptr(&s, dest) != 0) {
  6270  		goto __126
  6271  	}
  6272  __128:
  6273  	if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
  6274  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  6275  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  6276  		}
  6277  		return X__shgetc(tls, f)
  6278  	}())+1))) != 0) {
  6279  		goto __129
  6280  	}
  6281  	*(*int8)(unsafe.Pointer(s + uintptr(PostIncUint64(&i, 1)))) = int8(c)
  6282  	goto __128
  6283  __129:
  6284  	;
  6285  	goto __127
  6286  __126:
  6287  __130:
  6288  	if !(*(*uint8)(unsafe.Pointer(bp + uintptr(AssignInt32(&c, func() int32 {
  6289  		if (*FILE)(unsafe.Pointer(f)).rpos != (*FILE)(unsafe.Pointer(f)).shend {
  6290  			return int32(*(*uint8)(unsafe.Pointer(PostIncUintptr(&(*FILE)(unsafe.Pointer(f)).rpos, 1))))
  6291  		}
  6292  		return X__shgetc(tls, f)
  6293  	}())+1))) != 0) {
  6294  		goto __131
  6295  	}
  6296  	goto __130
  6297  __131:
  6298  	;
  6299  __127:
  6300  	;
  6301  __120:
  6302  	;
  6303  __106:
  6304  	;
  6305  	if (*FILE)(unsafe.Pointer(f)).shlim >= int64(0) {
  6306  		(*FILE)(unsafe.Pointer(f)).rpos--
  6307  	} else {
  6308  	}
  6309  	if !!((*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != 0) {
  6310  		goto __132
  6311  	}
  6312  	goto match_fail
  6313  __132:
  6314  	;
  6315  	if !(t == 'c' && (*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != off_t(width)) {
  6316  		goto __133
  6317  	}
  6318  	goto match_fail
  6319  __133:
  6320  	;
  6321  	if !(alloc != 0) {
  6322  		goto __134
  6323  	}
  6324  	if !(size == 1) {
  6325  		goto __135
  6326  	}
  6327  	*(*uintptr)(unsafe.Pointer(dest)) = wcs
  6328  	goto __136
  6329  __135:
  6330  	*(*uintptr)(unsafe.Pointer(dest)) = s
  6331  __136:
  6332  	;
  6333  __134:
  6334  	;
  6335  	if !(t != 'c') {
  6336  		goto __137
  6337  	}
  6338  	if !(wcs != 0) {
  6339  		goto __138
  6340  	}
  6341  	*(*wchar_t)(unsafe.Pointer(wcs + uintptr(i)*4)) = 0
  6342  __138:
  6343  	;
  6344  	if !(s != 0) {
  6345  		goto __139
  6346  	}
  6347  	*(*int8)(unsafe.Pointer(s + uintptr(i))) = int8(0)
  6348  __139:
  6349  	;
  6350  __137:
  6351  	;
  6352  	goto __70
  6353  __74:
  6354  __75:
  6355  __76:
  6356  	base = 16
  6357  	goto int_common
  6358  __77:
  6359  	base = 8
  6360  	goto int_common
  6361  __78:
  6362  __79:
  6363  	base = 10
  6364  	goto int_common
  6365  __80:
  6366  	base = 0
  6367  int_common:
  6368  	x = X__intscan(tls, f, uint32(base), 0, 2*uint64(0x7fffffffffffffff)+uint64(1))
  6369  	if !!((*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != 0) {
  6370  		goto __140
  6371  	}
  6372  	goto match_fail
  6373  __140:
  6374  	;
  6375  	if !(t == 'p' && dest != 0) {
  6376  		goto __141
  6377  	}
  6378  	*(*uintptr)(unsafe.Pointer(dest)) = uintptr(uintptr_t(x))
  6379  	goto __142
  6380  __141:
  6381  	store_int(tls, dest, size, x)
  6382  __142:
  6383  	;
  6384  	goto __70
  6385  __81:
  6386  __82:
  6387  __83:
  6388  __84:
  6389  __85:
  6390  __86:
  6391  __87:
  6392  __88:
  6393  	y = X__floatscan(tls, f, size, 0)
  6394  	if !!((*FILE)(unsafe.Pointer(f)).shcnt+(int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1 != 0) {
  6395  		goto __143
  6396  	}
  6397  	goto match_fail
  6398  __143:
  6399  	;
  6400  	if !(dest != 0) {
  6401  		goto __144
  6402  	}
  6403  	switch size {
  6404  	case 0:
  6405  		goto __146
  6406  	case 1:
  6407  		goto __147
  6408  	case 2:
  6409  		goto __148
  6410  	}
  6411  	goto __145
  6412  __146:
  6413  	*(*float32)(unsafe.Pointer(dest)) = float32(y)
  6414  	goto __145
  6415  __147:
  6416  	*(*float64)(unsafe.Pointer(dest)) = y
  6417  	goto __145
  6418  __148:
  6419  	*(*float64)(unsafe.Pointer(dest)) = y
  6420  	goto __145
  6421  __145:
  6422  	;
  6423  __144:
  6424  	;
  6425  	goto __70
  6426  __70:
  6427  	;
  6428  
  6429  	pos = pos + ((*FILE)(unsafe.Pointer(f)).shcnt + (int64((*FILE)(unsafe.Pointer(f)).rpos)-int64((*FILE)(unsafe.Pointer(f)).buf))/1)
  6430  	if !(dest != 0) {
  6431  		goto __149
  6432  	}
  6433  	matches++
  6434  __149:
  6435  	;
  6436  	goto __4
  6437  __4:
  6438  	p++
  6439  	goto __3
  6440  	goto __5
  6441  __5:
  6442  	;
  6443  	if !(0 != 0) {
  6444  		goto __150
  6445  	}
  6446  fmt_fail:
  6447  alloc_fail:
  6448  input_fail:
  6449  	if !!(matches != 0) {
  6450  		goto __151
  6451  	}
  6452  	matches--
  6453  __151:
  6454  	;
  6455  match_fail:
  6456  	if !(alloc != 0) {
  6457  		goto __152
  6458  	}
  6459  	Xfree(tls, s)
  6460  	Xfree(tls, wcs)
  6461  __152:
  6462  	;
  6463  __150:
  6464  	;
  6465  __153:
  6466  	if !(__need_unlock != 0) {
  6467  		goto __156
  6468  	}
  6469  	X__unlockfile(tls, f)
  6470  __156:
  6471  	;
  6472  	goto __154
  6473  __154:
  6474  	if 0 != 0 {
  6475  		goto __153
  6476  	}
  6477  	goto __155
  6478  __155:
  6479  	;
  6480  	return matches
  6481  }
  6482  
  6483  func string_read(tls *TLS, f uintptr, buf uintptr, len size_t) size_t { /* vsscanf.c:4:15: */
  6484  	var src uintptr = (*FILE)(unsafe.Pointer(f)).cookie
  6485  	var k size_t = len + uint64(256)
  6486  	var end uintptr = Xmemchr(tls, src, 0, k)
  6487  	if end != 0 {
  6488  		k = size_t((int64(end) - int64(src)) / 1)
  6489  	}
  6490  	if k < len {
  6491  		len = k
  6492  	}
  6493  	Xmemcpy(tls, buf, src, len)
  6494  	(*FILE)(unsafe.Pointer(f)).rpos = src + uintptr(len)
  6495  	(*FILE)(unsafe.Pointer(f)).rend = src + uintptr(k)
  6496  	(*FILE)(unsafe.Pointer(f)).cookie = src + uintptr(k)
  6497  	return len
  6498  }
  6499  
  6500  func Xvsscanf(tls *TLS, s uintptr, fmt uintptr, ap va_list) int32 { /* vsscanf.c:18:5: */
  6501  	bp := tls.Alloc(232)
  6502  	defer tls.Free(232)
  6503  
  6504  	*(*FILE)(unsafe.Pointer(bp /* f */)) = FILE{read: *(*uintptr)(unsafe.Pointer(&struct {
  6505  		f func(*TLS, uintptr, uintptr, size_t) size_t
  6506  	}{string_read})), buf: s, lock: -1, cookie: s}
  6507  	return Xvfscanf(tls, bp, fmt, ap)
  6508  }
  6509  
  6510  func Xbsearch(tls *TLS, key uintptr, base uintptr, nel size_t, width size_t, cmp uintptr) uintptr { /* bsearch.c:3:6: */
  6511  	var try uintptr
  6512  	var sign int32
  6513  	for nel > uint64(0) {
  6514  		try = base + uintptr(width*(nel/uint64(2)))
  6515  		sign = (*struct {
  6516  			f func(*TLS, uintptr, uintptr) int32
  6517  		})(unsafe.Pointer(&struct{ uintptr }{cmp})).f(tls, key, try)
  6518  		if sign < 0 {
  6519  			nel = nel / uint64(2)
  6520  		} else if sign > 0 {
  6521  			base = try + uintptr(width)
  6522  			nel = nel - (nel/uint64(2) + uint64(1))
  6523  		} else {
  6524  			return try
  6525  		}
  6526  	}
  6527  	return uintptr(0)
  6528  }
  6529  
  6530  func strtox(tls *TLS, s uintptr, p uintptr, prec int32) float64 { /* strtod.c:6:20: */
  6531  	bp := tls.Alloc(232)
  6532  	defer tls.Free(232)
  6533  
  6534  	// var f FILE at bp, 232
  6535  
  6536  	(*FILE)(unsafe.Pointer(bp)).buf = AssignPtrUintptr(bp+8, s)
  6537  	(*FILE)(unsafe.Pointer(bp)).rend = UintptrFromInt32(-1)
  6538  	X__shlim(tls, bp, int64(0))
  6539  	var y float64 = X__floatscan(tls, bp, prec, 1)
  6540  	var cnt off_t = (*FILE)(unsafe.Pointer(bp)).shcnt + (int64((*FILE)(unsafe.Pointer(bp)).rpos)-int64((*FILE)(unsafe.Pointer(bp)).buf))/1
  6541  	if p != 0 {
  6542  		*(*uintptr)(unsafe.Pointer(p)) = func() uintptr {
  6543  			if cnt != 0 {
  6544  				return s + uintptr(cnt)
  6545  			}
  6546  			return s
  6547  		}()
  6548  	}
  6549  	return y
  6550  }
  6551  
  6552  func Xstrtof(tls *TLS, s uintptr, p uintptr) float32 { /* strtod.c:17:7: */
  6553  	return float32(strtox(tls, s, p, 0))
  6554  }
  6555  
  6556  func Xstrtod(tls *TLS, s uintptr, p uintptr) float64 { /* strtod.c:22:8: */
  6557  	return strtox(tls, s, p, 1)
  6558  }
  6559  
  6560  func Xstrtold(tls *TLS, s uintptr, p uintptr) float64 { /* strtod.c:27:13: */
  6561  	return strtox(tls, s, p, 2)
  6562  }
  6563  
  6564  func strtox1(tls *TLS, s uintptr, p uintptr, base int32, lim uint64) uint64 { /* strtol.c:8:27: */
  6565  	bp := tls.Alloc(232)
  6566  	defer tls.Free(232)
  6567  
  6568  	// var f FILE at bp, 232
  6569  
  6570  	(*FILE)(unsafe.Pointer(bp)).buf = AssignPtrUintptr(bp+8, s)
  6571  	(*FILE)(unsafe.Pointer(bp)).rend = UintptrFromInt32(-1)
  6572  	X__shlim(tls, bp, int64(0))
  6573  	var y uint64 = X__intscan(tls, bp, uint32(base), 1, lim)
  6574  	if p != 0 {
  6575  		var cnt size_t = size_t((*FILE)(unsafe.Pointer(bp)).shcnt + (int64((*FILE)(unsafe.Pointer(bp)).rpos)-int64((*FILE)(unsafe.Pointer(bp)).buf))/1)
  6576  		*(*uintptr)(unsafe.Pointer(p)) = s + uintptr(cnt)
  6577  	}
  6578  	return y
  6579  }
  6580  
  6581  func Xstrtoull(tls *TLS, s uintptr, p uintptr, base int32) uint64 { /* strtol.c:21:20: */
  6582  	return strtox1(tls, s, p, base, 2*uint64(0x7fffffffffffffff)+uint64(1))
  6583  }
  6584  
  6585  func Xstrtoll(tls *TLS, s uintptr, p uintptr, base int32) int64 { /* strtol.c:26:11: */
  6586  	return int64(strtox1(tls, s, p, base, Uint64FromInt64(-0x7fffffffffffffff-int64(1))))
  6587  }
  6588  
  6589  func Xstrtoul(tls *TLS, s uintptr, p uintptr, base int32) uint64 { /* strtol.c:31:15: */
  6590  	return uint64(strtox1(tls, s, p, base, 2*uint64(0x7fffffffffffffff)+uint64(1)))
  6591  }
  6592  
  6593  func Xstrtol(tls *TLS, s uintptr, p uintptr, base int32) int64 { /* strtol.c:36:6: */
  6594  	return int64(strtox1(tls, s, p, base, 0+Uint64FromInt64(Int64(-Int64(0x7fffffffffffffff))-Int64FromInt32(1))))
  6595  }
  6596  
  6597  func Xstrtoimax(tls *TLS, s uintptr, p uintptr, base int32) intmax_t { /* strtol.c:41:10: */
  6598  	return intmax_t(Xstrtoll(tls, s, p, base))
  6599  }
  6600  
  6601  func Xstrtoumax(tls *TLS, s uintptr, p uintptr, base int32) uintmax_t { /* strtol.c:46:11: */
  6602  	return uintmax_t(Xstrtoull(tls, s, p, base))
  6603  }
  6604  
  6605  func Xstrdup(tls *TLS, s uintptr) uintptr { /* strdup.c:4:6: */
  6606  	var l size_t = Xstrlen(tls, s)
  6607  	var d uintptr = Xmalloc(tls, l+uint64(1))
  6608  	if !(d != 0) {
  6609  		return uintptr(0)
  6610  	}
  6611  	return Xmemcpy(tls, d, s, l+uint64(1))
  6612  }
  6613  
  6614  func Xstrlcat(tls *TLS, d uintptr, s uintptr, n size_t) size_t { /* strlcat.c:4:8: */
  6615  	var l size_t = Xstrnlen(tls, d, n)
  6616  	if l == n {
  6617  		return l + Xstrlen(tls, s)
  6618  	}
  6619  	return l + Xstrlcpy(tls, d+uintptr(l), s, n-l)
  6620  }
  6621  
  6622  // Support signed or unsigned plain-char
  6623  
  6624  // Implementation choices...
  6625  
  6626  // Arbitrary numbers...
  6627  
  6628  // POSIX/SUS requirements follow. These numbers come directly
  6629  // from SUS and have nothing to do with the host system.
  6630  
  6631  func Xstrlcpy(tls *TLS, d uintptr, s uintptr, n size_t) size_t { /* strlcpy.c:11:8: */
  6632  	var d0 uintptr
  6633  	var wd uintptr
  6634  	var ws uintptr
  6635  	d0 = d
  6636  
  6637  	if !!(int32(PostDecUint64(&n, 1)) != 0) {
  6638  		goto __1
  6639  	}
  6640  	goto finish
  6641  __1:
  6642  	;
  6643  	if !(uintptr_t(s)&(uint64(unsafe.Sizeof(size_t(0)))-uint64(1)) == uintptr_t(d)&(uint64(unsafe.Sizeof(size_t(0)))-uint64(1))) {
  6644  		goto __2
  6645  	}
  6646  __3:
  6647  	if !(uintptr_t(s)&(uint64(unsafe.Sizeof(size_t(0)))-uint64(1)) != 0 && n != 0 && AssignPtrInt8(d, *(*int8)(unsafe.Pointer(s))) != 0) {
  6648  		goto __5
  6649  	}
  6650  	goto __4
  6651  __4:
  6652  	n--
  6653  	s++
  6654  	d++
  6655  	goto __3
  6656  	goto __5
  6657  __5:
  6658  	;
  6659  	if !(n != 0 && *(*int8)(unsafe.Pointer(s)) != 0) {
  6660  		goto __6
  6661  	}
  6662  	wd = d
  6663  	ws = s
  6664  __7:
  6665  	if !(n >= size_t(unsafe.Sizeof(size_t(0))) && !((*(*uint64)(unsafe.Pointer(ws))-Uint64(Uint64FromInt32(-1))/uint64(255)) & ^*(*uint64)(unsafe.Pointer(ws)) & (Uint64(Uint64FromInt32(-1))/uint64(255)*uint64(255/2+1)) != 0)) {
  6666  		goto __9
  6667  	}
  6668  	*(*size_t)(unsafe.Pointer(wd)) = *(*uint64)(unsafe.Pointer(ws))
  6669  	goto __8
  6670  __8:
  6671  	n = n - size_t(unsafe.Sizeof(size_t(0)))
  6672  	ws += 8
  6673  	wd += 8
  6674  	goto __7
  6675  	goto __9
  6676  __9:
  6677  	;
  6678  	d = wd
  6679  	s = ws
  6680  __6:
  6681  	;
  6682  __2:
  6683  	;
  6684  __10:
  6685  	if !(n != 0 && AssignPtrInt8(d, *(*int8)(unsafe.Pointer(s))) != 0) {
  6686  		goto __12
  6687  	}
  6688  	goto __11
  6689  __11:
  6690  	n--
  6691  	s++
  6692  	d++
  6693  	goto __10
  6694  	goto __12
  6695  __12:
  6696  	;
  6697  	*(*int8)(unsafe.Pointer(d)) = int8(0)
  6698  finish:
  6699  	return size_t((int64(d)-int64(d0))/1) + Xstrlen(tls, s)
  6700  }
  6701  
  6702  func Xstrncasecmp(tls *TLS, _l uintptr, _r uintptr, n size_t) int32 { /* strncasecmp.c:4:5: */
  6703  	var l uintptr = _l
  6704  	var r uintptr = _r
  6705  	if !(int32(PostDecUint64(&n, 1)) != 0) {
  6706  		return 0
  6707  	}
  6708  __1:
  6709  	if !(*(*uint8)(unsafe.Pointer(l)) != 0 && *(*uint8)(unsafe.Pointer(r)) != 0 && n != 0 && (int32(*(*uint8)(unsafe.Pointer(l))) == int32(*(*uint8)(unsafe.Pointer(r))) || Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(l)))) == Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(r)))))) {
  6710  		goto __3
  6711  	}
  6712  	goto __2
  6713  __2:
  6714  	l++
  6715  	r++
  6716  	n--
  6717  	goto __1
  6718  	goto __3
  6719  __3:
  6720  	;
  6721  	return Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(l)))) - Xtolower(tls, int32(*(*uint8)(unsafe.Pointer(r))))
  6722  }
  6723  
  6724  func X__strncasecmp_l(tls *TLS, l uintptr, r uintptr, n size_t, loc locale_t) int32 { /* strncasecmp.c:12:5: */
  6725  	return Xstrncasecmp(tls, l, r, n)
  6726  }
  6727  
  6728  func Xstrncat(tls *TLS, d uintptr, s uintptr, n size_t) uintptr { /* strncat.c:3:6: */
  6729  	var a uintptr = d
  6730  	d += uintptr(Xstrlen(tls, d))
  6731  	for n != 0 && *(*int8)(unsafe.Pointer(s)) != 0 {
  6732  		n--
  6733  		*(*int8)(unsafe.Pointer(PostIncUintptr(&d, 1))) = *(*int8)(unsafe.Pointer(PostIncUintptr(&s, 1)))
  6734  	}
  6735  	*(*int8)(unsafe.Pointer(PostIncUintptr(&d, 1))) = int8(0)
  6736  	return a
  6737  }
  6738  
  6739  func Xstrnlen(tls *TLS, s uintptr, n size_t) size_t { /* strnlen.c:3:8: */
  6740  	var p uintptr = Xmemchr(tls, s, 0, n)
  6741  	if p != 0 {
  6742  		return uint64((int64(p) - int64(s)) / 1)
  6743  	}
  6744  	return n
  6745  }
  6746  
  6747  func Xstrspn(tls *TLS, s uintptr, c uintptr) size_t { /* strspn.c:6:8: */
  6748  	bp := tls.Alloc(32)
  6749  	defer tls.Free(32)
  6750  
  6751  	var a uintptr = s
  6752  	*(*[4]size_t)(unsafe.Pointer(bp /* byteset */)) = [4]size_t{0: uint64(0)}
  6753  
  6754  	if !(int32(*(*int8)(unsafe.Pointer(c))) != 0) {
  6755  		return uint64(0)
  6756  	}
  6757  	if !(int32(*(*int8)(unsafe.Pointer(c + 1))) != 0) {
  6758  		for ; int32(*(*int8)(unsafe.Pointer(s))) == int32(*(*int8)(unsafe.Pointer(c))); s++ {
  6759  		}
  6760  		return size_t((int64(s) - int64(a)) / 1)
  6761  	}
  6762  
  6763  	for ; *(*int8)(unsafe.Pointer(c)) != 0 && AssignOrPtrUint64(bp+uintptr(size_t(*(*uint8)(unsafe.Pointer(c)))/(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))*8, size_t(uint64(1))<<(size_t(*(*uint8)(unsafe.Pointer(c)))%(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))) != 0; c++ {
  6764  	}
  6765  	for ; *(*int8)(unsafe.Pointer(s)) != 0 && *(*size_t)(unsafe.Pointer(bp + uintptr(size_t(*(*uint8)(unsafe.Pointer(s)))/(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))*8))&(size_t(uint64(1))<<(size_t(*(*uint8)(unsafe.Pointer(s)))%(uint64(8)*uint64(unsafe.Sizeof(size_t(0)))))) != 0; s++ {
  6766  	}
  6767  	return size_t((int64(s) - int64(a)) / 1)
  6768  }
  6769  
  6770  func Xstrtok(tls *TLS, s uintptr, sep uintptr) uintptr { /* strtok.c:3:6: */
  6771  	if !(s != 0) && !(int32(AssignUintptr(&s, _sp)) != 0) {
  6772  		return uintptr(0)
  6773  	}
  6774  	s += uintptr(Xstrspn(tls, s, sep))
  6775  	if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
  6776  		return AssignPtrUintptr(uintptr(unsafe.Pointer(&_sp)), uintptr(0))
  6777  	}
  6778  	_sp = s + uintptr(Xstrcspn(tls, s, sep))
  6779  	if *(*int8)(unsafe.Pointer(_sp)) != 0 {
  6780  		*(*int8)(unsafe.Pointer(PostIncUintptr(&_sp, 1))) = int8(0)
  6781  	} else {
  6782  		_sp = uintptr(0)
  6783  	}
  6784  	return s
  6785  }
  6786  
  6787  var _sp uintptr /* strtok.c:5:14: */
  6788  
  6789  func X__ccgo_pthreadAttrGetDetachState(tls *TLS, a uintptr) int32 { /* pthread_attr_get.c:3:5: */
  6790  	return *(*int32)(unsafe.Pointer(a + 6*4))
  6791  }
  6792  
  6793  func Xpthread_attr_getdetachstate(tls *TLS, a uintptr, state uintptr) int32 { /* pthread_attr_get.c:7:5: */
  6794  	*(*int32)(unsafe.Pointer(state)) = *(*int32)(unsafe.Pointer(a + 6*4))
  6795  	return 0
  6796  }
  6797  
  6798  //
  6799  // int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size)
  6800  // {
  6801  // 	*size = a->_a_guardsize;
  6802  // 	return 0;
  6803  // }
  6804  //
  6805  // int pthread_attr_getinheritsched(const pthread_attr_t *restrict a, int *restrict inherit)
  6806  // {
  6807  // 	*inherit = a->_a_sched;
  6808  // 	return 0;
  6809  // }
  6810  //
  6811  // int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param)
  6812  // {
  6813  // 	param->sched_priority = a->_a_prio;
  6814  // 	return 0;
  6815  // }
  6816  //
  6817  // int pthread_attr_getschedpolicy(const pthread_attr_t *restrict a, int *restrict policy)
  6818  // {
  6819  // 	*policy = a->_a_policy;
  6820  // 	return 0;
  6821  // }
  6822  //
  6823  // int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope)
  6824  // {
  6825  // 	*scope = PTHREAD_SCOPE_SYSTEM;
  6826  // 	return 0;
  6827  // }
  6828  //
  6829  // int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size)
  6830  // {
  6831  // 	if (!a->_a_stackaddr)
  6832  // 		return EINVAL;
  6833  // 	*size = a->_a_stacksize;
  6834  // 	*addr = (void *)(a->_a_stackaddr - *size);
  6835  // 	return 0;
  6836  // }
  6837  //
  6838  // int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size)
  6839  // {
  6840  // 	*size = a->_a_stacksize;
  6841  // 	return 0;
  6842  // }
  6843  //
  6844  // int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared)
  6845  // {
  6846  // 	*pshared = !!a->__attr;
  6847  // 	return 0;
  6848  // }
  6849  //
  6850  // int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk)
  6851  // {
  6852  // 	*clk = a->__attr & 0x7fffffff;
  6853  // 	return 0;
  6854  // }
  6855  //
  6856  // int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared)
  6857  // {
  6858  // 	*pshared = a->__attr>>31;
  6859  // 	return 0;
  6860  // }
  6861  //
  6862  // int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol)
  6863  // {
  6864  // 	*protocol = PTHREAD_PRIO_NONE;
  6865  // 	return 0;
  6866  // }
  6867  // int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
  6868  // {
  6869  // 	*pshared = a->__attr / 128U % 2;
  6870  // 	return 0;
  6871  // }
  6872  //
  6873  // int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust)
  6874  // {
  6875  // 	*robust = a->__attr / 4U % 2;
  6876  // 	return 0;
  6877  // }
  6878  
  6879  func X__ccgo_pthreadMutexattrGettype(tls *TLS, a uintptr) int32 { /* pthread_attr_get.c:93:5: */
  6880  	return int32((*pthread_mutexattr_t)(unsafe.Pointer(a)).__attr & uint32(3))
  6881  }
  6882  
  6883  // int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type)
  6884  // {
  6885  // 	*type = a->__attr & 3;
  6886  // 	return 0;
  6887  // }
  6888  //
  6889  // int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared)
  6890  // {
  6891  // 	*pshared = a->__attr[0];
  6892  // 	return 0;
  6893  // }
  6894  
  6895  func Xpthread_attr_setdetachstate(tls *TLS, a uintptr, state int32) int32 { /* pthread_attr_setdetachstate.c:3:5: */
  6896  	if uint32(state) > 1 {
  6897  		return 22
  6898  	}
  6899  	*(*int32)(unsafe.Pointer(a + 6*4)) = state
  6900  	return 0
  6901  }
  6902  
  6903  func X__ccgo_getMutexType(tls *TLS, m uintptr) int32 { /* pthread_mutex_lock.c:3:5: */
  6904  	return *(*int32)(unsafe.Pointer(m)) & 15
  6905  }
  6906  
  6907  // int __pthread_mutex_lock(pthread_mutex_t *m)
  6908  // {
  6909  // 	if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
  6910  // 	    && !a_cas(&m->_m_lock, 0, EBUSY))
  6911  // 		return 0;
  6912  //
  6913  // 	return __pthread_mutex_timedlock(m, 0);
  6914  // }
  6915  //
  6916  // weak_alias(__pthread_mutex_lock, pthread_mutex_lock);
  6917  
  6918  func Xpthread_mutexattr_destroy(tls *TLS, a uintptr) int32 { /* pthread_mutexattr_destroy.c:3:5: */
  6919  	return 0
  6920  }
  6921  
  6922  func Xpthread_mutexattr_init(tls *TLS, a uintptr) int32 { /* pthread_mutexattr_init.c:3:5: */
  6923  	*(*pthread_mutexattr_t)(unsafe.Pointer(a)) = pthread_mutexattr_t{}
  6924  	return 0
  6925  }
  6926  
  6927  func Xpthread_mutexattr_settype(tls *TLS, a uintptr, type1 int32) int32 { /* pthread_mutexattr_settype.c:3:5: */
  6928  	if uint32(type1) > uint32(2) {
  6929  		return 22
  6930  	}
  6931  	(*pthread_mutexattr_t)(unsafe.Pointer(a)).__attr = (*pthread_mutexattr_t)(unsafe.Pointer(a)).__attr&Uint32FromInt32(CplInt32(3)) | uint32(type1)
  6932  	return 0
  6933  }
  6934  
  6935  func init() {
  6936  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&ptable)) + 0)) = uintptr(unsafe.Pointer(&table)) + uintptr(128)*2 // __ctype_b_loc.c:36:45:
  6937  }
  6938  
  6939  var ts1 = "infinity\x00nan\x00\x00\x00\x01\x02\x04\a\x03\x06\x05\x00.\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"
  6940  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data