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

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