package libc
import (
"math"
"reflect"
"sync/atomic"
"unsafe"
)
var _ = math .Pi
var _ reflect .Kind
var _ atomic .Value
var _ unsafe .Pointer
const (
__musl__copyright__ = 0
)
const (
ns_uop_delete = 0
ns_uop_add = 1
ns_uop_max = 2
)
const (
ns_t_invalid = 0
ns_t_a = 1
ns_t_ns = 2
ns_t_md = 3
ns_t_mf = 4
ns_t_cname = 5
ns_t_soa = 6
ns_t_mb = 7
ns_t_mg = 8
ns_t_mr = 9
ns_t_null = 10
ns_t_wks = 11
ns_t_ptr = 12
ns_t_hinfo = 13
ns_t_minfo = 14
ns_t_mx = 15
ns_t_txt = 16
ns_t_rp = 17
ns_t_afsdb = 18
ns_t_x25 = 19
ns_t_isdn = 20
ns_t_rt = 21
ns_t_nsap = 22
ns_t_nsap_ptr = 23
ns_t_sig = 24
ns_t_key = 25
ns_t_px = 26
ns_t_gpos = 27
ns_t_aaaa = 28
ns_t_loc = 29
ns_t_nxt = 30
ns_t_eid = 31
ns_t_nimloc = 32
ns_t_srv = 33
ns_t_atma = 34
ns_t_naptr = 35
ns_t_kx = 36
ns_t_cert = 37
ns_t_a6 = 38
ns_t_dname = 39
ns_t_sink = 40
ns_t_opt = 41
ns_t_apl = 42
ns_t_tkey = 249
ns_t_tsig = 250
ns_t_ixfr = 251
ns_t_axfr = 252
ns_t_mailb = 253
ns_t_maila = 254
ns_t_any = 255
ns_t_zxfr = 256
ns_t_max = 65536
)
const (
ns_c_invalid = 0
ns_c_in = 1
ns_c_2 = 2
ns_c_chaos = 3
ns_c_hs = 4
ns_c_none = 254
ns_c_any = 255
ns_c_max = 65536
)
const (
ns_kt_rsa = 1
ns_kt_dh = 2
ns_kt_dsa = 3
ns_kt_private = 254
)
const (
cert_t_pkix = 1
cert_t_spki = 2
cert_t_pgp = 3
cert_t_url = 253
cert_t_oid = 254
)
const (
ns_s_qd = 0
ns_s_zn = 0
ns_s_an = 1
ns_s_pr = 1
ns_s_ns = 2
ns_s_ud = 2
ns_s_ar = 3
ns_s_max = 4
)
const (
ns_f_qr = 0
ns_f_opcode = 1
ns_f_aa = 2
ns_f_tc = 3
ns_f_rd = 4
ns_f_ra = 5
ns_f_z = 6
ns_f_ad = 7
ns_f_cd = 8
ns_f_rcode = 9
ns_f_max = 10
)
const (
ns_o_query = 0
ns_o_iquery = 1
ns_o_status = 2
ns_o_notify = 4
ns_o_update = 5
ns_o_max = 6
)
const (
ns_r_noerror = 0
ns_r_formerr = 1
ns_r_servfail = 2
ns_r_nxdomain = 3
ns_r_notimpl = 4
ns_r_refused = 5
ns_r_yxdomain = 6
ns_r_yxrrset = 7
ns_r_nxrrset = 8
ns_r_notauth = 9
ns_r_notzone = 10
ns_r_max = 11
ns_r_badvers = 16
ns_r_badsig = 16
ns_r_badkey = 17
ns_r_badtime = 18
)
type ptrdiff_t = int64
type size_t = uint64
type wchar_t = int32
func __isspace (tls *TLS , _c int32 ) int32 {
return (Bool32 ((_c == ' ' ) || ((uint32 (_c ) - uint32 ('\t' )) < uint32 (5 ))))
}
type locale_t = uintptr
func Xisalnum (tls *TLS , c int32 ) int32 {
return (Bool32 ((func () int32 {
if 0 != 0 {
return Xisalpha (tls , c )
}
return (Bool32 ((((uint32 (c )) | uint32 (32 )) - uint32 ('a' )) < uint32 (26 )))
}() != 0 ) || (func () int32 {
if 0 != 0 {
return Xisdigit (tls , c )
}
return (Bool32 (((uint32 (c )) - uint32 ('0' )) < uint32 (10 )))
}() != 0 )))
}
func X__isalnum_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xisalnum (tls , c )
}
func Xisalpha (tls *TLS , c int32 ) int32 {
return (Bool32 (((uint32 (c ) | uint32 (32 )) - uint32 ('a' )) < uint32 (26 )))
}
func X__isalpha_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xisalpha (tls , c )
}
func Xisdigit (tls *TLS , c int32 ) int32 {
return (Bool32 ((uint32 (c ) - uint32 ('0' )) < uint32 (10 )))
}
func X__isdigit_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xisdigit (tls , c )
}
func Xislower (tls *TLS , c int32 ) int32 {
return (Bool32 ((uint32 (c ) - uint32 ('a' )) < uint32 (26 )))
}
func X__islower_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xislower (tls , c )
}
func Xisprint (tls *TLS , c int32 ) int32 {
return (Bool32 ((uint32 (c ) - uint32 (0x20 )) < uint32 (0x5f )))
}
func X__isprint_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xisprint (tls , c )
}
func Xisupper (tls *TLS , c int32 ) int32 {
return (Bool32 ((uint32 (c ) - uint32 ('A' )) < uint32 (26 )))
}
func X__isupper_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xisupper (tls , c )
}
func Xisxdigit (tls *TLS , c int32 ) int32 {
return (Bool32 ((func () int32 {
if 0 != 0 {
return Xisdigit (tls , c )
}
return (Bool32 (((uint32 (c )) - uint32 ('0' )) < uint32 (10 )))
}() != 0 ) || (((uint32 (c ) | uint32 (32 )) - uint32 ('a' )) < uint32 (6 ))))
}
func X__isxdigit_l (tls *TLS , c int32 , l locale_t ) int32 {
return Xisxdigit (tls , c )
}
type div_t = struct {
quot int32
rem int32
}
type ldiv_t = struct {
quot int64
rem int64
}
type lldiv_t = struct {
quot int64
rem int64
}
type ssize_t = int64
type intptr_t = int64
type off_t = int64
type pid_t = int32
type uid_t = uint32
type gid_t = uint32
type useconds_t = uint32
func X__putenv (tls *TLS , s uintptr , l size_t , r uintptr ) int32 {
var i size_t
var newenv uintptr
var tmp uintptr
var e uintptr
i = uint64 (0 )
if !(Environ () != 0 ) {
goto __1
}
e = Environ ()
__2 :
if !(*(*uintptr )(unsafe .Pointer (e )) != 0 ) {
goto __4
}
if !(!(Xstrncmp (tls , s , *(*uintptr )(unsafe .Pointer (e )), (l +uint64 (1 ))) != 0 )) {
goto __5
}
tmp = *(*uintptr )(unsafe .Pointer (e ))
*(*uintptr )(unsafe .Pointer (e )) = s
X__env_rm_add (tls , tmp , r )
return 0
__5 :
;
goto __3
__3 :
e += 8
i ++
goto __2
goto __4
__4 :
;
__1 :
;
if !(Environ () == _soldenv ) {
goto __6
}
newenv = Xrealloc (tls , _soldenv , (uint64 (unsafe .Sizeof (uintptr (0 ))) * (i + uint64 (2 ))))
if !(!(newenv != 0 )) {
goto __8
}
goto oom
__8 :
;
goto __7
__6 :
newenv = Xmalloc (tls , (uint64 (unsafe .Sizeof (uintptr (0 ))) * (i + uint64 (2 ))))
if !(!(newenv != 0 )) {
goto __9
}
goto oom
__9 :
;
if !(i != 0 ) {
goto __10
}
Xmemcpy (tls , newenv , Environ (), (uint64 (unsafe .Sizeof (uintptr (0 ))) * i ))
__10 :
;
Xfree (tls , _soldenv )
__7 :
;
*(*uintptr )(unsafe .Pointer (newenv + uintptr (i )*8 )) = s
*(*uintptr )(unsafe .Pointer (newenv + uintptr ((i +uint64 (1 )))*8 )) = uintptr (0 )
*(*uintptr )(unsafe .Pointer (EnvironP ())) = AssignPtrUintptr (uintptr (unsafe .Pointer (&_soldenv )), newenv )
if !(r != 0 ) {
goto __11
}
X__env_rm_add (tls , uintptr (0 ), r )
__11 :
;
return 0
oom :
Xfree (tls , r )
return -1
}
var _soldenv uintptr
func Xputenv (tls *TLS , s uintptr ) int32 {
var l size_t = (size_t ((int64 (X__strchrnul (tls , s , '=' )) - int64 (s )) / 1 ))
if !(l != 0 ) || !(int32 (*(*int8 )(unsafe .Pointer (s + uintptr (l )))) != 0 ) {
return Xunsetenv (tls , s )
}
return X__putenv (tls , s , l , uintptr (0 ))
}
func X__env_rm_add (tls *TLS , old uintptr , new uintptr ) {
var i size_t = uint64 (0 )
for ; i < _senv_alloced_n ; i ++ {
if *(*uintptr )(unsafe .Pointer (_senv_alloced + uintptr (i )*8 )) == old {
*(*uintptr )(unsafe .Pointer (_senv_alloced + uintptr (i )*8 )) = new
Xfree (tls , old )
return
} else if !(int32 (*(*uintptr )(unsafe .Pointer (_senv_alloced + uintptr (i )*8 ))) != 0 ) && (new != 0 ) {
*(*uintptr )(unsafe .Pointer (_senv_alloced + uintptr (i )*8 )) = new
new = uintptr (0 )
}
}
if !(new != 0 ) {
return
}
var t uintptr = Xrealloc (tls , _senv_alloced , (uint64 (unsafe .Sizeof (uintptr (0 ))) * (_senv_alloced_n + uint64 (1 ))))
if !(t != 0 ) {
return
}
*(*uintptr )(unsafe .Pointer ((AssignPtrUintptr (uintptr (unsafe .Pointer (&_senv_alloced )), t )) + uintptr (PostIncUint64 (&_senv_alloced_n , 1 ))*8 )) = new
}
var _senv_alloced uintptr
var _senv_alloced_n size_t
func Xsetenv (tls *TLS , var1 uintptr , value uintptr , overwrite int32 ) int32 {
var s uintptr
var l1 size_t
var l2 size_t
if (!(var1 != 0 ) || !(int32 (AssignUint64 (&l1 , (size_t ((int64 (X__strchrnul (tls , var1 , '=' ))-int64 (var1 ))/1 )))) != 0 )) || (*(*int8 )(unsafe .Pointer (var1 + uintptr (l1 ))) != 0 ) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
return -1
}
if !(overwrite != 0 ) && (Xgetenv (tls , var1 ) != 0 ) {
return 0
}
l2 = Xstrlen (tls , value )
s = Xmalloc (tls , ((l1 + l2 ) + uint64 (2 )))
if !(s != 0 ) {
return -1
}
Xmemcpy (tls , s , var1 , l1 )
*(*int8 )(unsafe .Pointer (s + uintptr (l1 ))) = int8 ('=' )
Xmemcpy (tls , ((s + uintptr (l1 )) + uintptr (1 )), value , (l2 + uint64 (1 )))
return X__putenv (tls , s , l1 , s )
}
func Xunsetenv (tls *TLS , name uintptr ) int32 {
var l size_t = (size_t ((int64 (X__strchrnul (tls , name , '=' )) - int64 (name )) / 1 ))
if !(l != 0 ) || (*(*int8 )(unsafe .Pointer (name + uintptr (l ))) != 0 ) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
return -1
}
if Environ () != 0 {
var e uintptr = Environ ()
var eo uintptr = e
for ; *(*uintptr )(unsafe .Pointer (e )) != 0 ; e += 8 {
if !(Xstrncmp (tls , name , *(*uintptr )(unsafe .Pointer (e )), l ) != 0 ) && (int32 (*(*int8 )(unsafe .Pointer ((*(*uintptr )(unsafe .Pointer (e ))) + uintptr (l )))) == '=' ) {
X__env_rm_add (tls , *(*uintptr )(unsafe .Pointer (e )), uintptr (0 ))
} else if eo != e {
*(*uintptr )(unsafe .Pointer (PostIncUintptr (&eo , 8 ))) = *(*uintptr )(unsafe .Pointer (e ))
} else {
eo += 8
}
}
if eo != e {
*(*uintptr )(unsafe .Pointer (eo )) = uintptr (0 )
}
}
return 0
}
type uintptr_t = uint64
type int8_t = int8
type int16_t = int16
type int32_t = int32
type int64_t = int64
type intmax_t = int64
type uint8_t = uint8
type uint16_t = uint16
type uint32_t = uint32
type uint64_t = uint64
type uintmax_t = uint64
type int_fast8_t = int8_t
type int_fast64_t = int64_t
type int_least8_t = int8_t
type int_least16_t = int16_t
type int_least32_t = int32_t
type int_least64_t = int64_t
type uint_fast8_t = uint8_t
type uint_fast64_t = uint64_t
type uint_least8_t = uint8_t
type uint_least16_t = uint16_t
type uint_least32_t = uint32_t
type uint_least64_t = uint64_t
type int_fast16_t = int32_t
type int_fast32_t = int32_t
type uint_fast16_t = uint32_t
type uint_fast32_t = uint32_t
type _IO_FILE = struct {
flags uint32
_ [4 ]byte
rpos uintptr
rend uintptr
close uintptr
wend uintptr
wpos uintptr
mustbezero_1 uintptr
wbase uintptr
read uintptr
write uintptr
seek uintptr
buf uintptr
buf_size size_t
prev uintptr
next uintptr
fd int32
pipe_pid int32
lockcount int64
mode int32
lock int32
lbf int32
_ [4 ]byte
cookie uintptr
off off_t
getln_buf uintptr
mustbezero_2 uintptr
shend uintptr
shlim off_t
shcnt off_t
prev_locked uintptr
next_locked uintptr
locale uintptr
}
type FILE = _IO_FILE
type va_list = uintptr
type _G_fpos64_t = struct {
_ [0 ]uint64
__opaque [16 ]int8
}
type fpos_t = _G_fpos64_t
type float_t = float32
type double_t = float64
func __FLOAT_BITS (tls *TLS , __f float32 ) uint32 {
bp := tls .Alloc (4 )
defer tls .Free (4 )
*(*float32 )(unsafe .Pointer (bp )) = __f
return *(*uint32 )(unsafe .Pointer (bp ))
}
func __DOUBLE_BITS (tls *TLS , __f float64 ) uint64 {
bp := tls .Alloc (8 )
defer tls .Free (8 )
*(*float64 )(unsafe .Pointer (bp )) = __f
return *(*uint64 )(unsafe .Pointer (bp ))
}
type syscall_arg_t = int64
func scanexp (tls *TLS , f uintptr , pok int32 ) int64 {
var c int32
var x int32
var y int64
var neg int32 = 0
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
if (c == '+' ) || (c == '-' ) {
neg = (Bool32 (c == '-' ))
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
if ((uint32 (c - '0' )) >= 10 ) && (pok != 0 ) {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
}
}
if (uint32 (c - '0' )) >= 10 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
return (-0x7fffffffffffffff - int64 (1 ))
}
for x = 0 ; ((uint32 (c - '0' )) < 10 ) && (x < (0x7fffffff / 10 )); c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
x = (((10 * x ) + c ) - '0' )
}
for y = int64 (x ); ((uint32 (c - '0' )) < 10 ) && (y < (0x7fffffffffffffff / int64 (100 ))); c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
y = (((int64 (10 ) * y ) + int64 (c )) - int64 ('0' ))
}
for ; (uint32 (c - '0' )) < 10 ; c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
}
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if neg != 0 {
return -y
}
return y
}
func decfloat (tls *TLS , f uintptr , c int32 , bits int32 , emin int32 , sign int32 , pok int32 ) float64 {
bp := tls .Alloc (512 )
defer tls .Free (512 )
var i int32
var j int32
var k int32
var a int32
var z int32
var lrp int64 = int64 (0 )
var dc int64 = int64 (0 )
var e10 int64 = int64 (0 )
var lnz int32 = 0
var gotdig int32 = 0
var gotrad int32 = 0
var rp int32
var e2 int32
var emax int32 = ((-emin - bits ) + 3 )
var denormal int32 = 0
var y float64
var frac float64 = float64 (0 )
var bias float64 = float64 (0 )
j = 0
k = 0
for ; c == '0' ; c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
gotdig = 1
}
if c == '.' {
gotrad = 1
for c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}(); c == '0' ; c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
gotdig = 1
lrp --
}
}
*(*uint32_t )(unsafe .Pointer (bp )) = uint32_t (0 )
for ; ((uint32 (c - '0' )) < 10 ) || (c == '.' ); c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
if c == '.' {
if gotrad != 0 {
break
}
gotrad = 1
lrp = dc
} else if k < (128 - 3 ) {
dc ++
if c != '0' {
lnz = int32 (dc )
}
if j != 0 {
*(*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' ))
} else {
*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) = (uint32_t (c - '0' ))
}
if PreIncInt32 (&j , 1 ) == 9 {
k ++
j = 0
}
gotdig = 1
} else {
dc ++
if c != '0' {
lnz = ((128 - 4 ) * 9 )
*(*uint32_t )(unsafe .Pointer (bp + 124 *4 )) |= (uint32_t (1 ))
}
}
}
if !(gotrad != 0 ) {
lrp = dc
}
if (gotdig != 0 ) && ((c | 32 ) == 'e' ) {
e10 = scanexp (tls , f , pok )
if e10 == (-0x7fffffffffffffff - int64 (1 )) {
if pok != 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
} else {
X__shlim (tls , f , int64 (0 ))
return float64 (0 )
}
e10 = int64 (0 )
}
lrp = lrp + (e10 )
} else if c >= 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
}
if !(gotdig != 0 ) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
X__shlim (tls , f , int64 (0 ))
return float64 (0 )
}
if !(int32 (*(*uint32_t )(unsafe .Pointer (bp ))) != 0 ) {
return (float64 (sign ) * 0.0 )
}
if ((lrp == dc ) && (dc < int64 (10 ))) && ((bits > 30 ) || ((*(*uint32_t )(unsafe .Pointer (bp )) >> bits ) == uint32_t (0 ))) {
return (float64 (sign ) * float64 (*(*uint32_t )(unsafe .Pointer (bp ))))
}
if lrp > (int64 (-emin / 2 )) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
return ((float64 (sign ) * 1.79769313486231570815e+308 ) * 1.79769313486231570815e+308 )
}
if lrp < (int64 (emin - (2 * 53 ))) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
return ((float64 (sign ) * 2.22507385850720138309e-308 ) * 2.22507385850720138309e-308 )
}
if j != 0 {
for ; j < 9 ; j ++ {
*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) *= (uint32_t (10 ))
}
k ++
j = 0
}
a = 0
z = k
e2 = 0
rp = int32 (lrp )
if ((lnz < 9 ) && (lnz <= rp )) && (rp < 18 ) {
if rp == 9 {
return (float64 (sign ) * float64 (*(*uint32_t )(unsafe .Pointer (bp ))))
}
if rp < 9 {
return ((float64 (sign ) * float64 (*(*uint32_t )(unsafe .Pointer (bp )))) / float64 (_sp10s [(8 -rp )]))
}
var bitlim int32 = (bits - (3 * (rp - 9 )))
if (bitlim > 30 ) || ((*(*uint32_t )(unsafe .Pointer (bp )) >> bitlim ) == uint32_t (0 )) {
return ((float64 (sign ) * float64 (*(*uint32_t )(unsafe .Pointer (bp )))) * float64 (_sp10s [(rp -10 )]))
}
}
for ; !(int32 (*(*uint32_t )(unsafe .Pointer (bp + uintptr ((z -1 ))*4 ))) != 0 ); z -- {
}
if (rp % 9 ) != 0 {
var rpm9 int32
if rp >= 0 {
rpm9 = (rp % 9 )
} else {
rpm9 = ((rp % 9 ) + 9 )
}
var p10 int32 = _sp10s [(8 - rpm9 )]
var carry uint32_t = uint32_t (0 )
for k = a ; k != z ; k ++ {
var tmp uint32_t = (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) % uint32_t (p10 ))
*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) = ((*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) / uint32_t (p10 )) + carry )
carry = ((uint32_t (1000000000 / p10 )) * tmp )
if (k == a ) && !(int32 (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 ))) != 0 ) {
a = ((a + 1 ) & (128 - 1 ))
rp = rp - (9 )
}
}
if carry != 0 {
*(*uint32_t )(unsafe .Pointer (bp + uintptr (PostIncInt32 (&z , 1 ))*4 )) = carry
}
rp = rp + (9 - rpm9 )
}
for (rp < (9 * 2 )) || ((rp == (9 * 2 )) && (*(*uint32_t )(unsafe .Pointer (bp + uintptr (a )*4 )) < _sth [0 ])) {
var carry uint32_t = uint32_t (0 )
e2 = e2 - (29 )
for k = ((z - 1 ) & (128 - 1 )); ; k = ((k - 1 ) & (128 - 1 )) {
var tmp uint64_t = ((uint64_t (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 ))) << 29 ) + uint64_t (carry ))
if tmp > uint64 (1000000000 ) {
carry = (uint32_t (tmp / uint64 (1000000000 )))
*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) = (uint32_t (tmp % uint64 (1000000000 )))
} else {
carry = uint32_t (0 )
*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) = uint32_t (tmp )
}
if ((k == ((z - 1 ) & (128 - 1 ))) && (k != a )) && !(int32 (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 ))) != 0 ) {
z = k
}
if k == a {
break
}
}
if carry != 0 {
rp = rp + (9 )
a = ((a - 1 ) & (128 - 1 ))
if a == z {
z = ((z - 1 ) & (128 - 1 ))
*(*uint32_t )(unsafe .Pointer (bp + uintptr (((z -1 )&(128 -1 )))*4 )) |= (*(*uint32_t )(unsafe .Pointer (bp + uintptr (z )*4 )))
}
*(*uint32_t )(unsafe .Pointer (bp + uintptr (a )*4 )) = carry
}
}
for {
var carry uint32_t = uint32_t (0 )
var sh int32 = 1
for i = 0 ; i < 2 ; i ++ {
k = ((a + i ) & (128 - 1 ))
if (k == z ) || (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) < _sth [i ]) {
i = 2
break
}
if *(*uint32_t )(unsafe .Pointer (bp + uintptr (((a +i )&(128 -1 )))*4 )) > _sth [i ] {
break
}
}
if (i == 2 ) && (rp == (9 * 2 )) {
break
}
if rp > (9 + (9 * 2 )) {
sh = 9
}
e2 = e2 + (sh )
for k = a ; k != z ; k = ((k + 1 ) & (128 - 1 )) {
var tmp uint32_t = (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) & (uint32_t ((int32 (1 ) << sh ) - 1 )))
*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) = ((*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 )) >> sh ) + carry )
carry = ((uint32_t (int32 (1000000000 ) >> sh )) * tmp )
if (k == a ) && !(int32 (*(*uint32_t )(unsafe .Pointer (bp + uintptr (k )*4 ))) != 0 ) {
a = ((a + 1 ) & (128 - 1 ))
i --
rp = rp - (9 )
}
}
if carry != 0 {
if ((z + 1 ) & (128 - 1 )) != a {
*(*uint32_t )(unsafe .Pointer (bp + uintptr (z )*4 )) = carry
z = ((z + 1 ) & (128 - 1 ))
} else {
*(*uint32_t )(unsafe .Pointer (bp + uintptr (((z -1 )&(128 -1 )))*4 )) |= (uint32_t (1 ))
}
}
}
for y = float64 (AssignInt32 (&i , 0 )); i < 2 ; i ++ {
if ((a + i ) & (128 - 1 )) == z {
*(*uint32_t )(unsafe .Pointer (bp + uintptr (((AssignInt32 (&z , ((z +1 )&(128 -1 ))))-1 ))*4 )) = uint32_t (0 )
}
y = ((1000000000.0 * y ) + float64 (*(*uint32_t )(unsafe .Pointer (bp + uintptr (((a +i )&(128 -1 )))*4 ))))
}
y = y * (float64 (sign ))
if bits > ((53 + e2 ) - emin ) {
bits = ((53 + e2 ) - emin )
if bits < 0 {
bits = 0
}
denormal = 1
}
if bits < 53 {
bias = Xcopysignl (tls , Xscalbn (tls , float64 (1 ), (((2 *53 )-bits )-1 )), y )
frac = Xfmodl (tls , y , Xscalbn (tls , float64 (1 ), (53 -bits )))
y = y - (frac )
y = y + (bias )
}
if ((a + i ) & (128 - 1 )) != z {
var t uint32_t = *(*uint32_t )(unsafe .Pointer (bp + uintptr (((a +i )&(128 -1 )))*4 ))
if (t < uint32_t (500000000 )) && ((t != 0 ) || ((((a + i ) + 1 ) & (128 - 1 )) != z )) {
frac = frac + (0.25 * float64 (sign ))
} else if t > uint32_t (500000000 ) {
frac = frac + (0.75 * float64 (sign ))
} else if t == uint32_t (500000000 ) {
if (((a + i ) + 1 ) & (128 - 1 )) == z {
frac = frac + (0.5 * float64 (sign ))
} else {
frac = frac + (0.75 * float64 (sign ))
}
}
if ((53 - bits ) >= 2 ) && !(Xfmodl (tls , frac , float64 (1 )) != 0 ) {
frac += 1
}
}
y = y + (frac )
y = y - (bias )
if ((e2 + 53 ) & 0x7fffffff ) > (emax - 5 ) {
if Xfabsl (tls , y ) >= (float64 (float64 (2 )) / 2.22044604925031308085e-16 ) {
if (denormal != 0 ) && (bits == ((53 + e2 ) - emin )) {
denormal = 0
}
y = y * (0.5 )
e2 ++
}
if ((e2 + 53 ) > emax ) || ((denormal != 0 ) && (frac != 0 )) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
}
}
return Xscalbnl (tls , y , e2 )
}
var _sth = [2 ]uint32_t {uint32_t (9007199 ), uint32_t (254740991 )}
var _sp10s = [8 ]int32 {10 , 100 , 1000 , 10000 ,
100000 , 1000000 , 10000000 , 100000000 }
func hexfloat (tls *TLS , f uintptr , bits int32 , emin int32 , sign int32 , pok int32 ) float64 {
var x uint32_t = uint32_t (0 )
var y float64 = float64 (0 )
var scale float64 = float64 (1 )
var bias float64 = float64 (0 )
var gottail int32 = 0
var gotrad int32 = 0
var gotdig int32 = 0
var rp int64 = int64 (0 )
var dc int64 = int64 (0 )
var e2 int64 = int64 (0 )
var d int32
var c int32
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
for ; c == '0' ; c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
gotdig = 1
}
if c == '.' {
gotrad = 1
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
rp = int64 (0 )
__1 :
if !(c == '0' ) {
goto __3
}
gotdig = 1
goto __2
__2 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
rp --
goto __1
goto __3
__3 :
}
for ; (((uint32 (c - '0' )) < 10 ) || ((uint32 ((c | 32 ) - 'a' )) < 6 )) || (c == '.' ); c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}() {
if c == '.' {
if gotrad != 0 {
break
}
rp = dc
gotrad = 1
} else {
gotdig = 1
if c > '9' {
d = (((c | 32 ) + 10 ) - 'a' )
} else {
d = (c - '0' )
}
if dc < int64 (8 ) {
x = ((x * uint32_t (16 )) + uint32_t (d ))
} else if dc < (int64 ((53 / 4 ) + 1 )) {
y = y + (float64 (d ) * (AssignDivFloat64 (&scale , float64 (16 ))))
} else if (d != 0 ) && !(gottail != 0 ) {
y = y + (0.5 * scale )
gottail = 1
}
dc ++
}
}
if !(gotdig != 0 ) {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if pok != 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if gotrad != 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
}
} else {
X__shlim (tls , f , int64 (0 ))
}
return (float64 (sign ) * 0.0 )
}
if !(gotrad != 0 ) {
rp = dc
}
for dc < int64 (8 ) {
x = x * (uint32_t (16 ))
dc ++
}
if (c | 32 ) == 'p' {
e2 = scanexp (tls , f , pok )
if e2 == (-0x7fffffffffffffff - int64 (1 )) {
if pok != 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
} else {
X__shlim (tls , f , int64 (0 ))
return float64 (0 )
}
e2 = int64 (0 )
}
} else {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
}
e2 = e2 + ((int64 (4 ) * rp ) - int64 (32 ))
if !(x != 0 ) {
return (float64 (sign ) * 0.0 )
}
if e2 > int64 (-emin ) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
return ((float64 (sign ) * 1.79769313486231570815e+308 ) * 1.79769313486231570815e+308 )
}
if e2 < (int64 (emin - (2 * 53 ))) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
return ((float64 (sign ) * 2.22507385850720138309e-308 ) * 2.22507385850720138309e-308 )
}
for x < 0x80000000 {
if y >= 0.5 {
x = x + (x + uint32_t (1 ))
y = y + (y - float64 (1 ))
} else {
x = x + (x )
y = y + (y )
}
e2 --
}
if int64 (bits ) > ((int64 (32 ) + e2 ) - int64 (emin )) {
bits = (int32 ((int64 (32 ) + e2 ) - int64 (emin )))
if bits < 0 {
bits = 0
}
}
if bits < 53 {
bias = Xcopysignl (tls , Xscalbn (tls , float64 (1 ), (((32 +53 )-bits )-1 )), float64 (sign ))
}
if ((bits < 32 ) && (y != 0 )) && !((x & uint32_t (1 )) != 0 ) {
x ++
y = float64 (0 )
}
y = ((bias + (float64 (sign ) * float64 (x ))) + (float64 (sign ) * y ))
y = y - (bias )
if !(y != 0 ) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
}
return Xscalbnl (tls , y , int32 (e2 ))
}
func X__floatscan (tls *TLS , f uintptr , prec int32 , pok int32 ) float64 {
var sign int32 = 1
var i size_t
var bits int32
var emin int32
var c int32
switch prec {
case 0 :
bits = 24
emin = ((-125 ) - bits )
break
case 1 :
bits = 53
emin = ((-1021 ) - bits )
break
case 2 :
bits = 53
emin = ((-1021 ) - bits )
break
default :
return float64 (0 )
}
for __isspace (tls , AssignInt32 (&c , func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}())) != 0 {
}
if (c == '+' ) || (c == '-' ) {
sign = sign - (2 * (Bool32 (c == '-' )))
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
}
for i = uint64 (0 ); (i < uint64 (8 )) && ((c | 32 ) == int32 (*(*int8 )(unsafe .Pointer (ts + uintptr (i ))))); i ++ {
if i < uint64 (7 ) {
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
}
}
if ((i == uint64 (3 )) || (i == uint64 (8 ))) || ((i > uint64 (3 )) && (pok != 0 )) {
if i != uint64 (8 ) {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if pok != 0 {
for ; i > uint64 (3 ); i -- {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
}
}
}
return (float64 (float32 (sign ) * X__builtin_inff (tls )))
}
if !(i != 0 ) {
for i = uint64 (0 ); (i < uint64 (3 )) && ((c | 32 ) == int32 (*(*int8 )(unsafe .Pointer (ts + 9 + uintptr (i ))))); i ++ {
if i < uint64 (2 ) {
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
}
}
}
if i == uint64 (3 ) {
if (func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()) != '(' {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
return float64 (X__builtin_nanf (tls , ts +13 ))
}
for i = uint64 (1 ); ; i ++ {
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
if ((((uint32 (c - '0' )) < 10 ) || ((uint32 (c - 'A' )) < 26 )) || ((uint32 (c - 'a' )) < 26 )) || (c == '_' ) {
continue
}
if c == ')' {
return float64 (X__builtin_nanf (tls , ts +13 ))
}
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if !(pok != 0 ) {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
X__shlim (tls , f , int64 (0 ))
return float64 (0 )
}
for PostDecUint64 (&i , 1 ) != 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
}
return float64 (X__builtin_nanf (tls , ts +13 ))
}
return float64 (X__builtin_nanf (tls , ts +13 ))
}
if i != 0 {
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
X__shlim (tls , f , int64 (0 ))
return float64 (0 )
}
if c == '0' {
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
if (c | 32 ) == 'x' {
return hexfloat (tls , f , bits , emin , sign , pok )
}
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
c = '0'
}
return decfloat (tls , f , c , bits , emin , sign , pok )
}
var table = [257 ]uint8 {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 ), 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 ), 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 ), Uint8FromInt32 (-1 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
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 ),
}
func X__intscan (tls *TLS , f uintptr , base uint32 , pok int32 , lim uint64 ) uint64 {
var val uintptr
var c int32
var neg int32
var x uint32
var y uint64
var bs int32
val = (uintptr (unsafe .Pointer (&table )) + uintptr (1 ))
neg = 0
if !((base > uint32 (36 )) || (base == uint32 (1 ))) {
goto __1
}
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
return uint64 (0 )
__1 :
;
__2 :
if !(__isspace (tls , AssignInt32 (&c , func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}())) != 0 ) {
goto __3
}
goto __2
__3 :
;
if !((c == '+' ) || (c == '-' )) {
goto __4
}
neg = -(Bool32 (c == '-' ))
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
__4 :
;
if !(((base == uint32 (0 )) || (base == uint32 (16 ))) && (c == '0' )) {
goto __5
}
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
if !((c | 32 ) == 'x' ) {
goto __7
}
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
if !(int32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) >= 16 ) {
goto __9
}
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if !(pok != 0 ) {
goto __10
}
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
goto __11
__10 :
X__shlim (tls , f , int64 (0 ))
__11 :
;
return uint64 (0 )
__9 :
;
base = uint32 (16 )
goto __8
__7 :
if !(base == uint32 (0 )) {
goto __12
}
base = uint32 (8 )
__12 :
;
__8 :
;
goto __6
__5 :
if !(base == uint32 (0 )) {
goto __13
}
base = uint32 (10 )
__13 :
;
if !(uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) >= base ) {
goto __14
}
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
X__shlim (tls , f , int64 (0 ))
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 22
return uint64 (0 )
__14 :
;
__6 :
;
if !(base == uint32 (10 )) {
goto __15
}
x = uint32 (0 )
__17 :
if !(((uint32 (c - '0' )) < 10 ) && (x <= ((0xffffffff / uint32 (10 )) - uint32 (1 )))) {
goto __19
}
x = ((x * uint32 (10 )) + (uint32 (c - '0' )))
goto __18
__18 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __17
goto __19
__19 :
;
y = uint64 (x )
__20 :
if !((((uint32 (c - '0' )) < 10 ) && (y <= (((2 * uint64 (0x7fffffffffffffff )) + uint64 (1 )) / uint64 (10 )))) && ((uint64 (10 ) * y ) <= (((2 * uint64 (0x7fffffffffffffff )) + uint64 (1 )) - (uint64 (c - '0' ))))) {
goto __22
}
y = ((y * uint64 (10 )) + (uint64 (c - '0' )))
goto __21
__21 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __20
goto __22
__22 :
;
if !((uint32 (c - '0' )) >= 10 ) {
goto __23
}
goto done
__23 :
;
goto __16
__15 :
if !(!((base & (base - uint32 (1 ))) != 0 )) {
goto __24
}
bs = int32 (*(*int8 )(unsafe .Pointer (ts + 14 + uintptr ((((uint32 (0x17 ) * base ) >> 5 ) & uint32 (7 ))))))
x = uint32 (0 )
__26 :
if !((uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) < base ) && (x <= (0xffffffff / uint32 (32 )))) {
goto __28
}
x = ((x << bs ) | uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))))
goto __27
__27 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __26
goto __28
__28 :
;
y = uint64 (x )
__29 :
if !((uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) < base ) && (y <= (uint64 (((2 * uint64 (0x7fffffffffffffff )) + uint64 (1 ))) >> bs ))) {
goto __31
}
y = ((y << bs ) | uint64 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))))
goto __30
__30 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __29
goto __31
__31 :
;
goto __25
__24 :
x = uint32 (0 )
__32 :
if !((uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) < base ) && (x <= ((0xffffffff / uint32 (36 )) - uint32 (1 )))) {
goto __34
}
x = ((x * base ) + uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))))
goto __33
__33 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __32
goto __34
__34 :
;
y = uint64 (x )
__35 :
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 ))))))) {
goto __37
}
y = ((y * uint64 (base )) + uint64 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))))
goto __36
__36 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __35
goto __37
__37 :
;
__25 :
;
__16 :
;
if !(uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) < base ) {
goto __38
}
__39 :
if !(uint32 (*(*uint8 )(unsafe .Pointer (val + uintptr (c )))) < base ) {
goto __41
}
goto __40
__40 :
c = func () int32 {
if (*FILE )(unsafe .Pointer ((f ))).rpos != (*FILE )(unsafe .Pointer ((f ))).shend {
return int32 (*(*uint8 )(unsafe .Pointer (PostIncUintptr (&(*FILE )(unsafe .Pointer (f )).rpos , 1 ))))
}
return X__shgetc (tls , f )
}()
goto __39
goto __41
__41 :
;
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
y = lim
if !((lim & uint64 (1 )) != 0 ) {
goto __42
}
neg = 0
__42 :
;
__38 :
;
done :
if (*FILE )(unsafe .Pointer ((f ))).shlim >= int64 (0 ) {
(*FILE )(unsafe .Pointer (f )).rpos --
} else {
}
if !(y >= lim ) {
goto __43
}
if !(!((lim & uint64 (1 )) != 0 ) && !(neg != 0 )) {
goto __44
}
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
return (lim - uint64 (1 ))
goto __45
__44 :
if !(y > lim ) {
goto __46
}
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 34
return lim
__46 :
;
__45 :
;
__43 :
;
return ((y ^ uint64 (neg )) - uint64 (neg ))
}
func X__shlim (tls *TLS , f uintptr , lim off_t ) {
(*FILE )(unsafe .Pointer (f )).shlim = lim
(*FILE )(unsafe .Pointer (f )).shcnt = ((int64 ((*FILE )(unsafe .Pointer (f )).buf ) - int64 ((*FILE )(unsafe .Pointer (f )).rpos )) / 1 )
if (lim != 0 ) && (((int64 ((*FILE )(unsafe .Pointer (f )).rend ) - int64 ((*FILE )(unsafe .Pointer (f )).rpos )) / 1 ) > lim ) {
(*FILE )(unsafe .Pointer (f )).shend = ((*FILE )(unsafe .Pointer (f )).rpos + uintptr (lim ))
} else {
(*FILE )(unsafe .Pointer (f )).shend = (*FILE )(unsafe .Pointer (f )).rend
}
}
func X__shgetc (tls *TLS , f uintptr ) int32 {
var c int32
var cnt off_t = ((*FILE )(unsafe .Pointer ((f ))).shcnt + ((int64 ((*FILE )(unsafe .Pointer ((f ))).rpos ) - int64 ((*FILE )(unsafe .Pointer ((f ))).buf )) / 1 ))
if (((*FILE )(unsafe .Pointer (f )).shlim != 0 ) && (cnt >= (*FILE )(unsafe .Pointer (f )).shlim )) || ((AssignInt32 (&c , X__uflow (tls , f ))) < 0 ) {
(*FILE )(unsafe .Pointer (f )).shcnt = (((int64 ((*FILE )(unsafe .Pointer (f )).buf ) - int64 ((*FILE )(unsafe .Pointer (f )).rpos )) / 1 ) + cnt )
(*FILE )(unsafe .Pointer (f )).shend = (*FILE )(unsafe .Pointer (f )).rpos
(*FILE )(unsafe .Pointer (f )).shlim = int64 (-1 )
return -1
}
cnt ++
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 )) {
(*FILE )(unsafe .Pointer (f )).shend = ((*FILE )(unsafe .Pointer (f )).rpos + uintptr (((*FILE )(unsafe .Pointer (f )).shlim - cnt )))
} else {
(*FILE )(unsafe .Pointer (f )).shend = (*FILE )(unsafe .Pointer (f )).rend
}
(*FILE )(unsafe .Pointer (f )).shcnt = (((int64 ((*FILE )(unsafe .Pointer (f )).buf ) - int64 ((*FILE )(unsafe .Pointer (f )).rpos )) / 1 ) + cnt )
if (*FILE )(unsafe .Pointer (f )).rpos <= (*FILE )(unsafe .Pointer (f )).buf {
*(*uint8 )(unsafe .Pointer ((*FILE )(unsafe .Pointer (f )).rpos + UintptrFromInt32 (-1 ))) = uint8 (c )
}
return c
}
func X__fpclassify (tls *TLS , x float64 ) int32 {
bp := tls .Alloc (8 )
defer tls .Free (8 )
*(*struct { f float64 })(unsafe .Pointer (bp )) = struct { f float64 }{f : x }
var e int32 = (int32 ((*(*uint64_t )(unsafe .Pointer (bp )) >> 52 ) & uint64 (0x7ff )))
if !(e != 0 ) {
if (*(*uint64_t )(unsafe .Pointer (bp )) << 1 ) != 0 {
return 3
}
return 2
}
if e == 0x7ff {
if (*(*uint64_t )(unsafe .Pointer (bp )) << 12 ) != 0 {
return 0
}
return 1
}
return 4
}
func X__fpclassifyf (tls *TLS , x float32 ) int32 {
bp := tls .Alloc (4 )
defer tls .Free (4 )
*(*struct { f float32 })(unsafe .Pointer (bp )) = struct { f float32 }{f : x }
var e int32 = (int32 ((*(*uint32_t )(unsafe .Pointer (bp )) >> 23 ) & uint32_t (0xff )))
if !(e != 0 ) {
if (*(*uint32_t )(unsafe .Pointer (bp )) << 1 ) != 0 {
return 3
}
return 2
}
if e == 0xff {
if (*(*uint32_t )(unsafe .Pointer (bp )) << 9 ) != 0 {
return 0
}
return 1
}
return 4
}
func __bswap32 (tls *TLS , __x uint32_t ) uint32_t {
return ((((__x >> 24 ) | ((__x >> 8 ) & uint32_t (0xff00 ))) | ((__x << 8 ) & uint32_t (0xff0000 ))) | (__x << 24 ))
}
func X__fpclassifyl (tls *TLS , x float64 ) int32 {
return X__fpclassify (tls , x )
}
func Xcopysignl (tls *TLS , x float64 , y float64 ) float64 {
return Xcopysign (tls , x , y )
}
func Xfabsl (tls *TLS , x float64 ) float64 {
return Xfabs (tls , x )
}
func Xfmodl (tls *TLS , x float64 , y float64 ) float64 {
return Xfmod (tls , x , y )
}
func Xnanf (tls *TLS , s uintptr ) float32 {
return X__builtin_nanf (tls , ts +13 )
}
func Xscalbn (tls *TLS , x float64 , n int32 ) float64 {
bp := tls .Alloc (8 )
defer tls .Free (8 )
var y double_t = x
if n > 1023 {
y = y * (0x1p1023 )
n = n - (1023 )
if n > 1023 {
y = y * (0x1p1023 )
n = n - (1023 )
if n > 1023 {
n = 1023
}
}
} else if n < -1022 {
y = y * (float64 (0x1p-1022 ) * 0x1p53 )
n = n + (1022 - 53 )
if n < -1022 {
y = y * (float64 (0x1p-1022 ) * 0x1p53 )
n = n + (1022 - 53 )
if n < -1022 {
n = -1022
}
}
}
*(*uint64_t )(unsafe .Pointer (bp )) = ((uint64_t (0x3ff + n )) << 52 )
x = (y * *(*float64 )(unsafe .Pointer (bp )))
return x
}
func Xscalbnl (tls *TLS , x float64 , n int32 ) float64 {
return Xscalbn (tls , x , n )
}
type max_align_t = struct {
__ll int64
__ld float64
}
type imaxdiv_t = struct {
quot intmax_t
rem intmax_t
}
type iovec = struct {
iov_base uintptr
iov_len size_t
}
type socklen_t = uint32
type sa_family_t = uint16
type msghdr = struct {
msg_name uintptr
msg_namelen socklen_t
_ [4 ]byte
msg_iov uintptr
msg_iovlen int32
__pad1 int32
msg_control uintptr
msg_controllen socklen_t
__pad2 int32
msg_flags int32
_ [4 ]byte
}
type cmsghdr = struct {
cmsg_len socklen_t
__pad1 int32
cmsg_level int32
cmsg_type int32
}
type linger = struct {
l_onoff int32
l_linger int32
}
type sockaddr = struct {
sa_family sa_family_t
sa_data [14 ]int8
}
type sockaddr_storage = struct {
ss_family sa_family_t
__ss_padding [118 ]int8
__ss_align uint64
}
type in_port_t = uint16_t
type in_addr_t = uint32_t
type in_addr = struct { s_addr in_addr_t }
type sockaddr_in = struct {
sin_family sa_family_t
sin_port in_port_t
sin_addr struct { s_addr in_addr_t }
sin_zero [8 ]uint8_t
}
type in6_addr = struct {
__in6_union struct {
_ [0 ]uint32
__s6_addr [16 ]uint8_t
}
}
type sockaddr_in6 = struct {
sin6_family sa_family_t
sin6_port in_port_t
sin6_flowinfo uint32_t
sin6_addr struct {
__in6_union struct {
_ [0 ]uint32
__s6_addr [16 ]uint8_t
}
}
sin6_scope_id uint32_t
}
type ipv6_mreq = struct {
ipv6mr_multiaddr struct {
__in6_union struct {
_ [0 ]uint32
__s6_addr [16 ]uint8_t
}
}
ipv6mr_interface uint32
}
type ip_opts = struct {
ip_dst struct { s_addr in_addr_t }
ip_opts [40 ]int8
}
type ip_mreq = struct {
imr_multiaddr struct { s_addr in_addr_t }
imr_interface struct { s_addr in_addr_t }
}
type ip_mreqn = struct {
imr_multiaddr struct { s_addr in_addr_t }
imr_address struct { s_addr in_addr_t }
imr_ifindex int32
}
type ip_mreq_source = struct {
imr_multiaddr struct { s_addr in_addr_t }
imr_interface struct { s_addr in_addr_t }
imr_sourceaddr struct { s_addr in_addr_t }
}
type ip_msfilter = struct {
imsf_multiaddr struct { s_addr in_addr_t }
imsf_interface struct { s_addr in_addr_t }
imsf_fmode uint32_t
imsf_numsrc uint32_t
imsf_slist [1 ]struct { s_addr in_addr_t }
}
type group_req = struct {
gr_interface uint32_t
_ [4 ]byte
gr_group struct {
ss_family sa_family_t
__ss_padding [118 ]int8
__ss_align uint64
}
}
type group_source_req = struct {
gsr_interface uint32_t
_ [4 ]byte
gsr_group struct {
ss_family sa_family_t
__ss_padding [118 ]int8
__ss_align uint64
}
gsr_source struct {
ss_family sa_family_t
__ss_padding [118 ]int8
__ss_align uint64
}
}
type group_filter = struct {
gf_interface uint32_t
_ [4 ]byte
gf_group struct {
ss_family sa_family_t
__ss_padding [118 ]int8
__ss_align uint64
}
gf_fmode uint32_t
gf_numsrc uint32_t
gf_slist [1 ]struct {
ss_family sa_family_t
__ss_padding [118 ]int8
__ss_align uint64
}
}
type in_pktinfo = struct {
ipi_ifindex int32
ipi_spec_dst struct { s_addr in_addr_t }
ipi_addr struct { s_addr in_addr_t }
}
type in6_pktinfo = struct {
ipi6_addr struct {
__in6_union struct {
_ [0 ]uint32
__s6_addr [16 ]uint8_t
}
}
ipi6_ifindex uint32
}
type ip6_mtuinfo = struct {
ip6m_addr struct {
sin6_family sa_family_t
sin6_port in_port_t
sin6_flowinfo uint32_t
sin6_addr struct {
__in6_union struct {
_ [0 ]uint32
__s6_addr [16 ]uint8_t
}
}
sin6_scope_id uint32_t
}
ip6m_mtu uint32_t
}
type addrinfo = struct {
ai_flags int32
ai_family int32
ai_socktype int32
ai_protocol int32
ai_addrlen socklen_t
_ [4 ]byte
ai_addr uintptr
ai_canonname uintptr
ai_next uintptr
}
type netent = struct {
n_name uintptr
n_aliases uintptr
n_addrtype int32
n_net uint32_t
}
type hostent = struct {
h_name uintptr
h_aliases uintptr
h_addrtype int32
h_length int32
h_addr_list uintptr
}
type servent = struct {
s_name uintptr
s_aliases uintptr
s_port int32
_ [4 ]byte
s_proto uintptr
}
type protoent = struct {
p_name uintptr
p_aliases uintptr
p_proto int32
_ [4 ]byte
}
type aibuf = struct {
ai struct {
ai_flags int32
ai_family int32
ai_socktype int32
ai_protocol int32
ai_addrlen socklen_t
_ [4 ]byte
ai_addr uintptr
ai_canonname uintptr
ai_next uintptr
}
sa struct {
sin struct {
sin_family sa_family_t
sin_port in_port_t
sin_addr struct { s_addr in_addr_t }
sin_zero [8 ]uint8_t
}
_ [12 ]byte
}
lock [1 ]int32
slot int16
ref int16
_ [4 ]byte
}
type sa = struct {
sin struct {
sin_family sa_family_t
sin_port in_port_t
sin_addr struct { s_addr in_addr_t }
sin_zero [8 ]uint8_t
}
_ [12 ]byte
}
type address = struct {
family int32
scopeid uint32
addr [16 ]uint8_t
sortkey int32
}
type service = struct {
port uint16_t
proto uint8
socktype uint8
}
type resolvconf = struct {
ns [3 ]struct {
family int32
scopeid uint32
addr [16 ]uint8_t
sortkey int32
}
nns uint32
attempts uint32
ndots uint32
timeout uint32
}
func Xfreeaddrinfo (tls *TLS , p uintptr ) {
var cnt size_t
cnt = uint64 (1 )
__1 :
if !((*addrinfo )(unsafe .Pointer (p )).ai_next != 0 ) {
goto __3
}
goto __2
__2 :
cnt ++
p = (*addrinfo )(unsafe .Pointer (p )).ai_next
goto __1
goto __3
__3 :
;
var b uintptr = (p - uintptr ((uint64 ((uintptr (0 ) )))))
b -= 88 * (uintptr ((*aibuf )(unsafe .Pointer (b )).slot ))
if !(int32 (AssignSubPtrInt16 (b +82 , int16 (cnt ))) != 0 ) {
Xfree (tls , b )
}
}
type time_t = int64
type clockid_t = int32
type timespec = struct {
tv_sec time_t
tv_nsec int64
}
type pthread_t = uintptr
type pthread_once_t = int32
type pthread_key_t = uint32
type pthread_spinlock_t = int32
type pthread_mutexattr_t = struct { __attr uint32 }
type pthread_condattr_t = struct { __attr uint32 }
type pthread_barrierattr_t = struct { __attr uint32 }
type pthread_rwlockattr_t = struct { __attr [2 ]uint32 }
type __sigset_t = struct { __bits [16 ]uint64 }
type sigset_t = __sigset_t
type pthread_attr_t = struct {
__u struct {
_ [0 ]uint64
__i [14 ]int32
}
}
type pthread_mutex_t = struct {
__u struct {
_ [0 ]uint64
__i [10 ]int32
}
}
type pthread_cond_t = struct {
__u struct {
_ [0 ]uint64
__i [12 ]int32
}
}
type pthread_rwlock_t = struct {
__u struct {
_ [0 ]uint64
__i [14 ]int32
}
}
type pthread_barrier_t = struct {
__u struct {
_ [0 ]uint64
__i [8 ]int32
}
}
type sched_param = struct {
sched_priority int32
__reserved1 int32
__reserved2 [2 ]struct {
__reserved1 time_t
__reserved2 int64
}
__reserved3 int32
_ [4 ]byte
}
type timer_t = uintptr
type clock_t = int64
type tm = struct {
tm_sec int32
tm_min int32
tm_hour int32
tm_mday int32
tm_mon int32
tm_year int32
tm_wday int32
tm_yday int32
tm_isdst int32
_ [4 ]byte
tm_gmtoff int64
tm_zone uintptr
}
type itimerspec = struct {
it_interval struct {
tv_sec time_t
tv_nsec int64
}
it_value struct {
tv_sec time_t
tv_nsec int64
}
}
type __ptcb = struct {
__f uintptr
__x uintptr
__next uintptr
}
func Xgetaddrinfo (tls *TLS , host uintptr , serv uintptr , hint uintptr , res uintptr ) int32 {
bp := tls .Alloc (1608 )
defer tls .Free (1608 )
var outcanon uintptr
var nservs int32
var naddrs int32
var nais int32
var canon_len int32
var i int32
var j int32
var k int32
var family int32 = 0
var flags int32 = 0
var proto int32 = 0
var socktype int32 = 0
var out uintptr
if !(host != 0 ) && !(serv != 0 ) {
return -2
}
if hint != 0 {
family = (*addrinfo )(unsafe .Pointer (hint )).ai_family
flags = (*addrinfo )(unsafe .Pointer (hint )).ai_flags
proto = (*addrinfo )(unsafe .Pointer (hint )).ai_protocol
socktype = (*addrinfo )(unsafe .Pointer (hint )).ai_socktype
var mask int32 = ((((((0x01 | 0x02 ) | 0x04 ) | 0x08 ) | 0x10 ) | 0x20 ) | 0x400 )
if (flags & mask ) != flags {
return -1
}
switch family {
case 2 :
fallthrough
case 10 :
fallthrough
case 0 :
break
fallthrough
default :
return -6
}
}
if (flags & 0x20 ) != 0 {
Xabort (tls )
}
nservs = X__lookup_serv (tls , bp , serv , proto , socktype , flags )
if nservs < 0 {
return nservs
}
naddrs = X__lookup_name (tls , bp +8 , bp +1352 , host , family , flags )
if naddrs < 0 {
return naddrs
}
nais = (nservs * naddrs )
canon_len = int32 (Xstrlen (tls , bp +1352 ))
out = Xcalloc (tls , uint64 (1 ), (((uint64 (nais ) * uint64 (unsafe .Sizeof (aibuf {}))) + uint64 (canon_len )) + uint64 (1 )))
if !(out != 0 ) {
return -10
}
if canon_len != 0 {
outcanon = (out + uintptr (nais )*88 )
Xmemcpy (tls , outcanon , bp +1352 , (uint64 (canon_len + 1 )))
} else {
outcanon = uintptr (0 )
}
for k = AssignInt32 (&i , 0 ); i < naddrs ; i ++ {
j = 0
__1 :
if !(j < nservs ) {
goto __3
}
{
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).slot = int16 (k )
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).ai .ai_family = (*address )(unsafe .Pointer (bp + 8 + uintptr (i )*28 )).family
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).ai .ai_socktype = int32 ((*service )(unsafe .Pointer (bp + uintptr (j )*4 )).socktype )
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).ai .ai_protocol = int32 ((*service )(unsafe .Pointer (bp + uintptr (j )*4 )).proto )
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).ai .ai_addrlen = func () uint32 {
if (*address )(unsafe .Pointer (bp +8 +uintptr (i )*28 )).family == 2 {
return uint32 (unsafe .Sizeof (sockaddr_in {}))
}
return uint32 (unsafe .Sizeof (sockaddr_in6 {}))
}()
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).ai .ai_addr = (out + uintptr (k )*88 + 48 )
(*aibuf )(unsafe .Pointer (out + uintptr (k )*88 )).ai .ai_canonname = outcanon
if k != 0 {
(*aibuf )(unsafe .Pointer (out + uintptr ((k -1 ))*88 )).ai .ai_next = (out + uintptr (k )*88 )
}
switch (*address )(unsafe .Pointer (bp + 8 + uintptr (i )*28 )).family {
case 2 :
(*sockaddr_in )(unsafe .Pointer (out + uintptr (k )*88 + 48 )).sin_family = sa_family_t (2 )
(*sockaddr_in )(unsafe .Pointer (out + uintptr (k )*88 + 48 )).sin_port = Xhtons (tls , (*service )(unsafe .Pointer (bp +uintptr (j )*4 )).port )
Xmemcpy (tls , (out + uintptr (k )*88 + 48 + 4 ), (bp + 8 + uintptr (i )*28 + 8 ), uint64 (4 ))
break
case 10 :
(*sockaddr_in6 )(unsafe .Pointer (out + uintptr (k )*88 + 48 )).sin6_family = sa_family_t (10 )
(*sockaddr_in6 )(unsafe .Pointer (out + uintptr (k )*88 + 48 )).sin6_port = Xhtons (tls , (*service )(unsafe .Pointer (bp +uintptr (j )*4 )).port )
(*sockaddr_in6 )(unsafe .Pointer (out + uintptr (k )*88 + 48 )).sin6_scope_id = (*address )(unsafe .Pointer (bp + 8 + uintptr (i )*28 )).scopeid
Xmemcpy (tls , (out + uintptr (k )*88 + 48 + 8 ), (bp + 8 + uintptr (i )*28 + 8 ), uint64 (16 ))
break
}
}
goto __2
__2 :
j ++
k ++
goto __1
goto __3
__3 :
}
(*aibuf )(unsafe .Pointer (out )).ref = int16 (nais )
*(*uintptr )(unsafe .Pointer (res )) = (out )
return 0
}
type ucred = struct {
pid pid_t
uid uid_t
gid gid_t
}
type mmsghdr = struct {
msg_hdr struct {
msg_name uintptr
msg_namelen socklen_t
_ [4 ]byte
msg_iov uintptr
msg_iovlen int32
__pad1 int32
msg_control uintptr
msg_controllen socklen_t
__pad2 int32
msg_flags int32
_ [4 ]byte
}
msg_len uint32
_ [4 ]byte
}
func Xgethostbyaddr (tls *TLS , a uintptr , l socklen_t , af int32 ) uintptr {
bp := tls .Alloc (8 )
defer tls .Free (8 )
var size size_t = uint64 (63 )
var err int32
for ok := true ; ok ; ok = (err == 34 ) {
Xfree (tls , _sh )
_sh = Xmalloc (tls , AssignAddUint64 (&size , (size +uint64 (1 ))))
if !(_sh != 0 ) {
(*(*int32 )(unsafe .Pointer (X__h_errno_location (tls )))) = 3
return uintptr (0 )
}
err = Xgethostbyaddr_r (tls , a , l , af , _sh ,
(_sh + uintptr (1 )*32 ), (size - size_t (unsafe .Sizeof (hostent {}))), bp , X__h_errno_location (tls ))
}
if err != 0 {
return uintptr (0 )
}
return _sh
}
var _sh uintptr
func Xgethostbyaddr_r (tls *TLS , a uintptr , l socklen_t , af int32 , h uintptr , buf uintptr , buflen size_t , res uintptr , err uintptr ) int32 {
bp := tls .Alloc (28 )
defer tls .Free (28 )
*(*struct {
sin sockaddr_in
_ [12 ]byte
})(unsafe .Pointer (bp )) = struct {
sin sockaddr_in
_ [12 ]byte
}{}
(*sockaddr_in )(unsafe .Pointer (bp )).sin_family = sa_family_t (af )
var sl socklen_t
if af == 10 {
sl = uint32 (unsafe .Sizeof (sockaddr_in6 {}))
} else {
sl = uint32 (unsafe .Sizeof (sockaddr_in {}))
}
var i int32
*(*uintptr )(unsafe .Pointer (res )) = uintptr (0 )
if (af == 10 ) && (l == socklen_t (16 )) {
Xmemcpy (tls , (bp + 8 ), a , uint64 (16 ))
} else if (af == 2 ) && (l == socklen_t (4 )) {
Xmemcpy (tls , (bp + 4 ), a , uint64 (4 ))
} else {
*(*int32 )(unsafe .Pointer (err )) = 3
return 22
}
i = (int32 (uintptr_t (buf ) & (uint64 (unsafe .Sizeof (uintptr (0 ))) - uint64 (1 ))))
if !(i != 0 ) {
i = int32 (unsafe .Sizeof (uintptr (0 )))
}
if buflen <= (((uint64 (5 ) * uint64 (unsafe .Sizeof (uintptr (0 )))) - uint64 (i )) + uint64 (l )) {
return 34
}
buf += (uintptr (uint64 (unsafe .Sizeof (uintptr (0 ))) - uint64 (i )))
buflen = buflen - (((uint64 (5 ) * uint64 (unsafe .Sizeof (uintptr (0 )))) - uint64 (i )) + uint64 (l ))
(*hostent )(unsafe .Pointer (h )).h_addr_list = buf
buf += (uintptr (uint64 (2 ) * uint64 (unsafe .Sizeof (uintptr (0 )))))
(*hostent )(unsafe .Pointer (h )).h_aliases = buf
buf += (uintptr (uint64 (2 ) * uint64 (unsafe .Sizeof (uintptr (0 )))))
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_addr_list )) = buf
Xmemcpy (tls , *(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_addr_list )), a , uint64 (l ))
buf += uintptr (l )
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_addr_list + 1 *8 )) = uintptr (0 )
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases )) = buf
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases + 1 *8 )) = uintptr (0 )
switch Xgetnameinfo (tls , bp , sl , buf , uint32 (buflen ), uintptr (0 ), uint32 (0 ), 0 ) {
case -3 :
*(*int32 )(unsafe .Pointer (err )) = 2
return 11
case -12 :
return 34
default :
fallthrough
case -10 :
fallthrough
case -11 :
fallthrough
case -4 :
*(*int32 )(unsafe .Pointer (err )) = 3
return *(*int32 )(unsafe .Pointer (X___errno_location (tls )))
case 0 :
break
}
(*hostent )(unsafe .Pointer (h )).h_addrtype = af
(*hostent )(unsafe .Pointer (h )).h_length = int32 (l )
(*hostent )(unsafe .Pointer (h )).h_name = *(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases ))
*(*uintptr )(unsafe .Pointer (res )) = h
return 0
}
func Xgethostbyname (tls *TLS , name uintptr ) uintptr {
return Xgethostbyname2 (tls , name , 2 )
}
func Xgethostbyname2 (tls *TLS , name uintptr , af int32 ) uintptr {
bp := tls .Alloc (8 )
defer tls .Free (8 )
var size size_t = uint64 (63 )
var err int32
for ok := true ; ok ; ok = (err == 34 ) {
Xfree (tls , _sh1 )
_sh1 = Xmalloc (tls , AssignAddUint64 (&size , (size +uint64 (1 ))))
if !(_sh1 != 0 ) {
(*(*int32 )(unsafe .Pointer (X__h_errno_location (tls )))) = 3
return uintptr (0 )
}
err = Xgethostbyname2_r (tls , name , af , _sh1 ,
(_sh1 + uintptr (1 )*32 ), (size - size_t (unsafe .Sizeof (hostent {}))), bp , X__h_errno_location (tls ))
}
if err != 0 {
return uintptr (0 )
}
return _sh1
}
var _sh1 uintptr
func Xgethostbyname2_r (tls *TLS , name uintptr , af int32 , h uintptr , buf uintptr , buflen size_t , res uintptr , err uintptr ) int32 {
bp := tls .Alloc (1600 )
defer tls .Free (1600 )
var i int32
var cnt int32
var align size_t
var need size_t
*(*uintptr )(unsafe .Pointer (res )) = uintptr (0 )
cnt = X__lookup_name (tls , bp , bp +1344 , name , af , 0x02 )
if cnt < 0 {
switch cnt {
case -2 :
*(*int32 )(unsafe .Pointer (err )) = 1
return 2
fallthrough
case -3 :
*(*int32 )(unsafe .Pointer (err )) = 2
return 11
fallthrough
default :
fallthrough
case -4 :
*(*int32 )(unsafe .Pointer (err )) = 3
return 74
fallthrough
case -10 :
fallthrough
case -11 :
*(*int32 )(unsafe .Pointer (err )) = 3
return *(*int32 )(unsafe .Pointer (X___errno_location (tls )))
}
}
(*hostent )(unsafe .Pointer (h )).h_addrtype = af
(*hostent )(unsafe .Pointer (h )).h_length = func () int32 {
if af == 10 {
return 16
}
return 4
}()
align = (-uintptr_t (buf ) & (uint64 (unsafe .Sizeof (uintptr (0 ))) - uint64 (1 )))
need = (uint64 (4 ) * uint64 (unsafe .Sizeof (uintptr (0 ))))
need = need + ((uint64 (cnt + 1 )) * (uint64 (unsafe .Sizeof (uintptr (0 ))) + uint64 ((*hostent )(unsafe .Pointer (h )).h_length )))
need = need + (Xstrlen (tls , name ) + uint64 (1 ))
need = need + (Xstrlen (tls , bp +1344 ) + uint64 (1 ))
need = need + (align )
if need > buflen {
return 34
}
buf += uintptr (align )
(*hostent )(unsafe .Pointer (h )).h_aliases = buf
buf += (uintptr (uint64 (3 ) * uint64 (unsafe .Sizeof (uintptr (0 )))))
(*hostent )(unsafe .Pointer (h )).h_addr_list = buf
buf += (uintptr ((uint64 (cnt + 1 )) * uint64 (unsafe .Sizeof (uintptr (0 )))))
for i = 0 ; i < cnt ; i ++ {
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_addr_list + uintptr (i )*8 )) = buf
buf += uintptr ((*hostent )(unsafe .Pointer (h )).h_length )
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 ))
}
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_addr_list + uintptr (i )*8 )) = uintptr (0 )
(*hostent )(unsafe .Pointer (h )).h_name = AssignPtrUintptr ((*hostent )(unsafe .Pointer (h )).h_aliases , buf )
Xstrcpy (tls , (*hostent )(unsafe .Pointer (h )).h_name , bp +1344 )
buf += (uintptr (Xstrlen (tls , (*hostent )(unsafe .Pointer (h )).h_name ) + uint64 (1 )))
if Xstrcmp (tls , (*hostent )(unsafe .Pointer (h )).h_name , name ) != 0 {
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases + 1 *8 )) = buf
Xstrcpy (tls , *(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases + 1 *8 )), name )
buf += (uintptr (Xstrlen (tls , *(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases + 1 *8 ))) + uint64 (1 )))
} else {
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases + 1 *8 )) = uintptr (0 )
}
*(*uintptr )(unsafe .Pointer ((*hostent )(unsafe .Pointer (h )).h_aliases + 2 *8 )) = uintptr (0 )
*(*uintptr )(unsafe .Pointer (res )) = h
return 0
}
type if_nameindex = struct {
if_index uint32
_ [4 ]byte
if_name uintptr
}
type ifaddr = struct {
ifa_addr struct {
sa_family sa_family_t
sa_data [14 ]int8
}
ifa_ifu struct {
ifu_broadaddr struct {
sa_family sa_family_t
sa_data [14 ]int8
}
}
ifa_ifp uintptr
ifa_next uintptr
}
type ifmap = struct {
mem_start uint64
mem_end uint64
base_addr uint16
irq uint8
dma uint8
port uint8
_ [3 ]byte
}
type ifreq = struct {
ifr_ifrn struct { ifrn_name [16 ]int8 }
ifr_ifru struct {
_ [0 ]uint64
ifru_addr struct {
sa_family sa_family_t
sa_data [14 ]int8
}
_ [8 ]byte
}
}
type ifconf = struct {
ifc_len int32
_ [4 ]byte
ifc_ifcu struct { ifcu_buf uintptr }
}
type ns_sect = uint32
type __ns_msg = struct {
_msg uintptr
_eom uintptr
_id uint16_t
_flags uint16_t
_counts [4 ]uint16_t
_ [4 ]byte
_sections [4 ]uintptr
_sect ns_sect
_rrnum int32
_msg_ptr uintptr
}
type ns_msg = __ns_msg
type _ns_flagdata = struct {
mask int32
shift int32
}
type __ns_rr = struct {
name [1025 ]int8
_ [1 ]byte
__type uint16_t
rr_class uint16_t
_ [2 ]byte
ttl uint32_t
rdlength uint16_t
_ [2 ]byte
rdata uintptr
}
type ns_rr = __ns_rr
type ns_flag = uint32
type ns_opcode = uint32
type ns_rcode = uint32
type ns_update_operation = uint32
type ns_tsig_key1 = struct {
name [1025 ]int8
alg [1025 ]int8
_ [6 ]byte
data uintptr
len int32
_ [4 ]byte
}
type ns_tsig_key = ns_tsig_key1
type ns_tcp_tsig_state1 = struct {
counter int32
_ [4 ]byte
key uintptr
ctx uintptr
sig [512 ]uint8
siglen int32
_ [4 ]byte
}
type ns_tcp_tsig_state = ns_tcp_tsig_state1
type ns_type = uint32
type ns_class = uint32
type ns_key_types = uint32
type ns_cert_types = uint32
type HEADER = struct {
_ [0 ]uint32
id uint32
qdcount uint32
nscount uint32
}
type __res_state = struct {
retrans int32
retry int32
options uint64
nscount int32
nsaddr_list [3 ]struct {
sin_family sa_family_t
sin_port in_port_t
sin_addr struct { s_addr in_addr_t }
sin_zero [8 ]uint8_t
}
id uint16
_ [2 ]byte
dnsrch [7 ]uintptr
defdname [256 ]int8
pfcode uint64
ndots uint32
sort_list [10 ]struct {
addr struct { s_addr in_addr_t }
mask uint32_t
}
_ [4 ]byte
qhook uintptr
rhook uintptr
res_h_errno int32
_vcsock int32
_flags uint32
_ [4 ]byte
_u struct {
_ [0 ]uint64
pad [52 ]int8
_ [4 ]byte
}
}
type res_state = uintptr
type res_sym = struct {
number int32
_ [4 ]byte
name uintptr
humanname uintptr
}
func itoa (tls *TLS , p uintptr , x uint32 ) uintptr {
p += (uintptr (uint64 (3 ) * uint64 (unsafe .Sizeof (int32 (0 )))))
*(*int8 )(unsafe .Pointer (PreDecUintptr (&p , 1 ))) = int8 (0 )
for ok := true ; ok ; ok = x != 0 {
*(*int8 )(unsafe .Pointer (PreDecUintptr (&p , 1 ))) = (int8 (uint32 ('0' ) + (x % uint32 (10 ))))
x = x / (uint32 (10 ))
}
return p
}
func mkptr4 (tls *TLS , s uintptr , ip uintptr ) {
bp := tls .Alloc (32 )
defer tls .Free (32 )
Xsprintf (tls , s , ts +23 ,
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 )))))
}
func mkptr6 (tls *TLS , s uintptr , ip uintptr ) {
var i int32
for i = 15 ; i >= 0 ; i -- {
*(*int8 )(unsafe .Pointer (PostIncUintptr (&s , 1 ))) = _sxdigits [(int32 (*(*uint8 )(unsafe .Pointer (ip + uintptr (i )))) & 15 )]
*(*int8 )(unsafe .Pointer (PostIncUintptr (&s , 1 ))) = int8 ('.' )
*(*int8 )(unsafe .Pointer (PostIncUintptr (&s , 1 ))) = _sxdigits [(int32 (*(*uint8 )(unsafe .Pointer (ip + uintptr (i )))) >> 4 )]
*(*int8 )(unsafe .Pointer (PostIncUintptr (&s , 1 ))) = int8 ('.' )
}
Xstrcpy (tls , s , ts +48 )
}
var _sxdigits = *(*[17 ]int8 )(unsafe .Pointer (ts + 57 ))
func reverse_hosts (tls *TLS , buf uintptr , a uintptr , scopeid uint32 , family int32 ) {
bp := tls .Alloc (556 )
defer tls .Free (556 )
var p uintptr
var z uintptr
var _buf [1032 ]uint8
_ = _buf
var f uintptr = Xfopen (tls , ts +74 , ts +85 )
if !(f != 0 ) {
return
}
if family == 2 {
Xmemcpy (tls , (bp + uintptr (12 )), a , uint64 (4 ))
Xmemcpy (tls , bp , ts +88 , uint64 (12 ))
a = bp
}
for Xfgets (tls , bp +16 , int32 (unsafe .Sizeof ([512 ]int8 {})), f ) != 0 {
if AssignUintptr (&p , Xstrchr (tls , bp +16 , '#' )) != 0 {
*(*int8 )(unsafe .Pointer (PostIncUintptr (&p , 1 ))) = int8 ('\n' )
*(*int8 )(unsafe .Pointer (p )) = int8 (0 )
}
for p = bp + 16 ; (*(*int8 )(unsafe .Pointer (p )) != 0 ) && !(__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (p )))) != 0 ); p ++ {
}
*(*int8 )(unsafe .Pointer (PostIncUintptr (&p , 1 ))) = int8 (0 )
if X__lookup_ipliteral (tls , bp +528 , bp +16 , 0 ) <= 0 {
continue
}
if (*address )(unsafe .Pointer (bp +528 )).family == 2 {
Xmemcpy (tls , ((bp + 528 + 8 ) + uintptr (12 )), bp +528 +8 , uint64 (4 ))
Xmemcpy (tls , bp +528 +8 , ts +88 , uint64 (12 ))
(*address )(unsafe .Pointer (bp + 528 )).scopeid = uint32 (0 )
}
if (Xmemcmp (tls , a , bp +528 +8 , uint64 (16 )) != 0 ) || ((*address )(unsafe .Pointer (bp +528 )).scopeid != scopeid ) {
continue
}
for ; (*(*int8 )(unsafe .Pointer (p )) != 0 ) && (__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (p )))) != 0 ); p ++ {
}
for z = p ; (*(*int8 )(unsafe .Pointer (z )) != 0 ) && !(__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (z )))) != 0 ); z ++ {
}
*(*int8 )(unsafe .Pointer (z )) = int8 (0 )
if ((int64 (z ) - int64 (p )) / 1 ) < int64 (256 ) {
Xmemcpy (tls , buf , p , (uint64 (((int64 (z ) - int64 (p )) / 1 ) + int64 (1 ))))
break
}
}
Xfclose (tls , f )
}
func reverse_services (tls *TLS , buf uintptr , port int32 , dgram int32 ) {
Xabort (tls )
}
func Xgetnameinfo (tls *TLS , sa1 uintptr , sl socklen_t , node uintptr , nodelen socklen_t , serv uintptr , servlen socklen_t , flags int32 ) int32 {
bp := tls .Alloc (347 )
defer tls .Free (347 )
var af int32 = int32 ((*sockaddr )(unsafe .Pointer (sa1 )).sa_family )
var a uintptr
var scopeid uint32
switch af {
case 2 :
a = (sa1 + 4 )
if (uint64 (sl ) < uint64 (unsafe .Sizeof (sockaddr_in {}))) {
return -6
}
mkptr4 (tls , bp , a )
scopeid = uint32 (0 )
break
case 10 :
a = (sa1 + 8 )
if (uint64 (sl ) < uint64 (unsafe .Sizeof (sockaddr_in6 {}))) {
return -6
}
if Xmemcmp (tls , a , ts +88 , uint64 (12 )) != 0 {
mkptr6 (tls , bp , a )
} else {
mkptr4 (tls , bp , (a + uintptr (12 )))
}
scopeid = (*sockaddr_in6 )(unsafe .Pointer (sa1 )).sin6_scope_id
break
default :
return -6
}
if (node != 0 ) && (nodelen != 0 ) {
*(*int8 )(unsafe .Pointer (bp + 78 )) = int8 (0 )
if !((flags & 0x01 ) != 0 ) {
reverse_hosts (tls , bp +78 , a , scopeid , af )
}
if !(int32 (*(*int8 )(unsafe .Pointer (bp + 78 ))) != 0 ) && !((flags & 0x01 ) != 0 ) {
Xabort (tls )
}
if !(int32 (*(*int8 )(unsafe .Pointer (bp + 78 ))) != 0 ) {
if (flags & 0x08 ) != 0 {
return -2
}
Xinet_ntop (tls , af , a , bp +78 , uint32 (unsafe .Sizeof ([256 ]int8 {})))
if scopeid != 0 {
Xabort (tls )
}
}
if Xstrlen (tls , bp +78 ) >= size_t (nodelen ) {
return -12
}
Xstrcpy (tls , node , bp +78 )
}
if (serv != 0 ) && (servlen != 0 ) {
var p uintptr = bp + 78
var port int32 = int32 (Xntohs (tls , (*sockaddr_in )(unsafe .Pointer (sa1 )).sin_port ))
*(*int8 )(unsafe .Pointer (bp + 78 )) = int8 (0 )
if !((flags & 0x02 ) != 0 ) {
reverse_services (tls , bp +78 , port , (flags & 0x10 ))
}
if !(int32 (*(*int8 )(unsafe .Pointer (p ))) != 0 ) {
p = itoa (tls , bp +334 , uint32 (port ))
}
if Xstrlen (tls , p ) >= size_t (servlen ) {
return -12
}
Xstrcpy (tls , serv , p )
}
return 0
}
var Xh_errno int32
func X__h_errno_location (tls *TLS ) uintptr {
return uintptr (unsafe .Pointer (&Xh_errno ))
}
func X__inet_aton (tls *TLS , s0 uintptr , dest uintptr ) int32 {
bp := tls .Alloc (40 )
defer tls .Free (40 )
var s uintptr = s0
var d uintptr = dest
*(*[4 ]uint64 )(unsafe .Pointer (bp )) = [4 ]uint64 {0 : uint64 (0 )}
var i int32
for i = 0 ; i < 4 ; i ++ {
*(*uint64 )(unsafe .Pointer (bp + uintptr (i )*8 )) = Xstrtoul (tls , s , bp +32 , 0 )
if ((*(*uintptr )(unsafe .Pointer (bp + 32 )) == s ) || ((*(*int8 )(unsafe .Pointer (*(*uintptr )(unsafe .Pointer (bp + 32 )))) != 0 ) && (int32 (*(*int8 )(unsafe .Pointer (*(*uintptr )(unsafe .Pointer (bp + 32 ))))) != '.' ))) || !(func () int32 {
if 0 != 0 {
return Xisdigit (tls , int32 (*(*int8 )(unsafe .Pointer (s ))))
}
return (Bool32 (((uint32 (*(*int8 )(unsafe .Pointer (s )))) - uint32 ('0' )) < uint32 (10 )))
}() != 0 ) {
return 0
}
if !(int32 (*(*int8 )(unsafe .Pointer (*(*uintptr )(unsafe .Pointer (bp + 32 ))))) != 0 ) {
break
}
s = (*(*uintptr )(unsafe .Pointer (bp + 32 )) + uintptr (1 ))
}
if i == 4 {
return 0
}
switch i {
case 0 :
*(*uint64 )(unsafe .Pointer (bp + 1 *8 )) = (*(*uint64 )(unsafe .Pointer (bp )) & uint64 (0xffffff ))
AssignShrPtrUint64 (bp , int (uint64 (24 )))
fallthrough
case 1 :
*(*uint64 )(unsafe .Pointer (bp + 2 *8 )) = (*(*uint64 )(unsafe .Pointer (bp + 1 *8 )) & uint64 (0xffff ))
AssignShrPtrUint64 (bp +1 *8 , int (uint64 (16 )))
fallthrough
case 2 :
*(*uint64 )(unsafe .Pointer (bp + 3 *8 )) = (*(*uint64 )(unsafe .Pointer (bp + 2 *8 )) & uint64 (0xff ))
AssignShrPtrUint64 (bp +2 *8 , int (uint64 (8 )))
}
for i = 0 ; i < 4 ; i ++ {
if *(*uint64 )(unsafe .Pointer (bp + uintptr (i )*8 )) > uint64 (255 ) {
return 0
}
*(*uint8 )(unsafe .Pointer (d + uintptr (i ))) = uint8 (*(*uint64 )(unsafe .Pointer (bp + uintptr (i )*8 )))
}
return 1
}
func Xinet_ntop (tls *TLS , af int32 , a0 uintptr , s uintptr , l socklen_t ) uintptr {
bp := tls .Alloc (276 )
defer tls .Free (276 )
var a uintptr = a0
var i int32
var j int32
var max int32
var best int32
switch af {
case 2 :
if socklen_t (Xsnprintf (tls , s , uint64 (l ), ts +101 , 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 {
return s
}
break
case 10 :
if Xmemcmp (tls , a , ts +88 , uint64 (12 )) != 0 {
Xsnprintf (tls , bp +176 , uint64 (unsafe .Sizeof ([100 ]int8 {})),
ts +113 ,
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 )))),
((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 )))),
((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 )))),
((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 ))))))
} else {
Xsnprintf (tls , bp +176 , uint64 (unsafe .Sizeof ([100 ]int8 {})),
ts +137 ,
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 )))),
((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 )))),
((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 )))),
int32 (*(*uint8 )(unsafe .Pointer (a + 12 ))), int32 (*(*uint8 )(unsafe .Pointer (a + 13 ))), int32 (*(*uint8 )(unsafe .Pointer (a + 14 ))), int32 (*(*uint8 )(unsafe .Pointer (a + 15 )))))
}
i = AssignInt32 (&best , 0 )
max = 2
for ; *(*int8 )(unsafe .Pointer (bp + 176 + uintptr (i ))) != 0 ; i ++ {
if (i != 0 ) && (int32 (*(*int8 )(unsafe .Pointer (bp + 176 + uintptr (i )))) != ':' ) {
continue
}
j = int32 (Xstrspn (tls , (bp + 176 + uintptr (i )), ts +167 ))
if j > max {
best = i
max = j
}
}
if max > 3 {
*(*int8 )(unsafe .Pointer (bp + 176 + uintptr (best ))) = AssignPtrInt8 (bp +176 +uintptr ((best +1 )), int8 (':' ))
Xmemmove (tls , ((bp + 176 + uintptr (best )) + uintptr (2 )), ((bp + 176 + uintptr (best )) + uintptr (max )), (uint64 (((i - best ) - max ) + 1 )))
}
if Xstrlen (tls , bp +176 ) < size_t (l ) {
Xstrcpy (tls , s , bp +176 )
return s
}
break
default :
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 97
return uintptr (0 )
}
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 28
return uintptr (0 )
}
func hexval (tls *TLS , c uint32 ) int32 {
if (c - uint32 ('0' )) < uint32 (10 ) {
return (int32 (c - uint32 ('0' )))
}
c = c | (uint32 (32 ))
if (c - uint32 ('a' )) < uint32 (6 ) {
return (int32 ((c - uint32 ('a' )) + uint32 (10 )))
}
return -1
}
func Xinet_pton (tls *TLS , af int32 , s uintptr , a0 uintptr ) int32 {
bp := tls .Alloc (16 )
defer tls .Free (16 )
var a uintptr = a0
var i int32
var j int32
var v int32
var d int32
var brk int32 = -1
var need_v4 int32 = 0
if af == 2 {
for i = 0 ; i < 4 ; i ++ {
for v = AssignInt32 (&j , 0 ); (j < 3 ) && (func () int32 {
if 0 != 0 {
return Xisdigit (tls , int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j )))))
}
return (Bool32 (((uint32 (*(*int8 )(unsafe .Pointer (s + uintptr (j ))))) - uint32 ('0' )) < uint32 (10 )))
}() != 0 ); j ++ {
v = (((10 * v ) + int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j ))))) - '0' )
}
if ((j == 0 ) || ((j > 1 ) && (int32 (*(*int8 )(unsafe .Pointer (s ))) == '0' ))) || (v > 255 ) {
return 0
}
*(*uint8 )(unsafe .Pointer (a + uintptr (i ))) = uint8 (v )
if (int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j )))) == 0 ) && (i == 3 ) {
return 1
}
if int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j )))) != '.' {
return 0
}
s += (uintptr (j + 1 ))
}
return 0
} else if af != 10 {
(*(*int32 )(unsafe .Pointer (X___errno_location (tls )))) = 97
return -1
}
if (int32 (*(*int8 )(unsafe .Pointer (s ))) == ':' ) && (int32 (*(*int8 )(unsafe .Pointer (PreIncUintptr (&s , 1 )))) != ':' ) {
return 0
}
for i = 0 ; ; i ++ {
if (int32 (*(*int8 )(unsafe .Pointer (s ))) == ':' ) && (brk < 0 ) {
brk = i
*(*uint16_t )(unsafe .Pointer (bp + uintptr ((i &7 ))*2 )) = uint16_t (0 )
if !(int32 (*(*int8 )(unsafe .Pointer (PreIncUintptr (&s , 1 )))) != 0 ) {
break
}
if i == 7 {
return 0
}
continue
}
for v = AssignInt32 (&j , 0 ); (j < 4 ) && ((AssignInt32 (&d , hexval (tls , uint32 (*(*int8 )(unsafe .Pointer (s + uintptr (j ))))))) >= 0 ); j ++ {
v = ((16 * v ) + d )
}
if j == 0 {
return 0
}
*(*uint16_t )(unsafe .Pointer (bp + uintptr ((i &7 ))*2 )) = uint16_t (v )
if !(int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j )))) != 0 ) && ((brk >= 0 ) || (i == 7 )) {
break
}
if i == 7 {
return 0
}
if int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j )))) != ':' {
if (int32 (*(*int8 )(unsafe .Pointer (s + uintptr (j )))) != '.' ) || ((i < 6 ) && (brk < 0 )) {
return 0
}
need_v4 = 1
i ++
break
}
s += (uintptr (j + 1 ))
}
if brk >= 0 {
Xmemmove (tls , (((bp + uintptr (brk )*2 ) + uintptr (7 )*2 ) - uintptr (i )*2 ), (bp + uintptr (brk )*2 ), (uint64 (2 * ((i + 1 ) - brk ))))
for j = 0 ; j < (7 - i ); j ++ {
*(*uint16_t )(unsafe .Pointer (bp + uintptr ((brk +j ))*2 )) = uint16_t (0 )
}
}
for j = 0 ; j < 8 ; j ++ {
*(*uint8 )(unsafe .Pointer (PostIncUintptr (&a , 1 ))) = (uint8 (int32 (*(*uint16_t )(unsafe .Pointer (bp + uintptr (j )*2 ))) >> 8 ))
*(*uint8 )(unsafe .Pointer (PostIncUintptr (&a , 1 ))) = uint8 (*(*uint16_t )(unsafe .Pointer (bp + uintptr (j )*2 )))
}
if (need_v4 != 0 ) && (Xinet_pton (tls , 2 , s , (a -uintptr (4 ))) <= 0 ) {
return 0
}
return 1
}
func X__lookup_ipliteral (tls *TLS , buf uintptr , name uintptr , family int32 ) int32 {
bp := tls .Alloc (96 )
defer tls .Free (96 )
if X__inet_aton (tls , name , bp ) > 0 {
if family == 10 {
return -2
}
Xmemcpy (tls , (buf + 8 ), bp , uint64 (unsafe .Sizeof (in_addr {})))
(*address )(unsafe .Pointer (buf )).family = 2
(*address )(unsafe .Pointer (buf )).scopeid = uint32 (0 )
return 1
}
var p uintptr = Xstrchr (tls , name , '%' )
var scopeid uint64 = uint64 (0 )
if (p != 0 ) && (((int64 (p ) - int64 (name )) / 1 ) < int64 (64 )) {
Xmemcpy (tls , bp +4 , name , (uint64 ((int64 (p ) - int64 (name )) / 1 )))
*(*int8 )(unsafe .Pointer (bp + 4 + uintptr (((int64 (p ) - int64 (name )) / 1 )))) = int8 (0 )
name = bp + 4
}
if Xinet_pton (tls , 10 , name , bp +68 ) <= 0 {
return 0
}
if family == 2 {
return -2
}
Xmemcpy (tls , (buf + 8 ), bp +68 , uint64 (unsafe .Sizeof (in6_addr {})))
(*address )(unsafe .Pointer (buf )).family = 10
if p != 0 {
if func () int32 {
if 0 != 0 {
return Xisdigit (tls , int32 (*(*int8 )(unsafe .Pointer (PreIncUintptr (&p , 1 )))))
}
return (Bool32 (((uint32 (*(*int8 )(unsafe .Pointer (PreIncUintptr (&p , 1 ))))) - uint32 ('0' )) < uint32 (10 )))
}() != 0 {
scopeid = Xstrtoull (tls , p , bp +88 , 10 )
} else {
*(*uintptr )(unsafe .Pointer (bp + 88 )) = (p - uintptr (1 ))
}
if *(*int8 )(unsafe .Pointer (*(*uintptr )(unsafe .Pointer (bp + 88 )))) != 0 {
Xabort (tls )
}
if scopeid > uint64 (0xffffffff ) {
return -2
}
}
(*address )(unsafe .Pointer (buf )).scopeid = uint32 (scopeid )
return 1
}
type mode_t = uint32
type flock = struct {
l_type int16
l_whence int16
_ [4 ]byte
l_start off_t
l_len off_t
l_pid pid_t
_ [4 ]byte
}
func is_valid_hostname (tls *TLS , host uintptr ) int32 {
var s uintptr
if (Xstrnlen (tls , host , uint64 (255 )) - uint64 (1 )) >= uint64 (254 ) {
return 0
}
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 ++ {
}
return BoolInt32 (!(*(*uint8 )(unsafe .Pointer (s )) != 0 ))
}
var Xzero_struct_address address
func name_from_null (tls *TLS , buf uintptr , name uintptr , family int32 , flags int32 ) int32 {
var cnt int32 = 0
if name != 0 {
return 0
}
if (flags & 0x01 ) != 0 {
if family != 10 {
var x = Xzero_struct_address
x .family = 2
*(*address )(unsafe .Pointer (buf + uintptr (PostIncInt32 (&cnt , 1 ))*28 )) = x
}
if family != 2 {
var x = Xzero_struct_address
x .family = 10
*(*address )(unsafe .Pointer (buf + uintptr (PostIncInt32 (&cnt , 1 ))*28 )) = x
}
} else {
Xabort (tls )
}
return cnt
}
func name_from_numeric (tls *TLS , buf uintptr , name uintptr , family int32 ) int32 {
return X__lookup_ipliteral (tls , buf , name , family )
}
func name_from_hosts (tls *TLS , buf uintptr , canon uintptr , name uintptr , family int32 ) int32 {
bp := tls .Alloc (512 )
defer tls .Free (512 )
var l size_t = Xstrlen (tls , name )
var cnt int32 = 0
var badfam int32 = 0
var _buf [1032 ]uint8
_ = _buf
var _f FILE
_ = _f
var f uintptr = Xfopen (tls , ts +74 , ts +85 )
if !(f != 0 ) {
switch *(*int32 )(unsafe .Pointer (X___errno_location (tls ))) {
case 2 :
fallthrough
case 20 :
fallthrough
case 13 :
return 0
fallthrough
default :
return -11
}
}
for (Xfgets (tls , bp , int32 (unsafe .Sizeof ([512 ]int8 {})), f ) != 0 ) && (cnt < 48 ) {
var p uintptr
var z uintptr
if AssignUintptr (&p , Xstrchr (tls , bp , '#' )) != 0 {
*(*int8 )(unsafe .Pointer (PostIncUintptr (&p , 1 ))) = int8 ('\n' )
*(*int8 )(unsafe .Pointer (p )) = int8 (0 )
}
for p = (bp + uintptr (1 )); (AssignUintptr (&p , Xstrstr (tls , p , name )) != 0 ) && (!(__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (p + UintptrFromInt32 (-1 ))))) != 0 ) || !(__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (p + uintptr (l ))))) != 0 )); p ++ {
}
if !(p != 0 ) {
continue
}
for p = bp ; (*(*int8 )(unsafe .Pointer (p )) != 0 ) && !(__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (p )))) != 0 ); p ++ {
}
*(*int8 )(unsafe .Pointer (PostIncUintptr (&p , 1 ))) = int8 (0 )
switch name_from_numeric (tls , (buf + uintptr (cnt )*28 ), bp , family ) {
case 1 :
cnt ++
break
case 0 :
continue
default :
badfam = -2
continue
}
for ; (*(*int8 )(unsafe .Pointer (p )) != 0 ) && (__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (p )))) != 0 ); p ++ {
}
for z = p ; (*(*int8 )(unsafe .Pointer (z )) != 0 ) && !(__isspace (tls , int32 (*(*int8 )(unsafe .Pointer (z )))) != 0 ); z ++ {
}
*(*int8 )(unsafe .Pointer (z )) = int8 (0 )
if is_valid_hostname (tls , p ) != 0 {
Xmemcpy (tls , canon , p , (uint64 (((int64 (z ) - int64 (p )) / 1 ) + int64 (1 ))))
}
}
Xfclose (tls , f )
if cnt != 0 {
return cnt
}
return badfam
}
type dpc_ctx = struct {
addrs uintptr
canon uintptr
cnt int32
_ [4 ]byte
}
func name_from_dns_search (tls *TLS , buf uintptr , canon uintptr , name uintptr , family int32 ) int32 {
return -1
Xabort (tls )
return int32 (0 )
}
type policy = struct {
addr [16 ]uint8
len uint8
mask uint8
prec uint8
label uint8
}
var defpolicy = [6 ]policy {
{addr : *(*[16 ]uint8 )(unsafe .Pointer (ts + 170 )), len : uint8 (15 ), mask : uint8 (0xff ), prec : uint8 (50 )},
{addr : *(*[16 ]uint8 )(unsafe .Pointer (ts + 187 )), len : uint8 (11 ), mask : uint8 (0xff ), prec : uint8 (35 ), label : uint8 (4 )},
{addr : *(*[16 ]uint8 )(unsafe .Pointer (ts + 203 )), len : uint8 (1 ), mask : uint8 (0xff ), prec : uint8 (30 ), label : uint8 (2 )},
{addr : *(*[16 ]uint8 )(unsafe .Pointer (ts + 219 )), len : uint8 (3 ), mask : uint8 (0xff ), prec : uint8 (5 ), label : uint8 (5 )},
{addr : *(*[16 ]uint8 )(unsafe .Pointer (ts + 235 )), mask : uint8 (0xfe ), prec : uint8 (3 ), label : uint8 (13 )},
{addr : *(*[16 ]uint8 )(unsafe .Pointer (ts + 251 )), prec : uint8 (40 ), label : uint8 (1 )},
}
func policyof (tls *TLS , a uintptr ) uintptr {
var i int32
for i = 0 ; ; i ++ {
if Xmemcmp (tls , a , uintptr (unsafe .Pointer (&defpolicy ))+uintptr (i )*20 , uint64 (defpolicy [i ].len )) != 0 {
continue
}
if (int32 (*(*uint8_t )(unsafe .Pointer ((a ) + uintptr (defpolicy [i ].len )))) & int32 (defpolicy [i ].mask )) !=
int32 (*(*uint8 )(unsafe .Pointer ((uintptr (unsafe .Pointer (&defpolicy )) + uintptr (i )*20 ) + uintptr (defpolicy [i ].len )))) {
continue
}
return (uintptr (unsafe .Pointer (&defpolicy )) + uintptr (i )*20 )
}
return uintptr (0 )
}
func labelof (tls *TLS , a uintptr ) int32 {
return int32 ((*policy )(unsafe .Pointer (policyof (tls , a ))).label )
}
func scopeof (tls *TLS , a uintptr ) int32 {
if int32 (*(*uint8_t )(unsafe .Pointer ((a )))) == 0xff {
return (int32 (*(*uint8_t )(unsafe .Pointer ((a ) + 1 ))) & 15 )
}
if ((int32 (*(*uint8_t )(unsafe .Pointer ((a ))))) == 0xfe ) && ((int32 (*(*uint8_t )(unsafe .Pointer ((a ) + 1 ))) & 0xc0 ) == 0x80 ) {
return 2
}
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 ) {
return 2
}
if ((int32 (*(*uint8_t )(unsafe .Pointer ((a ))))) == 0xfe ) && ((int32 (*(*uint8_t )(unsafe .Pointer ((a ) + 1 ))) & 0xc0 ) == 0xc0 ) {
return 5
}
return 14
}
func prefixmatch (tls *TLS , s uintptr , d uintptr ) int32 {
var i uint32
for i = uint32 (0 ); (i < uint32 (128 )) && !(((int32 (*(*uint8_t )(unsafe .Pointer ((s ) + uintptr ((i / uint32 (8 )))))) ^ int32 (*(*uint8_t )(unsafe .Pointer ((d ) + uintptr ((i / uint32 (8 ))))))) & (int32 (128 ) >> (i % uint32 (8 )))) != 0 ); i ++ {
}
return int32 (i )
}
func addrcmp (tls *TLS , _a uintptr , _b uintptr ) int32 {
var a uintptr = _a
var b uintptr = _b
return ((*address )(unsafe .Pointer (b )).sortkey - (*address )(unsafe .Pointer (a )).sortkey )
}
func X__lookup_name (tls *TLS , buf uintptr , canon uintptr , name uintptr , family int32 , flags int32 ) int32 {
bp := tls .Alloc (92 )
defer tls .Free (92 )
var cnt int32 = 0
var i int32
var j int32
_ = j
*(*int8 )(unsafe .Pointer (canon )) = int8 (0 )
if name != 0 {
var l size_t = Xstrnlen (tls , name , uint64 (255 ))
if (l - uint64 (1 )) >= uint64 (254 ) {
return -2
}
Xmemcpy (tls , canon , name , (l + uint64 (1 )))
}
if (flags & 0x08 ) != 0 {
if family == 10 {
family = 0
} else {
flags = flags - (0x08 )
}
}
cnt = name_from_null (tls , buf , name , family , flags )
if !(cnt != 0 ) {
cnt = name_from_numeric (tls , buf , name , family )
}
if !(cnt != 0 ) && !((flags & 0x04 ) != 0 ) {
cnt = name_from_hosts (tls , buf , canon , name , family )
if !(cnt != 0 ) {
cnt = name_from_dns_search (tls , buf , canon , name , family )
}
}
if cnt <= 0 {
if cnt != 0 {
return cnt
}
return -2
}
if (flags & 0x08 ) != 0 {
Xabort (tls )
}
if (cnt < 2 ) || (family == 2 ) {
return cnt
}
for i = 0 ; i < cnt ; i ++ {
if (*address )(unsafe .Pointer (buf +uintptr (i )*28 )).family != 2 {
break
}
}
if i == cnt {
return cnt
}
var cs int32
_ = cs
for i = 0 ; i < cnt ; i ++ {
var family int32 = (*address )(unsafe .Pointer (buf + uintptr (i )*28 )).family
var key int32 = 0
*(*sockaddr_in6 )(unsafe .Pointer (bp + 28 )) = sockaddr_in6 {}
*(*sockaddr_in6 )(unsafe .Pointer (bp )) = 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 }
*(*sockaddr_in )(unsafe .Pointer (bp + 72 )) = sockaddr_in {}
*(*sockaddr_in )(unsafe .Pointer (bp + 56 )) = sockaddr_in {sin_family : sa_family_t (2 ), sin_port : in_port_t (65535 )}
var sa1 uintptr
var da uintptr
var dalen socklen_t
if family == 10 {
Xmemcpy (tls , bp +8 , buf +uintptr (i )*28 +8 , uint64 (16 ))
da = bp
dalen = socklen_t (unsafe .Sizeof (sockaddr_in6 {}))
sa1 = bp + 28
*(*socklen_t )(unsafe .Pointer (bp + 88 )) = socklen_t (unsafe .Sizeof (sockaddr_in6 {}))
} else {
Xmemcpy (tls , bp +28 +8 ,
ts +88 , uint64 (12 ))
Xmemcpy (tls , ((bp + 8 ) + uintptr (12 )), buf +uintptr (i )*28 +8 , uint64 (4 ))
Xmemcpy (tls , bp +8 ,
ts +88 , uint64 (12 ))
Xmemcpy (tls , ((bp + 8 ) + uintptr (12 )), buf +uintptr (i )*28 +8 , uint64 (4 ))
Xmemcpy (tls , (bp + 56 + 4 ), buf +uintptr (i )*28 +8 , uint64 (4 ))
da = bp + 56
dalen = socklen_t (unsafe .Sizeof (sockaddr_in {}))
sa1 = bp + 72
*(*socklen_t )(unsafe .Pointer (bp + 88 )) = socklen_t (unsafe .Sizeof (sockaddr_in {}))
}
var dpolicy uintptr = policyof (tls , (bp + 8 ))
var dscope int32 = scopeof (tls , (bp + 8 ))
var dlabel int32 = int32 ((*policy )(unsafe .Pointer (dpolicy )).label )
var dprec int32 = int32 ((*policy )(unsafe .Pointer (dpolicy )).prec )
var prefixlen int32 = 0
var fd int32 = Xsocket (tls , family , (2 | 02000000 ), 17 )
if fd >= 0 {
if !(Xconnect (tls , fd , da , dalen ) != 0 ) {
key = key | (0x40000000 )
if !(Xgetsockname (tls , fd , sa1 , bp +88 ) != 0 ) {
if family == 2 {
Xmemcpy (tls ,
((bp + 28 + 8 ) + uintptr (12 )),
(bp + 72 + 4 ), uint64 (4 ))
}
if dscope == scopeof (tls , (bp +28 +8 )) {
key = key | (0x20000000 )
}
if dlabel == labelof (tls , (bp +28 +8 )) {
key = key | (0x10000000 )
}
prefixlen = prefixmatch (tls , (bp + 28 + 8 ),
(bp + 8 ))
}
}
Xclose (tls , fd )
}
key = key | (dprec << 20 )
key = key | ((15 - dscope ) << 16 )
key = key | (prefixlen << 8 )
key = key | ((48 - i ) << 0 )
(*address )(unsafe .Pointer (buf + uintptr (i )*28 )).sortkey = key
}
Xqsort (tls , buf , uint64 (cnt ), uint64 (unsafe .Sizeof (address {})), *(*uintptr )(unsafe .Pointer (&struct {
f func (*TLS , uintptr , uintptr ) int32
}{addrcmp })))
return cnt
}
func X__lookup_serv (tls *TLS , buf uintptr , name uintptr , proto int32 , socktype int32 , flags int32 ) int32 {
bp := tls .Alloc (8 )
defer tls .Free (8 )
var line [128 ]int8
_ = line
var cnt int32 = 0
var p uintptr
_ = p
*(*uintptr )(unsafe .Pointer (bp )) = ts + 13
var port uint64 = uint64 (0 )
switch socktype {
case 1 :
switch proto {
case 0 :
proto = 6
fallthrough
case 6 :
break
default :
return -8
}
break
case 2 :
switch proto {
case 0 :
proto = 17
fallthrough
case 17 :
break
default :
return -8
}
fallthrough
case 0 :
break
default :
if name != 0 {
return -8
}
(*service )(unsafe .Pointer (buf )).port = uint16_t (0 )
(*service )(unsafe .Pointer (buf )).proto = uint8 (proto )
(*service )(unsafe .Pointer (buf )).socktype = uint8 (socktype )
return 1
}
if name != 0 {
if !(int32 (*(*int8 )(unsafe .Pointer (name ))) != 0 ) {
return -8
}
port = Xstrtoul (tls , name , bp , 10 )
}
if !(int32 (*(*int8 )(unsafe .Pointer (*(*uintptr )(unsafe .Pointer (bp ))))) != 0 ) {
if port > uint64 (65535 ) {
return -8
}
if proto != 17 {
(*service )(unsafe .Pointer (buf + uintptr (cnt )*4 )).port = uint16_t (port )
(*service )(unsafe .Pointer (buf + uintptr (cnt )*4 )).socktype = uint8 (1 )
(*service )(unsafe .Pointer (buf + uintptr (PostIncInt32 (&cnt , 1 ))*4 )).proto = uint8 (6 )
}
if proto != 6 {
(*service )(unsafe .Pointer (buf + uintptr (cnt )*4 )).port = uint16_t (port )
(*service )(unsafe .Pointer (buf + uintptr (cnt )*4 )).socktype = uint8 (2 )
(*service )(unsafe .Pointer (buf + uintptr (PostIncInt32 (&cnt , 1 ))*4 )).proto = uint8 (17 )
}
return cnt
}
if (flags & 0x400 ) != 0 {
return -2
}
var l size_t = Xstrlen (tls , name )
_ = l
Xabort (tls )
Xabort (tls )
Xabort (tls )
return int32 (0 )
}
func temper (tls *TLS , x uint32 ) uint32 {
x = x ^ (x >> 11 )
x = x ^ ((x << 7 ) & 0x9D2C5680 )
x = x ^ ((x << 15 ) & 0xEFC60000 )
x = x ^ (x >> 18 )
return x
}
func Xrand_r (tls *TLS , seed uintptr ) int32 {
return (int32 (temper (tls , AssignPtrUint32 (seed , ((*(*uint32 )(unsafe .Pointer (seed ))*uint32 (1103515245 ))+uint32 (12345 )))) / uint32 (2 )))
}
func X__toread (tls *TLS , f uintptr ) int32 {
*(*int32 )(unsafe .Pointer (f + 136 )) |= ((*FILE )(unsafe .Pointer (f )).mode - 1 )
if (*FILE )(unsafe .Pointer (f )).wpos != (*FILE )(unsafe .Pointer (f )).wbase {
(*(*func (*TLS , uintptr , uintptr , size_t ) size_t )(unsafe .Pointer ((f + 72 ))))(tls , f , uintptr (0 ), uint64 (0 ))
}
(*FILE )(unsafe .Pointer (f )).wpos = AssignPtrUintptr (f +56 , AssignPtrUintptr (f +32 , uintptr (0 )))
if ((*FILE )(unsafe .Pointer (f )).flags & uint32 (4 )) != 0 {
*(*uint32 )(unsafe .Pointer (f )) |= (uint32 (32 ))
return -1
}
(*FILE )(unsafe .Pointer (f )).rpos = AssignPtrUintptr (f +16 , ((*FILE )(unsafe .Pointer (f )).buf + uintptr ((*FILE )(unsafe .Pointer (f )).buf_size )))
if ((*FILE )(unsafe .Pointer (f )).flags & uint32 (16 )) != 0 {
return -1
}
return 0
}
func X__toread_needs_stdio_exit (tls *TLS ) {
X__builtin_abort (tls )
}
func X__uflow (tls *TLS , f uintptr ) int32 {
bp := tls .Alloc (1 )
defer tls .Free (1 )
if !(X__toread (tls , f ) != 0 ) && ((*(*func (*TLS , uintptr , uintptr , size_t ) size_t )(unsafe .Pointer ((f + 64 ))))(tls , f , bp , uint64 (1 )) == uint64 (1 )) {
return int32 (*(*uint8 )(unsafe .Pointer (bp )))
}
return -1
}
func Xstrdup (tls *TLS , s uintptr ) uintptr {
var l size_t = Xstrlen (tls , s )
var d uintptr = Xmalloc (tls , (l + uint64 (1 )))
if !(d != 0 ) {
return uintptr (0 )
}
return Xmemcpy (tls , d , s , (l + uint64 (1 )))
}
func strtox (tls *TLS , s uintptr , p uintptr , prec int32 ) float64 {
bp := tls .Alloc (232 )
defer tls .Free (232 )
(*FILE )(unsafe .Pointer (bp )).buf = AssignPtrUintptr (bp +8 , s )
(*FILE )(unsafe .Pointer (bp )).rend = UintptrFromInt32 (-1 )
X__shlim (tls , bp , int64 (0 ))
var y float64 = X__floatscan (tls , bp , prec , 1 )
var cnt off_t = ((*FILE )(unsafe .Pointer ((bp ))).shcnt + ((int64 ((*FILE )(unsafe .Pointer ((bp ))).rpos ) - int64 ((*FILE )(unsafe .Pointer ((bp ))).buf )) / 1 ))
if p != 0 {
*(*uintptr )(unsafe .Pointer (p )) = func () uintptr {
if cnt != 0 {
return (s + uintptr (cnt ))
}
return s
}()
}
return y
}
func Xstrtof (tls *TLS , s uintptr , p uintptr ) float32 {
return float32 (strtox (tls , s , p , 0 ))
}
func Xstrtod (tls *TLS , s uintptr , p uintptr ) float64 {
return strtox (tls , s , p , 1 )
}
func Xstrtold (tls *TLS , s uintptr , p uintptr ) float64 {
return strtox (tls , s , p , 2 )
}
func strtox1 (tls *TLS , s uintptr , p uintptr , base int32 , lim uint64 ) uint64 {
bp := tls .Alloc (232 )
defer tls .Free (232 )
(*FILE )(unsafe .Pointer (bp )).buf = AssignPtrUintptr (bp +8 , s )
(*FILE )(unsafe .Pointer (bp )).rend = UintptrFromInt32 (-1 )
X__shlim (tls , bp , int64 (0 ))
var y uint64 = X__intscan (tls , bp , uint32 (base ), 1 , lim )
if p != 0 {
var cnt size_t = (size_t ((*FILE )(unsafe .Pointer ((bp ))).shcnt + ((int64 ((*FILE )(unsafe .Pointer ((bp ))).rpos ) - int64 ((*FILE )(unsafe .Pointer ((bp ))).buf )) / 1 )))
*(*uintptr )(unsafe .Pointer (p )) = (s + uintptr (cnt ))
}
return y
}
func Xstrtoull (tls *TLS , s uintptr , p uintptr , base int32 ) uint64 {
return strtox1 (tls , s , p , base , ((2 * uint64 (0x7fffffffffffffff )) + uint64 (1 )))
}
func Xstrtoll (tls *TLS , s uintptr , p uintptr , base int32 ) int64 {
return int64 (strtox1 (tls , s , p , base , (Uint64FromInt64 (-0x7fffffffffffffff - int64 (1 )))))
}
func Xstrtoul (tls *TLS , s uintptr , p uintptr , base int32 ) uint64 {
return uint64 (strtox1 (tls , s , p , base , ((2 * uint64 (0x7fffffffffffffff )) + uint64 (1 ))))
}
func Xstrtol (tls *TLS , s uintptr , p uintptr , base int32 ) int64 {
return int64 (strtox1 (tls , s , p , base , (0 + (Uint64FromInt64 (Int64 (-Int64 (0x7fffffffffffffff )) - Int64FromInt32 (1 ))))))
}
func Xstrtoimax (tls *TLS , s uintptr , p uintptr , base int32 ) intmax_t {
return intmax_t (Xstrtoll (tls , s , p , base ))
}
func Xstrtoumax (tls *TLS , s uintptr , p uintptr , base int32 ) uintmax_t {
return uintmax_t (Xstrtoull (tls , s , p , base ))
}
func X__strchrnul (tls *TLS , s uintptr , c int32 ) uintptr {
c = int32 (uint8 (c ))
if !(c != 0 ) {
return (s + uintptr (Xstrlen (tls , s )))
}
var w uintptr
for ; (uintptr_t (s ) % (uintptr_t (unsafe .Sizeof (size_t (0 ))))) != 0 ; s ++ {
if !(int32 (*(*int8 )(unsafe .Pointer (s ))) != 0 ) || (int32 (*(*uint8 )(unsafe .Pointer (s ))) == c ) {
return s
}
}
var k size_t = ((Uint64 (Uint64FromInt32 (-1 )) / uint64 (255 )) * size_t (c ))
for w = s ; !(((((*(*uint64 )(unsafe .Pointer (w ))) - (Uint64 (Uint64FromInt32 (-1 )) / uint64 (255 ))) & ^(*(*uint64 )(unsafe .Pointer (w )))) & ((Uint64 (Uint64FromInt32 (-1 )) / uint64 (255 )) * (uint64 ((255 / 2 ) + 1 )))) != 0 ) && !(((((*(*uint64 )(unsafe .Pointer (w )) ^ k ) - (Uint64 (Uint64FromInt32 (-1 )) / uint64 (255 ))) & ^(*(*uint64 )(unsafe .Pointer (w )) ^ k )) & ((Uint64 (Uint64FromInt32 (-1 )) / uint64 (255 )) * (uint64 ((255 / 2 ) + 1 )))) != 0 ); w += 8 {
}
s = w
for ; (*(*int8 )(unsafe .Pointer (s )) != 0 ) && (int32 (*(*uint8 )(unsafe .Pointer (s ))) != c ); s ++ {
}
return s
}
func Xstrlcat (tls *TLS , d uintptr , s uintptr , n size_t ) size_t {
var l size_t = Xstrnlen (tls , d , n )
if l == n {
return (l + Xstrlen (tls , s ))
}
return (l + Xstrlcpy (tls , (d +uintptr (l )), s , (n -l )))
}
func Xstrlcpy (tls *TLS , d uintptr , s uintptr , n size_t ) size_t {
var d0 uintptr
var wd uintptr
var ws uintptr
d0 = d
if !(!(int32 (PostDecUint64 (&n , 1 )) != 0 )) {
goto __1
}
goto finish
__1 :
;
if !((uintptr_t (s ) & (uint64 (unsafe .Sizeof (size_t (0 ))) - uint64 (1 ))) == (uintptr_t (d ) & (uint64 (unsafe .Sizeof (size_t (0 ))) - uint64 (1 )))) {
goto __2
}
__3 :
if !((((uintptr_t (s ) & (uint64 (unsafe .Sizeof (size_t (0 ))) - uint64 (1 ))) != 0 ) && (n != 0 )) && (AssignPtrInt8 (d , *(*int8 )(unsafe .Pointer (s ))) != 0 )) {
goto __5
}
goto __4
__4 :
n --
s ++
d ++
goto __3
goto __5
__5 :
;
if !((n != 0 ) && (*(*int8 )(unsafe .Pointer (s )) != 0 )) {
goto __6
}
wd = d
ws = s
__7 :
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 )) {
goto __9
}
*(*size_t )(unsafe .Pointer (wd )) = *(*uint64 )(unsafe .Pointer (ws ))
goto __8
__8 :
n = n - (size_t (unsafe .Sizeof (size_t (0 ))))
ws += 8
wd += 8
goto __7
goto __9
__9 :
;
d = wd
s = ws
__6 :
;
__2 :
;
__10 :
if !((n != 0 ) && (AssignPtrInt8 (d , *(*int8 )(unsafe .Pointer (s ))) != 0 )) {
goto __12
}
goto __11
__11 :
n --
s ++
d ++
goto __10
goto __12
__12 :
;
*(*int8 )(unsafe .Pointer (d )) = int8 (0 )
finish :
return ((size_t ((int64 (d ) - int64 (d0 )) / 1 )) + Xstrlen (tls , s ))
}
func Xstrncat (tls *TLS , d uintptr , s uintptr , n size_t ) uintptr {
var a uintptr = d
d += uintptr (Xstrlen (tls , d ))
for (n != 0 ) && (*(*int8 )(unsafe .Pointer (s )) != 0 ) {
n --
*(*int8 )(unsafe .Pointer (PostIncUintptr (&d , 1 ))) = *(*int8 )(unsafe .Pointer (PostIncUintptr (&s , 1 )))
}
*(*int8 )(unsafe .Pointer (PostIncUintptr (&d , 1 ))) = int8 (0 )
return a
}
func Xstrnlen (tls *TLS , s uintptr , n size_t ) size_t {
var p uintptr = Xmemchr (tls , s , 0 , n )
if p != 0 {
return (uint64 ((int64 (p ) - int64 (s )) / 1 ))
}
return n
}
func Xstrspn (tls *TLS , s uintptr , c uintptr ) size_t {
bp := tls .Alloc (32 )
defer tls .Free (32 )
var a uintptr = s
*(*[4 ]size_t )(unsafe .Pointer (bp )) = [4 ]size_t {0 : uint64 (0 )}
if !(int32 (*(*int8 )(unsafe .Pointer (c ))) != 0 ) {
return uint64 (0 )
}
if !(int32 (*(*int8 )(unsafe .Pointer (c + 1 ))) != 0 ) {
for ; int32 (*(*int8 )(unsafe .Pointer (s ))) == int32 (*(*int8 )(unsafe .Pointer (c ))); s ++ {
}
return (size_t ((int64 (s ) - int64 (a )) / 1 ))
}
for ; (*(*int8 )(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 ++ {
}
for ; (*(*int8 )(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 ++ {
}
return (size_t ((int64 (s ) - int64 (a )) / 1 ))
}
func Xstrtok (tls *TLS , s uintptr , sep uintptr ) uintptr {
if !(s != 0 ) && !(int32 (AssignUintptr (&s , _sp )) != 0 ) {
return uintptr (0 )
}
s += uintptr (Xstrspn (tls , s , sep ))
if !(int32 (*(*int8 )(unsafe .Pointer (s ))) != 0 ) {
return AssignPtrUintptr (uintptr (unsafe .Pointer (&_sp )), uintptr (0 ))
}
_sp = (s + uintptr (Xstrcspn (tls , s , sep )))
if *(*int8 )(unsafe .Pointer (_sp )) != 0 {
*(*int8 )(unsafe .Pointer (PostIncUintptr (&_sp , 1 ))) = int8 (0 )
} else {
_sp = uintptr (0 )
}
return s
}
var _sp uintptr
var ts1 = "infinity\x00nan\x00\x00\x00\x01\x02\x04\a\x03\x06\x05\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"
var ts = (*reflect .StringHeader )(unsafe .Pointer (&ts1 )).Data
The pages are generated with Golds v0.3.6 . (GOOS=darwin GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .