github.com/afumu/libc@v0.0.6/musl_linux_arm.go (about)

     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