modernc.org/libc@v1.24.1/musl_linux_386.go (about)

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