gtsocial-umbx

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

musl_linux_arm.go (195897B)


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