gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

musl_linux_arm64.go (196707B)


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