gtsocial-umbx

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

musl_linux_s390x.go (192893B)


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