gtsocial-umbx

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

musl_linux_riscv64.go (197006B)


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