vendor update
This commit is contained in:
+3
-1
@@ -1,4 +1,6 @@
|
||||
service*
|
||||
renew.local.env
|
||||
config.yaml
|
||||
__debug*
|
||||
test
|
||||
.vscode
|
||||
.vscode
|
||||
|
||||
Vendored
+3
-15
@@ -10,21 +10,9 @@
|
||||
"request": "launch",
|
||||
"mode": "auto",
|
||||
"program": "${workspaceFolder}/main.go",
|
||||
"env": {
|
||||
"HTTP_STATIC": "${workspaceFolder}/static/dist",
|
||||
"VIDEO_SRC_DEVICE": "/dev/v4l/by-id/usb-Microsoft_Microsoft®_LifeCam_HD-3000-video-index0",
|
||||
//"AUDIO_SRC_DEVICE": "plughw:4,0,0",
|
||||
"AUDIO_SRC": "pulsesrc",
|
||||
"AUDIO_SINK": "pulsesink",
|
||||
"INPUT_DEVICE": "/dev/input/event5",
|
||||
"JINGLE_PATH": "${workspaceFolder}/audio",
|
||||
"SONOS_TARGET": "Living Room",
|
||||
"VIDEO_SRC_CODEC": "H264",
|
||||
"VIDEO_SRC_HEIGHT": "600",
|
||||
"VIDEO_SRC_WIDTH": "800",
|
||||
"VIDEO_SRC_FPS": "15",
|
||||
"VIDEO_SRC_BPS": "8000",
|
||||
}
|
||||
"args": [
|
||||
"--config=${workspaceFolder}/config.yaml"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Launch Package Test",
|
||||
|
||||
@@ -1,74 +1,74 @@
|
||||
module github.com/kaedwen/webrtc
|
||||
|
||||
go 1.21
|
||||
go 1.22
|
||||
|
||||
toolchain go1.21.5
|
||||
toolchain go1.22.4
|
||||
|
||||
require (
|
||||
github.com/alexflint/go-arg v1.4.3
|
||||
github.com/gin-gonic/gin v1.9.1
|
||||
github.com/go-gst/go-glib v0.0.0-20231207075824-6d6aaf082c65
|
||||
github.com/go-gst/go-gst v0.0.0-20240207190302-04ec17f96d71
|
||||
github.com/alexflint/go-arg v1.5.0
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/go-gst/go-glib v1.0.1
|
||||
github.com/go-gst/go-gst v1.0.0
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/hashicorp/mdns v1.0.5
|
||||
github.com/holoplot/go-evdev v0.0.0-20240213072314-e40ebd251314
|
||||
github.com/pion/mediadevices v0.6.1
|
||||
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1
|
||||
github.com/pion/rtcp v1.2.14
|
||||
github.com/pion/webrtc/v3 v3.2.28
|
||||
github.com/pion/webrtc/v3 v3.2.40
|
||||
go.uber.org/zap v1.27.0
|
||||
nhooyr.io/websocket v1.8.10
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
nhooyr.io/websocket v1.8.11
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/alexflint/go-scalar v1.2.0 // indirect
|
||||
github.com/blackjack/webcam v0.5.0 // indirect
|
||||
github.com/bytedance/sonic v1.11.2 // indirect
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
|
||||
github.com/chenzhuoyu/iasm v0.9.1 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
|
||||
github.com/bytedance/sonic v1.11.8 // indirect
|
||||
github.com/bytedance/sonic/loader v0.1.1 // indirect
|
||||
github.com/cloudwego/base64x v0.1.4 // indirect
|
||||
github.com/cloudwego/iasm v0.2.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.4 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-playground/locales v0.14.1 // indirect
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.18.0 // indirect
|
||||
github.com/goccy/go-json v0.10.2 // indirect
|
||||
github.com/go-playground/validator/v10 v10.21.0 // indirect
|
||||
github.com/goccy/go-json v0.10.3 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
|
||||
github.com/kr/pretty v0.2.1 // indirect
|
||||
github.com/kr/pretty v0.3.1 // indirect
|
||||
github.com/leodido/go-urn v1.4.0 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-pointer v0.0.1 // indirect
|
||||
github.com/miekg/dns v1.1.58 // indirect
|
||||
github.com/miekg/dns v1.1.59 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
|
||||
github.com/pion/datachannel v1.5.5 // indirect
|
||||
github.com/pion/dtls/v2 v2.2.10 // indirect
|
||||
github.com/pion/ice/v2 v2.3.14 // indirect
|
||||
github.com/pion/interceptor v0.1.25 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
||||
github.com/pion/datachannel v1.5.6 // indirect
|
||||
github.com/pion/dtls/v2 v2.2.11 // indirect
|
||||
github.com/pion/ice/v2 v2.3.24 // indirect
|
||||
github.com/pion/interceptor v0.1.29 // indirect
|
||||
github.com/pion/logging v0.2.2 // indirect
|
||||
github.com/pion/mdns v0.0.12 // indirect
|
||||
github.com/pion/randutil v0.1.0 // indirect
|
||||
github.com/pion/rtp v1.8.3 // indirect
|
||||
github.com/pion/sctp v1.8.12 // indirect
|
||||
github.com/pion/sdp/v3 v3.0.6 // indirect
|
||||
github.com/pion/rtp v1.8.6 // indirect
|
||||
github.com/pion/sctp v1.8.16 // indirect
|
||||
github.com/pion/sdp/v3 v3.0.9 // indirect
|
||||
github.com/pion/srtp/v2 v2.0.18 // indirect
|
||||
github.com/pion/stun v0.6.1 // indirect
|
||||
github.com/pion/transport/v2 v2.2.4 // indirect
|
||||
github.com/pion/turn/v2 v2.1.5 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/pion/transport/v2 v2.2.5 // indirect
|
||||
github.com/pion/turn/v2 v2.1.6 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/stretchr/testify v1.9.0 // indirect
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||
github.com/ugorji/go/codec v1.2.12 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
golang.org/x/arch v0.7.0 // indirect
|
||||
golang.org/x/crypto v0.20.0 // indirect
|
||||
golang.org/x/image v0.15.0 // indirect
|
||||
golang.org/x/mod v0.15.0 // indirect
|
||||
golang.org/x/net v0.21.0 // indirect
|
||||
golang.org/x/sys v0.17.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/tools v0.18.0 // indirect
|
||||
google.golang.org/protobuf v1.32.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
golang.org/x/arch v0.8.0 // indirect
|
||||
golang.org/x/crypto v0.24.0 // indirect
|
||||
golang.org/x/mod v0.18.0 // indirect
|
||||
golang.org/x/net v0.26.0 // indirect
|
||||
golang.org/x/sync v0.7.0 // indirect
|
||||
golang.org/x/sys v0.21.0 // indirect
|
||||
golang.org/x/text v0.16.0 // indirect
|
||||
golang.org/x/tools v0.22.0 // indirect
|
||||
google.golang.org/protobuf v1.34.1 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
)
|
||||
|
||||
@@ -1,70 +1,50 @@
|
||||
github.com/alexflint/go-arg v1.4.3 h1:9rwwEBpMXfKQKceuZfYcwuc/7YY7tWJbFsgG5cAU/uo=
|
||||
github.com/alexflint/go-arg v1.4.3/go.mod h1:3PZ/wp/8HuqRZMUUgu7I+e1qcpUbvmS258mRXkFH4IA=
|
||||
github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=
|
||||
github.com/alexflint/go-arg v1.5.0 h1:rwMKGiaQuRbXfZNyRUvIfke63QvOBt1/QTshlGQHohM=
|
||||
github.com/alexflint/go-arg v1.5.0/go.mod h1:A7vTJzvjoaSTypg4biM5uYNTkJ27SkNTArtYXnlqVO8=
|
||||
github.com/alexflint/go-scalar v1.2.0 h1:WR7JPKkeNpnYIOfHRa7ivM21aWAdHD0gEWHCx+WQBRw=
|
||||
github.com/alexflint/go-scalar v1.2.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=
|
||||
github.com/blackjack/webcam v0.5.0 h1:NImYpsAbWxglejopcQGQ3FClxhJZaBBgr5fV7nsGdvk=
|
||||
github.com/blackjack/webcam v0.5.0/go.mod h1:zs+RkUZzqpFPHPiwBZ6U5B34ZXXe9i+SiHLKnnukJuI=
|
||||
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
||||
github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
|
||||
github.com/bytedance/sonic v1.11.2 h1:ywfwo0a/3j9HR8wsYGWsIWl2mvRsI950HyoxiBERw5A=
|
||||
github.com/bytedance/sonic v1.11.2/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0=
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
|
||||
github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
|
||||
github.com/chenzhuoyu/iasm v0.9.1 h1:tUHQJXo3NhBqw6s33wkGn9SP3bvrWLdlVIJ3hQBL7P0=
|
||||
github.com/chenzhuoyu/iasm v0.9.1/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
|
||||
github.com/bytedance/sonic v1.11.8 h1:Zw/j1KfiS+OYTi9lyB3bb0CFxPJVkM17k1wyDG32LRA=
|
||||
github.com/bytedance/sonic v1.11.8/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
|
||||
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
|
||||
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
||||
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
|
||||
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
||||
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
|
||||
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
|
||||
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/gabriel-vasile/mimetype v1.4.4 h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I=
|
||||
github.com/gabriel-vasile/mimetype v1.4.4/go.mod h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s=
|
||||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
|
||||
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
|
||||
github.com/go-gst/go-glib v0.0.0-20231207075824-6d6aaf082c65 h1:G9LRxbnTdpkJAfa6vOwldiWmrtAj2L/7gZlsRZYOITA=
|
||||
github.com/go-gst/go-glib v0.0.0-20231207075824-6d6aaf082c65/go.mod h1:rXuKU+tCN7pN+b/7oIyWv6MpnlGy+QWd7jRhWUNstjU=
|
||||
github.com/go-gst/go-gst v0.0.0-20240207190302-04ec17f96d71 h1:A562e6S4kSK6lq1X3KDOYWugfHsPvMhwEoZsLNzrbMk=
|
||||
github.com/go-gst/go-gst v0.0.0-20240207190302-04ec17f96d71/go.mod h1:dJg7DgrGB016HckNjcGTA82Cb4OACGw8VOsg79CxRV0=
|
||||
github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
|
||||
github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
|
||||
github.com/go-gst/go-glib v1.0.1 h1:rsFmzANR9baTGTS7tX20PrBgMqKySAKYVCE+xbTKB8E=
|
||||
github.com/go-gst/go-glib v1.0.1/go.mod h1:7Ehl6klsMBT94bf+Bic9qRyEkXARhhqpiZnU2PXeO6I=
|
||||
github.com/go-gst/go-gst v1.0.0 h1:YBzE3JVZvbrnWWb/iGCXuiaOvHQ7HW+xXUBR++EgEtQ=
|
||||
github.com/go-gst/go-gst v1.0.0/go.mod h1:sQMWMnR98s2B4w52e4IXyGvz75rXV8CZ1bejdPT3KIs=
|
||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||
github.com/go-playground/validator/v10 v10.18.0 h1:BvolUXjp4zuvkZ5YN5t7ebzbhlUtPsPm2S9NAZ5nl9U=
|
||||
github.com/go-playground/validator/v10 v10.18.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
|
||||
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/go-playground/validator/v10 v10.21.0 h1:4fZA11ovvtkdgaeev9RGWPgc1uj3H8W+rNYyH/ySBb0=
|
||||
github.com/go-playground/validator/v10 v10.21.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
|
||||
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/hashicorp/mdns v1.0.5 h1:1M5hW1cunYeoXOqHwEb/GBDDHAFo0Yqb/uz/beC6LbE=
|
||||
github.com/hashicorp/mdns v1.0.5/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=
|
||||
github.com/holoplot/go-evdev v0.0.0-20240213072314-e40ebd251314 h1:hj1eJCkdzK0cfRuwGAK476Hey0CYQlHTAowg8GMon9I=
|
||||
github.com/holoplot/go-evdev v0.0.0-20240213072314-e40ebd251314/go.mod h1:iHAf8OIncO2gcQ8XOjS7CMJ2aPbX2Bs0wl5pZyanEqk=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1 h1:92OsBIf5KB1Tatx+uUGOhah73jyNUrt7DmfDRXXJ5Xo=
|
||||
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1/go.mod h1:iHAf8OIncO2gcQ8XOjS7CMJ2aPbX2Bs0wl5pZyanEqk=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
@@ -72,8 +52,9 @@ github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuV
|
||||
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
@@ -85,81 +66,71 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
|
||||
github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0=
|
||||
github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc=
|
||||
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
|
||||
github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4=
|
||||
github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY=
|
||||
github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs=
|
||||
github.com/miekg/dns v1.1.59/go.mod h1:nZpewl5p6IvctfgrckopVx2OlSEHPRO/U4SYkRklrEk=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
||||
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
|
||||
github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI=
|
||||
github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
|
||||
github.com/pion/datachannel v1.5.5 h1:10ef4kwdjije+M9d7Xm9im2Y3O6A6ccQb0zcqZcJew8=
|
||||
github.com/pion/datachannel v1.5.5/go.mod h1:iMz+lECmfdCMqFRhXhcA/219B0SQlbpoR2V118yimL0=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||
github.com/pion/datachannel v1.5.6 h1:1IxKJntfSlYkpUj8LlYRSWpYiTTC02nUrOE8T3DqGeg=
|
||||
github.com/pion/datachannel v1.5.6/go.mod h1:1eKT6Q85pRnr2mHiWHxJwO50SfZRtWHTsNIVb/NfGW4=
|
||||
github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s=
|
||||
github.com/pion/dtls/v2 v2.2.10 h1:u2Axk+FyIR1VFTPurktB+1zoEPGIW3bmyj3LEFrXjAA=
|
||||
github.com/pion/dtls/v2 v2.2.10/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE=
|
||||
github.com/pion/ice/v2 v2.3.13/go.mod h1:KXJJcZK7E8WzrBEYnV4UtqEZsGeWfHxsNqhVcVvgjxw=
|
||||
github.com/pion/ice/v2 v2.3.14 h1:A7UaEmalw12Fko8YO0qguUbWyE69BnN4mDEqT7cLWQI=
|
||||
github.com/pion/ice/v2 v2.3.14/go.mod h1:KXJJcZK7E8WzrBEYnV4UtqEZsGeWfHxsNqhVcVvgjxw=
|
||||
github.com/pion/interceptor v0.1.25 h1:pwY9r7P6ToQ3+IF0bajN0xmk/fNw/suTgaTdlwTDmhc=
|
||||
github.com/pion/interceptor v0.1.25/go.mod h1:wkbPYAak5zKsfpVDYMtEfWEy8D4zL+rpxCxPImLOg3Y=
|
||||
github.com/pion/dtls/v2 v2.2.11 h1:9U/dpCYl1ySttROPWJgqWKEylUdT0fXp/xst6JwY5Ks=
|
||||
github.com/pion/dtls/v2 v2.2.11/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE=
|
||||
github.com/pion/ice/v2 v2.3.24 h1:RYgzhH/u5lH0XO+ABatVKCtRd+4U1GEaCXSMjNr13tI=
|
||||
github.com/pion/ice/v2 v2.3.24/go.mod h1:KXJJcZK7E8WzrBEYnV4UtqEZsGeWfHxsNqhVcVvgjxw=
|
||||
github.com/pion/interceptor v0.1.29 h1:39fsnlP1U8gw2JzOFWdfCU82vHvhW9o0rZnZF56wF+M=
|
||||
github.com/pion/interceptor v0.1.29/go.mod h1:ri+LGNjRUc5xUNtDEPzfdkmSqISixVTBF/z/Zms/6T4=
|
||||
github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
|
||||
github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
|
||||
github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8=
|
||||
github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk=
|
||||
github.com/pion/mediadevices v0.6.1 h1:mN6Bd5CZF+0uv34NJNCdVRPGJRcE0y98hjcB5TQsOLk=
|
||||
github.com/pion/mediadevices v0.6.1/go.mod h1:T54oJnAOYl3uSzE4ZOwgSsmmq1R32ho/1P0UQa6u19Y=
|
||||
github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA=
|
||||
github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8=
|
||||
github.com/pion/rtcp v1.2.10/go.mod h1:ztfEwXZNLGyF1oQDttz/ZKIBaeeg/oWbRYqzBM9TL1I=
|
||||
github.com/pion/rtcp v1.2.12/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4=
|
||||
github.com/pion/rtcp v1.2.14 h1:KCkGV3vJ+4DAJmvP0vaQShsb0xkRfWkO540Gy102KyE=
|
||||
github.com/pion/rtcp v1.2.14/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4=
|
||||
github.com/pion/rtp v1.8.2/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU=
|
||||
github.com/pion/rtp v1.8.3 h1:VEHxqzSVQxCkKDSHro5/4IUUG1ea+MFdqR2R3xSpNU8=
|
||||
github.com/pion/rtp v1.8.3/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU=
|
||||
github.com/pion/sctp v1.8.5/go.mod h1:SUFFfDpViyKejTAdwD1d/HQsCu+V/40cCs2nZIvC3s0=
|
||||
github.com/pion/sctp v1.8.12 h1:2VX50pedElH+is6FI+OKyRTeN5oy4mrk2HjnGa3UCmY=
|
||||
github.com/pion/sctp v1.8.12/go.mod h1:cMLT45jqw3+jiJCrtHVwfQLnfR0MGZ4rgOJwUOIqLkI=
|
||||
github.com/pion/sdp/v3 v3.0.6 h1:WuDLhtuFUUVpTfus9ILC4HRyHsW6TdugjEX/QY9OiUw=
|
||||
github.com/pion/sdp/v3 v3.0.6/go.mod h1:iiFWFpQO8Fy3S5ldclBkpXqmWy02ns78NOKoLLL0YQw=
|
||||
github.com/pion/rtp v1.8.6 h1:MTmn/b0aWWsAzux2AmP8WGllusBVw4NPYPVFFd7jUPw=
|
||||
github.com/pion/rtp v1.8.6/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU=
|
||||
github.com/pion/sctp v1.8.13/go.mod h1:YKSgO/bO/6aOMP9LCie1DuD7m+GamiK2yIiPM6vH+GA=
|
||||
github.com/pion/sctp v1.8.16 h1:PKrMs+o9EMLRvFfXq59WFsC+V8mN1wnKzqrv+3D/gYY=
|
||||
github.com/pion/sctp v1.8.16/go.mod h1:P6PbDVA++OJMrVNg2AL3XtYHV4uD6dvfyOovCgMs0PE=
|
||||
github.com/pion/sdp/v3 v3.0.9 h1:pX++dCHoHUwq43kuwf3PyJfHlwIj4hXA7Vrifiq0IJY=
|
||||
github.com/pion/sdp/v3 v3.0.9/go.mod h1:B5xmvENq5IXJimIO4zfp6LAe1fD9N+kFv+V/1lOdz8M=
|
||||
github.com/pion/srtp/v2 v2.0.18 h1:vKpAXfawO9RtTRKZJbG4y0v1b11NZxQnxRl85kGuUlo=
|
||||
github.com/pion/srtp/v2 v2.0.18/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA=
|
||||
github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4=
|
||||
github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8=
|
||||
github.com/pion/transport v0.14.1 h1:XSM6olwW+o8J4SCmOBb/BpwZypkHeyM0PGFCxNQBr40=
|
||||
github.com/pion/transport v0.14.1/go.mod h1:4tGmbk00NeYA3rUa9+n+dzCCoKkcy3YlYb99Jn2fNnI=
|
||||
github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g=
|
||||
github.com/pion/transport/v2 v2.2.2/go.mod h1:OJg3ojoBJopjEeECq2yJdXH9YVrUJ1uQ++NjXLOUorc=
|
||||
github.com/pion/transport/v2 v2.2.3/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0=
|
||||
github.com/pion/transport/v2 v2.2.4 h1:41JJK6DZQYSeVLxILA2+F4ZkKb4Xd/tFJZRFZQ9QAlo=
|
||||
github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0=
|
||||
github.com/pion/transport/v3 v3.0.1 h1:gDTlPJwROfSfz6QfSi0ZmeCSkFcnWWiiR9ES0ouANiM=
|
||||
github.com/pion/transport/v2 v2.2.5 h1:iyi25i/21gQck4hfRhomF6SktmUQjRsRW4WJdhfc3Kc=
|
||||
github.com/pion/transport/v2 v2.2.5/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0=
|
||||
github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0=
|
||||
github.com/pion/transport/v3 v3.0.2 h1:r+40RJR25S9w3jbA6/5uEPTzcdn7ncyU44RWCbHkLg4=
|
||||
github.com/pion/transport/v3 v3.0.2/go.mod h1:nIToODoOlb5If2jF9y2Igfx3PFYWfuXi37m0IlWa/D0=
|
||||
github.com/pion/turn/v2 v2.1.3/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY=
|
||||
github.com/pion/turn/v2 v2.1.5 h1:tTyy7TM3DCoX9IxTt/yHc/bThiRLyXK3T1YbNcgx9k4=
|
||||
github.com/pion/turn/v2 v2.1.5/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY=
|
||||
github.com/pion/webrtc/v3 v3.2.28 h1:ienStxZ6HcjtH2UlmnFpMM0loENiYjaX437uIUpQSKo=
|
||||
github.com/pion/webrtc/v3 v3.2.28/go.mod h1:PNRCEuQlibrmuBhOTnol9j6KkIbUG11aHLEfNpUYey0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc=
|
||||
github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY=
|
||||
github.com/pion/webrtc/v3 v3.2.40 h1:Wtfi6AZMQg+624cvCXUuSmrKWepSB7zfgYDOYqsSOVU=
|
||||
github.com/pion/webrtc/v3 v3.2.40/go.mod h1:M1RAe3TNTD1tzyvqHrbVODfwdPGSXOUo/OgpoGGJqFY=
|
||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
@@ -172,7 +143,6 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
|
||||
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
@@ -181,69 +151,49 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||
golang.org/x/arch v0.7.0 h1:pskyeJh/3AmoQ8CPE95vxHLqp1G1GfGNXTmcl9NEKTc=
|
||||
golang.org/x/arch v0.7.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
||||
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
|
||||
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
|
||||
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
|
||||
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
|
||||
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||
golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg=
|
||||
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
|
||||
golang.org/x/image v0.15.0 h1:kOELfmgrmJlw4Cdb7g/QGuB3CvDrXbqEIww/pNtNBm8=
|
||||
golang.org/x/image v0.15.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
||||
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
|
||||
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
|
||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
|
||||
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
|
||||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
|
||||
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
|
||||
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
|
||||
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
||||
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
@@ -252,64 +202,48 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
|
||||
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
|
||||
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
|
||||
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
|
||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ=
|
||||
golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg=
|
||||
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
|
||||
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
|
||||
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
||||
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q=
|
||||
nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
|
||||
nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
|
||||
nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
|
||||
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
|
||||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||
|
||||
@@ -27,14 +27,13 @@ func main() {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
http := server.NewHttpServer(lg.With(zap.String("context", "server")), &cfg)
|
||||
|
||||
rh, err := ring.NewRingHandler(lg.With(zap.String("context", "ring")), &cfg.Ring)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
if cfg.Logging.Development {
|
||||
lg.Info("configuration", zap.Any("", cfg))
|
||||
}
|
||||
|
||||
err = rh.Watch(ctx)
|
||||
http := server.NewHttpServer(lg.With(zap.String("context", "server")), &cfg)
|
||||
|
||||
err = ring.NewRingHandler(ctx, lg.With(zap.String("context", "ring")), &cfg.Ring)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
+103
-49
@@ -3,17 +3,39 @@ package common
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/alexflint/go-arg"
|
||||
"go.uber.org/zap"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
type File = ConfigFile
|
||||
type VideoSrc = ConfigVideoSourceStream
|
||||
type AudioSrc = ConfigAudioSourceStream
|
||||
type AudioSink = ConfigAudioSinkStream
|
||||
type Logging = ConfigLogging
|
||||
type Ring = ConfigRing
|
||||
type Http = ConfigHTTP
|
||||
|
||||
type Config struct {
|
||||
VideoSrc ConfigVideoSourceStream
|
||||
AudioSrc ConfigAudioSourceStream
|
||||
AudioSink ConfigAudioSinkStream
|
||||
Logging ConfigLogging
|
||||
Ring ConfigRing
|
||||
Http ConfigHTTP
|
||||
File
|
||||
VideoSrc `yaml:"video-src"`
|
||||
AudioSrc `yaml:"audio-src"`
|
||||
AudioSink `yaml:"audio-sink"`
|
||||
Logging `yaml:"logging"`
|
||||
Ring `yaml:"ring"`
|
||||
Http `yaml:"http"`
|
||||
}
|
||||
|
||||
type Path struct {
|
||||
string
|
||||
}
|
||||
|
||||
func (p Path) String() string {
|
||||
return p.string
|
||||
}
|
||||
|
||||
type ConfigStream struct {
|
||||
@@ -22,59 +44,64 @@ type ConfigStream struct {
|
||||
AudioSink ConfigAudioSinkStream // audio sink for webrtc receive
|
||||
}
|
||||
|
||||
type ConfigFile struct {
|
||||
Path *Path `arg:"--config"`
|
||||
}
|
||||
|
||||
type ConfigLogging struct {
|
||||
Level string `arg:"--log-level,env:LOG_LEVEL" default:"debug"`
|
||||
Level zap.AtomicLevel `arg:"--log-level,env:LOG_LEVEL" yaml:"level" default:"debug"`
|
||||
Development bool `arg:"--log-development,env:LOG_DEVELOPMENT" yaml:"development"`
|
||||
}
|
||||
|
||||
type ConfigRing struct {
|
||||
Device *string `arg:"--input-device,env:INPUT_DEVICE"`
|
||||
Key string `arg:"--ring-key" default:"KEY_F1"`
|
||||
JingleBaseUri *string `arg:"--jingle-base-uri,env:JINGLE_BASE_URI"`
|
||||
JinglePath string `arg:"--jingle-path,env:JINGLE_PATH" default:"audio/ding-dong.wav"`
|
||||
SonosTarget string `arg:"--sonos-target,env:SONOS_TARGET" default:"-"`
|
||||
SonosVolume int `arg:"--sonos-volume,env:SONOS_VOLUME" default:"50"`
|
||||
HomeassistantWebhook *string `arg:"--ha-webhook,env:HA_WEBHOOK"`
|
||||
NoIPv6 bool `arg:"--disable-ipv6,env:NO_IPV6" default:"false"`
|
||||
Device *string `arg:"--input-device,env:INPUT_DEVICE" yaml:"input"`
|
||||
Key string `arg:"--ring-key" default:"KEY_F1" yaml:"key"`
|
||||
JingleBaseUri *string `arg:"--jingle-base-uri,env:JINGLE_BASE_URI" yaml:"jingle-base-uri"`
|
||||
JinglePath Path `arg:"--jingle-path,env:JINGLE_PATH" default:"audio/ding-dong.wav" yaml:"jingle-path"`
|
||||
SonosTarget string `arg:"--sonos-target,env:SONOS_TARGET" yaml:"sonos-target" default:"-"`
|
||||
SonosVolume int `arg:"--sonos-volume,env:SONOS_VOLUME" yaml:"sonos-volume" default:"50"`
|
||||
HomeassistantWebhook *string `arg:"--ha-webhook,env:HA_WEBHOOK" yaml:"ha-webhook"`
|
||||
NoIPv6 bool `arg:"--disable-ipv6,env:NO_IPV6" yaml:"no-ipv6"`
|
||||
}
|
||||
|
||||
type ConfigHTTP struct {
|
||||
Host string `arg:"--http-host,env:HTTP_HOST" default:"0.0.0.0"`
|
||||
Port uint `arg:"--http-port,env:HTTP_PORT" default:"8080"`
|
||||
Tls bool `arg:"--http-tls,env:HTTP_TLS" default:"true"`
|
||||
TlsKey *string `arg:"--http-tls-key,env:HTTP_TLS_KEY"`
|
||||
TlsCert *string `arg:"--http-tls-cert,env:HTTP_TLS_CERT"`
|
||||
PathGetLiveness string `arg:"env:HTTP_PATH_LIVENESS" default:"/healthz"`
|
||||
PathGetReadiness string `arg:"env:HTTP_PATH_READINESS" default:"/readyz"`
|
||||
StaticPath *string `arg:"--http-static,env:HTTP_STATIC"`
|
||||
Host string `arg:"--http-host,env:HTTP_HOST" yaml:"host" default:"0.0.0.0"`
|
||||
Port uint `arg:"--http-port,env:HTTP_PORT" yaml:"port" default:"8080"`
|
||||
Tls bool `arg:"--http-tls,env:HTTP_TLS" yaml:"tls" default:"true"`
|
||||
TlsKey *string `arg:"--http-tls-key,env:HTTP_TLS_KEY" yaml:"tls-key"`
|
||||
TlsCert *string `arg:"--http-tls-cert,env:HTTP_TLS_CERT" yaml:"tls-cert"`
|
||||
PathGetLiveness string `arg:"env:HTTP_PATH_LIVENESS" yaml:"liveness" default:"/healthz"`
|
||||
PathGetReadiness string `arg:"env:HTTP_PATH_READINESS" yaml:"readiness" default:"/readyz"`
|
||||
StaticPath *Path `arg:"--http-static,env:HTTP_STATIC" yaml:"static"`
|
||||
}
|
||||
|
||||
type ConfigVideoSourceStream struct {
|
||||
Source string `arg:"--video-src,env:VIDEO_SRC" default:"v4l2src"`
|
||||
Device string `arg:"--video-src-device,env:VIDEO_SRC_DEVICE" default:"/dev/video0"`
|
||||
Codec StreamCodec `arg:"--video-src-codec,env:VIDEO_SRC_CODEC" default:"vp8"`
|
||||
Height uint `arg:"--video-src-height,env:VIDEO_SRC_HEIGHT" default:"480"`
|
||||
Width uint `arg:"--video-src-width,env:VIDEO_SRC_WIDTH" default:"640"`
|
||||
Framerate uint `arg:"--video-src-fps,env:VIDEO_SRC_FPS" default:"30"`
|
||||
Bitrate uint `arg:"--video-src-bps,env:VIDEO_SRC_BPS" default:"300"`
|
||||
Queue bool `arg:"--video-src-queue,env:VIDEO_SRC_QUEUE" default:"false"`
|
||||
Source string `arg:"--video-src,env:VIDEO_SRC" yaml:"source" default:"v4l2src"`
|
||||
Device string `arg:"--video-src-device,env:VIDEO_SRC_DEVICE" yaml:"device" default:"/dev/video0"`
|
||||
Codec StreamCodec `arg:"--video-src-codec,env:VIDEO_SRC_CODEC" yaml:"codec" default:"vp8"`
|
||||
Height uint `arg:"--video-src-height,env:VIDEO_SRC_HEIGHT" yaml:"height" default:"480"`
|
||||
Width uint `arg:"--video-src-width,env:VIDEO_SRC_WIDTH" yaml:"width" default:"640"`
|
||||
Framerate uint `arg:"--video-src-fps,env:VIDEO_SRC_FPS" yaml:"fps" default:"30"`
|
||||
Bitrate uint `arg:"--video-src-bps,env:VIDEO_SRC_BPS" yaml:"bps" default:"300"`
|
||||
Queue bool `arg:"--video-src-queue,env:VIDEO_SRC_QUEUE" yaml:"queue" default:"false"`
|
||||
}
|
||||
|
||||
type ConfigAudioSourceStream struct {
|
||||
Source string `arg:"--audio-src,env:AUDIO_SRC" default:"alsasrc"`
|
||||
DeviceName string `arg:"--audio-src-device-name,env:AUDIO_SRC_DEVICE_NAME" default:"default"`
|
||||
Device *string `arg:"--audio-src-device,env:AUDIO_SRC_DEVICE"`
|
||||
Codec StreamCodec `arg:"--audio-src-codec,env:AUDIO_SRC_CODEC" default:"opus"`
|
||||
Channels uint `arg:"--audio-src-channels,env:AUDIO_SRC_CHANNELS" default:"1"`
|
||||
Queue bool `arg:"--audio-src-queue,env:AUDIO_SRC_QUEUE" default:"false"`
|
||||
Source string `arg:"--audio-src,env:AUDIO_SRC" yaml:"source" default:"alsasrc"`
|
||||
DeviceName string `arg:"--audio-src-device-name,env:AUDIO_SRC_DEVICE_NAME" yaml:"name" default:"default"`
|
||||
Device *string `arg:"--audio-src-device,env:AUDIO_SRC_DEVICE" yaml:"device"`
|
||||
Codec StreamCodec `arg:"--audio-src-codec,env:AUDIO_SRC_CODEC" yaml:"codec" default:"opus"`
|
||||
Channels uint `arg:"--audio-src-channels,env:AUDIO_SRC_CHANNELS" yaml:"channels" default:"1"`
|
||||
Queue bool `arg:"--audio-src-queue,env:AUDIO_SRC_QUEUE" yaml:"queue" default:"false"`
|
||||
}
|
||||
|
||||
type ConfigAudioSinkStream struct {
|
||||
Sink string `arg:"--audio-sink,env:AUDIO_SINK" default:"alsasink"`
|
||||
DeviceName string `arg:"--audio-sink-device-name,env:AUDIO_SINK_DEVICE_NAME" default:"default"`
|
||||
Device *string `arg:"--audio-sink-device,env:AUDIO_SINK_DEVICE"`
|
||||
Codec string `arg:"--audio-sink-codec,env:AUDIO_SINK_CODEC" default:"opus"`
|
||||
Channels uint `arg:"--audio-sink-channels,env:AUDIO_SINK_CHANNELS" default:"1"`
|
||||
Queue bool `arg:"--audio-sink-queue,env:AUDIO_SINK_QUEUE" default:"false"`
|
||||
Sink string `arg:"--audio-sink,env:AUDIO_SINK" yaml:"sink" default:"alsasink"`
|
||||
DeviceName string `arg:"--audio-sink-device-name,env:AUDIO_SINK_DEVICE_NAME" yaml:"name" default:"default"`
|
||||
Device *string `arg:"--audio-sink-device,env:AUDIO_SINK_DEVICE" yaml:"device"`
|
||||
Codec string `arg:"--audio-sink-codec,env:AUDIO_SINK_CODEC" yaml:"codec" default:"opus"`
|
||||
Channels uint `arg:"--audio-sink-channels,env:AUDIO_SINK_CHANNELS" yaml:"channels" default:"1"`
|
||||
Queue bool `arg:"--audio-sink-queue,env:AUDIO_SINK_QUEUE" yaml:"queue" default:"false"`
|
||||
}
|
||||
|
||||
func (c *Config) Stream() *ConfigStream {
|
||||
@@ -89,11 +116,38 @@ func (c *ConfigHTTP) Address() string {
|
||||
return net.JoinHostPort(c.Host, fmt.Sprint(c.Port))
|
||||
}
|
||||
|
||||
func (p *Path) UnmarshalText(b []byte) error {
|
||||
p.string = string(b)
|
||||
|
||||
if sc, had := strings.CutPrefix(p.string, "~/"); had {
|
||||
dir, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p.string = filepath.Join(dir, sc)
|
||||
}
|
||||
|
||||
p.string = os.ExpandEnv(p.string)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Config) MustParse() {
|
||||
arg.MustParse(&c.VideoSrc)
|
||||
arg.MustParse(&c.AudioSrc)
|
||||
arg.MustParse(&c.AudioSink)
|
||||
arg.MustParse(&c.Logging)
|
||||
arg.MustParse(&c.Http)
|
||||
arg.MustParse(&c.Ring)
|
||||
// first parse just the config file flag
|
||||
arg.MustParse(&c.File)
|
||||
|
||||
if c.File.Path != nil {
|
||||
if _, err := os.Stat(c.File.Path.String()); err == nil {
|
||||
if data, err := os.ReadFile(c.File.Path.String()); err == nil {
|
||||
err := yaml.Unmarshal(data, c)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// parse the rest
|
||||
arg.MustParse(c)
|
||||
}
|
||||
|
||||
@@ -9,12 +9,13 @@ import (
|
||||
|
||||
func NewLogger(cfg *ConfigLogging) (*zap.Logger, error) {
|
||||
var c zap.Config
|
||||
if cfg.Level == "debug" {
|
||||
if cfg.Level.Level().CapitalString() == "DEBUG" {
|
||||
c = zap.NewDevelopmentConfig()
|
||||
} else {
|
||||
c = zap.NewProductionConfig()
|
||||
}
|
||||
|
||||
c.Level = cfg.Level
|
||||
c.EncoderConfig.TimeKey = "time"
|
||||
c.EncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout(time.RFC3339)
|
||||
|
||||
|
||||
+13
-7
@@ -14,7 +14,7 @@ import (
|
||||
)
|
||||
|
||||
type PlayHandler interface {
|
||||
Play(*url.URL) error
|
||||
Play(context.Context, *url.URL) error
|
||||
Watch(context.Context) error
|
||||
}
|
||||
|
||||
@@ -24,16 +24,22 @@ type RingHandler struct {
|
||||
playHandlers []PlayHandler
|
||||
}
|
||||
|
||||
func NewRingHandler(lg *zap.Logger, cfg *common.ConfigRing) (*RingHandler, error) {
|
||||
func NewRingHandler(ctx context.Context, lg *zap.Logger, cfg *common.ConfigRing) error {
|
||||
spl, err := sonos.NewSonosHandler(lg.With(zap.String("context", "sonos")), cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
|
||||
return &RingHandler{lg, cfg, []PlayHandler{spl}}, nil
|
||||
rh := &RingHandler{lg, cfg, []PlayHandler{spl}}
|
||||
|
||||
if err = rh.watch(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *RingHandler) Watch(ctx context.Context) error {
|
||||
func (h *RingHandler) watch(ctx context.Context) error {
|
||||
if h.cfg.Device == nil {
|
||||
h.lg.Warn("nothing to watch for key press")
|
||||
return nil
|
||||
@@ -75,9 +81,9 @@ func (h *RingHandler) Watch(ctx context.Context) error {
|
||||
e, err := d.ReadOne()
|
||||
if err == nil && e.Code == key && e.Value == 0 {
|
||||
// run all players
|
||||
tu := bu.JoinPath(h.cfg.JinglePath)
|
||||
tu := bu.JoinPath(h.cfg.JinglePath.String())
|
||||
for _, p := range h.playHandlers {
|
||||
if err := p.Play(tu); err != nil {
|
||||
if err := p.Play(ctx, tu); err != nil {
|
||||
h.lg.Error("failed to play", zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,8 +72,8 @@ func NewSonosHandler(lg *zap.Logger, cfg *common.ConfigRing) (*SonosHandler, err
|
||||
return &SonosHandler{lg, cfg, make(map[string]*SonosPlayer)}, nil
|
||||
}
|
||||
|
||||
func (p *SonosPlayer) init() error {
|
||||
req, err := http.NewRequest(http.MethodGet, p.address.JoinPath("api/v1/players/local/info").String(), nil)
|
||||
func (p *SonosPlayer) init(ctx context.Context) error {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, p.address.JoinPath("api/v1/players/local/info").String(), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -105,7 +105,7 @@ func (p *SonosPlayer) init() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *SonosPlayer) Play(uri *url.URL, volume int) error {
|
||||
func (p *SonosPlayer) Play(ctx context.Context, uri *url.URL, volume int) error {
|
||||
sab := sonosAudioClip{
|
||||
Name: "Pull Bell",
|
||||
AppId: "com.acme.app",
|
||||
@@ -119,7 +119,7 @@ func (p *SonosPlayer) Play(uri *url.URL, volume int) error {
|
||||
return err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(http.MethodPost, p.address.JoinPath(fmt.Sprintf("api/v1/players/%s/audioClip", p.info.PlayerId)).String(), bytes.NewBuffer(b))
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodPost, p.address.JoinPath(fmt.Sprintf("api/v1/players/%s/audioClip", p.info.PlayerId)).String(), bytes.NewBuffer(b))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -161,7 +161,7 @@ func (h *SonosHandler) Watch(ctx context.Context) error {
|
||||
h.lg.Error("failed to create player", zap.Error(err))
|
||||
continue
|
||||
}
|
||||
if err := p.init(); err != nil {
|
||||
if err := p.init(ctx); err != nil {
|
||||
h.lg.Error("failed to init player", zap.Error(err))
|
||||
continue
|
||||
}
|
||||
@@ -188,10 +188,10 @@ func (h *SonosHandler) Watch(ctx context.Context) error {
|
||||
return mdns.Query(params)
|
||||
}
|
||||
|
||||
func (h *SonosHandler) Play(uri *url.URL) error {
|
||||
func (h *SonosHandler) Play(ctx context.Context, uri *url.URL) error {
|
||||
for _, p := range h.players {
|
||||
h.lg.Info("playing clip", zap.String("target", p.address.String()), zap.String("clip", uri.String()))
|
||||
if err := p.Play(uri, h.cfg.SonosVolume); err != nil {
|
||||
if err := p.Play(ctx, uri, h.cfg.SonosVolume); err != nil {
|
||||
h.lg.Error("failed to play", zap.String("address", p.address.String()), zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
+3
-5
@@ -56,9 +56,10 @@ func NewHttpServer(lg *zap.Logger, cfg *common.Config) *HttpServer {
|
||||
}
|
||||
|
||||
func (h *HttpServer) ListenAndServe(ctx context.Context) error {
|
||||
// set the configured address
|
||||
h.Addr = h.cfg.Http.Address()
|
||||
|
||||
if h.cfg.Http.Tls {
|
||||
// set the configured address
|
||||
h.Addr = h.cfg.Http.Address()
|
||||
|
||||
if h.cfg.Http.TlsCert != nil && h.cfg.Http.TlsKey != nil {
|
||||
cert, err := tls.LoadX509KeyPair(*h.cfg.Http.TlsCert, *h.cfg.Http.TlsKey)
|
||||
@@ -92,9 +93,6 @@ func (h *HttpServer) ListenAndServe(ctx context.Context) error {
|
||||
}
|
||||
}()
|
||||
} else {
|
||||
// set the configured address
|
||||
h.Addr = h.cfg.Http.Address()
|
||||
|
||||
go func() {
|
||||
// and listen
|
||||
if err := h.Server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||
|
||||
@@ -52,7 +52,7 @@ func CreateVideoPipelineSinkWithLaunch(lg *zap.Logger, s StreamElement) (*gst.Pi
|
||||
switch s.Codec {
|
||||
case common.VP8:
|
||||
pb.AddWithProperties("vp8enc", map[string]any{
|
||||
"bitrate": s.Bitrate,
|
||||
"target-bitrate": s.Bitrate,
|
||||
"error-resilient": "partitions",
|
||||
"keyframe-max-dist": int(10),
|
||||
"cpu-used": int(5),
|
||||
|
||||
@@ -103,5 +103,8 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cli": {
|
||||
"analytics": "ef0076dd-aa83-4841-9cf2-44ff71ec36f6"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ func (s staticDiskSource) Open(p string) (common.StaticSourceFile, error) {
|
||||
|
||||
func SetupHandler(e *gin.Engine, cfg *common.Config) {
|
||||
if cfg.Http.StaticPath != nil {
|
||||
handler := common.NewStaticHandler(staticDiskSource{*cfg.Http.StaticPath}, "index.html")
|
||||
handler := common.NewStaticHandler(staticDiskSource{cfg.Http.StaticPath.String()}, "index.html")
|
||||
e.NoRoute(func(c *gin.Context) {
|
||||
encoding := c.Request.Header.Get("Accept-Encoding")
|
||||
|
||||
|
||||
+52
-2
@@ -134,10 +134,10 @@ arg.MustParse(&args)
|
||||
|
||||
```shell
|
||||
$ ./example -h
|
||||
Usage: [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--help] INPUT [OUTPUT [OUTPUT ...]]
|
||||
Usage: [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--help] INPUT [OUTPUT [OUTPUT ...]]
|
||||
|
||||
Positional arguments:
|
||||
INPUT
|
||||
INPUT
|
||||
OUTPUT
|
||||
|
||||
Options:
|
||||
@@ -180,6 +180,24 @@ var args struct {
|
||||
arg.MustParse(&args)
|
||||
```
|
||||
|
||||
#### Ignoring environment variables and/or default values
|
||||
|
||||
The values in an existing structure can be kept in-tact by ignoring environment
|
||||
variables and/or default values.
|
||||
|
||||
```go
|
||||
var args struct {
|
||||
Test string `arg:"-t,env:TEST" default:"something"`
|
||||
}
|
||||
|
||||
p, err := arg.NewParser(arg.Config{
|
||||
IgnoreEnv: true,
|
||||
IgnoreDefault: true,
|
||||
}, &args)
|
||||
|
||||
err = p.Parse(os.Args)
|
||||
```
|
||||
|
||||
### Arguments with multiple values
|
||||
```go
|
||||
var args struct {
|
||||
@@ -444,6 +462,9 @@ Options:
|
||||
|
||||
### Description strings
|
||||
|
||||
A descriptive message can be added at the top of the help text by implementing
|
||||
a `Description` function that returns a string.
|
||||
|
||||
```go
|
||||
type args struct {
|
||||
Foo string
|
||||
@@ -469,6 +490,35 @@ Options:
|
||||
--help, -h display this help and exit
|
||||
```
|
||||
|
||||
Similarly an epilogue can be added at the end of the help text by implementing
|
||||
the `Epilogue` function.
|
||||
|
||||
```go
|
||||
type args struct {
|
||||
Foo string
|
||||
}
|
||||
|
||||
func (args) Epilogue() string {
|
||||
return "For more information visit github.com/alexflint/go-arg"
|
||||
}
|
||||
|
||||
func main() {
|
||||
var args args
|
||||
arg.MustParse(&args)
|
||||
}
|
||||
```
|
||||
|
||||
```shell
|
||||
$ ./example -h
|
||||
Usage: example [--foo FOO]
|
||||
|
||||
Options:
|
||||
--foo FOO
|
||||
--help, -h display this help and exit
|
||||
|
||||
For more information visit github.com/alexflint/go-arg
|
||||
```
|
||||
|
||||
### Subcommands
|
||||
|
||||
*Introduced in version 1.1.0*
|
||||
|
||||
+203
-80
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/csv"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
@@ -43,23 +44,25 @@ func (p path) Child(f reflect.StructField) path {
|
||||
|
||||
// spec represents a command line option
|
||||
type spec struct {
|
||||
dest path
|
||||
field reflect.StructField // the struct field from which this option was created
|
||||
long string // the --long form for this option, or empty if none
|
||||
short string // the -s short form for this option, or empty if none
|
||||
cardinality cardinality // determines how many tokens will be present (possible values: zero, one, multiple)
|
||||
required bool // if true, this option must be present on the command line
|
||||
positional bool // if true, this option will be looked for in the positional flags
|
||||
separate bool // if true, each slice and map entry will have its own --flag
|
||||
help string // the help text for this option
|
||||
env string // the name of the environment variable for this option, or empty for none
|
||||
defaultVal string // default value for this option
|
||||
placeholder string // name of the data in help
|
||||
dest path
|
||||
field reflect.StructField // the struct field from which this option was created
|
||||
long string // the --long form for this option, or empty if none
|
||||
short string // the -s short form for this option, or empty if none
|
||||
cardinality cardinality // determines how many tokens will be present (possible values: zero, one, multiple)
|
||||
required bool // if true, this option must be present on the command line
|
||||
positional bool // if true, this option will be looked for in the positional flags
|
||||
separate bool // if true, each slice and map entry will have its own --flag
|
||||
help string // the help text for this option
|
||||
env string // the name of the environment variable for this option, or empty for none
|
||||
defaultValue reflect.Value // default value for this option
|
||||
defaultString string // default value for this option, in string form to be displayed in help text
|
||||
placeholder string // placeholder string in help
|
||||
}
|
||||
|
||||
// command represents a named subcommand, or the top-level command
|
||||
type command struct {
|
||||
name string
|
||||
aliases []string
|
||||
help string
|
||||
dest path
|
||||
specs []*spec
|
||||
@@ -67,33 +70,30 @@ type command struct {
|
||||
parent *command
|
||||
}
|
||||
|
||||
// ErrHelp indicates that -h or --help were provided
|
||||
// ErrHelp indicates that the builtin -h or --help were provided
|
||||
var ErrHelp = errors.New("help requested by user")
|
||||
|
||||
// ErrVersion indicates that --version was provided
|
||||
// ErrVersion indicates that the builtin --version was provided
|
||||
var ErrVersion = errors.New("version requested by user")
|
||||
|
||||
// for monkey patching in example code
|
||||
var mustParseExit = os.Exit
|
||||
|
||||
// MustParse processes command line arguments and exits upon failure
|
||||
func MustParse(dest ...interface{}) *Parser {
|
||||
p, err := NewParser(Config{}, dest...)
|
||||
return mustParse(Config{Exit: mustParseExit}, dest...)
|
||||
}
|
||||
|
||||
// mustParse is a helper that facilitates testing
|
||||
func mustParse(config Config, dest ...interface{}) *Parser {
|
||||
p, err := NewParser(config, dest...)
|
||||
if err != nil {
|
||||
fmt.Fprintln(stdout, err)
|
||||
osExit(-1)
|
||||
return nil // just in case osExit was monkey-patched
|
||||
}
|
||||
|
||||
err = p.Parse(flags())
|
||||
switch {
|
||||
case err == ErrHelp:
|
||||
p.writeHelpForSubcommand(stdout, p.lastCmd)
|
||||
osExit(0)
|
||||
case err == ErrVersion:
|
||||
fmt.Fprintln(stdout, p.version)
|
||||
osExit(0)
|
||||
case err != nil:
|
||||
p.failWithSubcommand(err.Error(), p.lastCmd)
|
||||
fmt.Fprintln(config.Out, err)
|
||||
config.Exit(-1)
|
||||
return nil
|
||||
}
|
||||
|
||||
p.MustParse(flags())
|
||||
return p
|
||||
}
|
||||
|
||||
@@ -121,6 +121,20 @@ type Config struct {
|
||||
|
||||
// IgnoreEnv instructs the library not to read environment variables
|
||||
IgnoreEnv bool
|
||||
|
||||
// IgnoreDefault instructs the library not to reset the variables to the
|
||||
// default values, including pointers to sub commands
|
||||
IgnoreDefault bool
|
||||
|
||||
// StrictSubcommands intructs the library not to allow global commands after
|
||||
// subcommand
|
||||
StrictSubcommands bool
|
||||
|
||||
// Exit is called to terminate the process with an error code (defaults to os.Exit)
|
||||
Exit func(int)
|
||||
|
||||
// Out is where help text, usage text, and failure messages are printed (defaults to os.Stdout)
|
||||
Out io.Writer
|
||||
}
|
||||
|
||||
// Parser represents a set of command line options with destination values
|
||||
@@ -130,9 +144,10 @@ type Parser struct {
|
||||
config Config
|
||||
version string
|
||||
description string
|
||||
epilogue string
|
||||
|
||||
// the following field changes during processing of command line arguments
|
||||
lastCmd *command
|
||||
subcommand []string
|
||||
}
|
||||
|
||||
// Versioned is the interface that the destination struct should implement to
|
||||
@@ -151,6 +166,14 @@ type Described interface {
|
||||
Description() string
|
||||
}
|
||||
|
||||
// Epilogued is the interface that the destination struct should implement to
|
||||
// add an epilogue string at the bottom of the help message.
|
||||
type Epilogued interface {
|
||||
// Epilogue returns the string that will be printed on a line by itself
|
||||
// at the end of the help message.
|
||||
Epilogue() string
|
||||
}
|
||||
|
||||
// walkFields calls a function for each field of a struct, recursively expanding struct fields.
|
||||
func walkFields(t reflect.Type, visit func(field reflect.StructField, owner reflect.Type) bool) {
|
||||
walkFieldsImpl(t, visit, nil)
|
||||
@@ -174,6 +197,14 @@ func walkFieldsImpl(t reflect.Type, visit func(field reflect.StructField, owner
|
||||
|
||||
// NewParser constructs a parser from a list of destination structs
|
||||
func NewParser(config Config, dests ...interface{}) (*Parser, error) {
|
||||
// fill in defaults
|
||||
if config.Exit == nil {
|
||||
config.Exit = os.Exit
|
||||
}
|
||||
if config.Out == nil {
|
||||
config.Out = os.Stdout
|
||||
}
|
||||
|
||||
// first pick a name for the command for use in the usage text
|
||||
var name string
|
||||
switch {
|
||||
@@ -208,18 +239,31 @@ func NewParser(config Config, dests ...interface{}) (*Parser, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// add nonzero field values as defaults
|
||||
// for backwards compatibility, add nonzero field values as defaults
|
||||
// this applies only to the top-level command, not to subcommands (this inconsistency
|
||||
// is the reason that this method for setting default values was deprecated)
|
||||
for _, spec := range cmd.specs {
|
||||
if v := p.val(spec.dest); v.IsValid() && !isZero(v) {
|
||||
if defaultVal, ok := v.Interface().(encoding.TextMarshaler); ok {
|
||||
str, err := defaultVal.MarshalText()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%v: error marshaling default value to string: %v", spec.dest, err)
|
||||
}
|
||||
spec.defaultVal = string(str)
|
||||
} else {
|
||||
spec.defaultVal = fmt.Sprintf("%v", v)
|
||||
// get the value
|
||||
v := p.val(spec.dest)
|
||||
|
||||
// if the value is the "zero value" (e.g. nil pointer, empty struct) then ignore
|
||||
if isZero(v) {
|
||||
continue
|
||||
}
|
||||
|
||||
// store as a default
|
||||
spec.defaultValue = v
|
||||
|
||||
// we need a string to display in help text
|
||||
// if MarshalText is implemented then use that
|
||||
if m, ok := v.Interface().(encoding.TextMarshaler); ok {
|
||||
s, err := m.MarshalText()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%v: error marshaling default value to string: %v", spec.dest, err)
|
||||
}
|
||||
spec.defaultString = string(s)
|
||||
} else {
|
||||
spec.defaultString = fmt.Sprintf("%v", v)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,6 +276,9 @@ func NewParser(config Config, dests ...interface{}) (*Parser, error) {
|
||||
if dest, ok := dest.(Described); ok {
|
||||
p.description = dest.Description()
|
||||
}
|
||||
if dest, ok := dest.(Epilogued); ok {
|
||||
p.epilogue = dest.Epilogue()
|
||||
}
|
||||
}
|
||||
|
||||
return &p, nil
|
||||
@@ -288,13 +335,8 @@ func cmdFromStruct(name string, dest path, t reflect.Type) (*command, error) {
|
||||
spec.help = help
|
||||
}
|
||||
|
||||
defaultVal, hasDefault := field.Tag.Lookup("default")
|
||||
if hasDefault {
|
||||
spec.defaultVal = defaultVal
|
||||
}
|
||||
|
||||
// Look at the tag
|
||||
var isSubcommand bool // tracks whether this field is a subcommand
|
||||
// process each comma-separated part of the tag
|
||||
var isSubcommand bool
|
||||
for _, key := range strings.Split(tag, ",") {
|
||||
if key == "" {
|
||||
continue
|
||||
@@ -312,18 +354,13 @@ func cmdFromStruct(name string, dest path, t reflect.Type) (*command, error) {
|
||||
case strings.HasPrefix(key, "--"):
|
||||
spec.long = key[2:]
|
||||
case strings.HasPrefix(key, "-"):
|
||||
if len(key) != 2 {
|
||||
if len(key) > 2 {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: short arguments must be one character only",
|
||||
t.Name(), field.Name))
|
||||
return false
|
||||
}
|
||||
spec.short = key[1:]
|
||||
case key == "required":
|
||||
if hasDefault {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: 'required' cannot be used when a default value is specified",
|
||||
t.Name(), field.Name))
|
||||
return false
|
||||
}
|
||||
spec.required = true
|
||||
case key == "positional":
|
||||
spec.positional = true
|
||||
@@ -340,18 +377,24 @@ func cmdFromStruct(name string, dest path, t reflect.Type) (*command, error) {
|
||||
}
|
||||
case key == "subcommand":
|
||||
// decide on a name for the subcommand
|
||||
cmdname := value
|
||||
if cmdname == "" {
|
||||
cmdname = strings.ToLower(field.Name)
|
||||
var cmdnames []string
|
||||
if value == "" {
|
||||
cmdnames = []string{strings.ToLower(field.Name)}
|
||||
} else {
|
||||
cmdnames = strings.Split(value, "|")
|
||||
}
|
||||
for i := range cmdnames {
|
||||
cmdnames[i] = strings.TrimSpace(cmdnames[i])
|
||||
}
|
||||
|
||||
// parse the subcommand recursively
|
||||
subcmd, err := cmdFromStruct(cmdname, subdest, field.Type)
|
||||
subcmd, err := cmdFromStruct(cmdnames[0], subdest, field.Type)
|
||||
if err != nil {
|
||||
errs = append(errs, err.Error())
|
||||
return false
|
||||
}
|
||||
|
||||
subcmd.aliases = cmdnames[1:]
|
||||
subcmd.parent = &cmd
|
||||
subcmd.help = field.Tag.Get("help")
|
||||
|
||||
@@ -363,6 +406,7 @@ func cmdFromStruct(name string, dest path, t reflect.Type) (*command, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// placeholder is the string used in the help text like this: "--somearg PLACEHOLDER"
|
||||
placeholder, hasPlaceholder := field.Tag.Lookup("placeholder")
|
||||
if hasPlaceholder {
|
||||
spec.placeholder = placeholder
|
||||
@@ -372,27 +416,60 @@ func cmdFromStruct(name string, dest path, t reflect.Type) (*command, error) {
|
||||
spec.placeholder = strings.ToUpper(spec.field.Name)
|
||||
}
|
||||
|
||||
// Check whether this field is supported. It's good to do this here rather than
|
||||
// if this is a subcommand then we've done everything we need to do
|
||||
if isSubcommand {
|
||||
return false
|
||||
}
|
||||
|
||||
// check whether this field is supported. It's good to do this here rather than
|
||||
// wait until ParseValue because it means that a program with invalid argument
|
||||
// fields will always fail regardless of whether the arguments it received
|
||||
// exercised those fields.
|
||||
if !isSubcommand {
|
||||
cmd.specs = append(cmd.specs, &spec)
|
||||
var err error
|
||||
spec.cardinality, err = cardinalityOf(field.Type)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: %s fields are not supported",
|
||||
t.Name(), field.Name, field.Type.String()))
|
||||
return false
|
||||
}
|
||||
|
||||
var err error
|
||||
spec.cardinality, err = cardinalityOf(field.Type)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: %s fields are not supported",
|
||||
t.Name(), field.Name, field.Type.String()))
|
||||
return false
|
||||
}
|
||||
if spec.cardinality == multiple && hasDefault {
|
||||
defaultString, hasDefault := field.Tag.Lookup("default")
|
||||
if hasDefault {
|
||||
// we do not support default values for maps and slices
|
||||
if spec.cardinality == multiple {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: default values are not supported for slice or map fields",
|
||||
t.Name(), field.Name))
|
||||
return false
|
||||
}
|
||||
|
||||
// a required field cannot also have a default value
|
||||
if spec.required {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: 'required' cannot be used when a default value is specified",
|
||||
t.Name(), field.Name))
|
||||
return false
|
||||
}
|
||||
|
||||
// parse the default value
|
||||
spec.defaultString = defaultString
|
||||
if field.Type.Kind() == reflect.Ptr {
|
||||
// here we have a field of type *T and we create a new T, no need to dereference
|
||||
// in order for the value to be settable
|
||||
spec.defaultValue = reflect.New(field.Type.Elem())
|
||||
} else {
|
||||
// here we have a field of type T and we create a new T and then dereference it
|
||||
// so that the resulting value is settable
|
||||
spec.defaultValue = reflect.New(field.Type).Elem()
|
||||
}
|
||||
err := scalar.ParseValue(spec.defaultValue, defaultString)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Sprintf("%s.%s: error processing default value: %v", t.Name(), field.Name, err))
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// add the spec to the list of specs
|
||||
cmd.specs = append(cmd.specs, &spec)
|
||||
|
||||
// if this was an embedded field then we already returned true up above
|
||||
return false
|
||||
})
|
||||
@@ -433,6 +510,20 @@ func (p *Parser) Parse(args []string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *Parser) MustParse(args []string) {
|
||||
err := p.Parse(args)
|
||||
switch {
|
||||
case err == ErrHelp:
|
||||
p.WriteHelpForSubcommand(p.config.Out, p.subcommand...)
|
||||
p.config.Exit(0)
|
||||
case err == ErrVersion:
|
||||
fmt.Fprintln(p.config.Out, p.version)
|
||||
p.config.Exit(0)
|
||||
case err != nil:
|
||||
p.FailSubcommand(err.Error(), p.subcommand...)
|
||||
}
|
||||
}
|
||||
|
||||
// process environment vars for the given arguments
|
||||
func (p *Parser) captureEnvVars(specs []*spec, wasPresent map[*spec]bool) error {
|
||||
for _, spec := range specs {
|
||||
@@ -486,7 +577,7 @@ func (p *Parser) process(args []string) error {
|
||||
|
||||
// union of specs for the chain of subcommands encountered so far
|
||||
curCmd := p.cmd
|
||||
p.lastCmd = curCmd
|
||||
p.subcommand = nil
|
||||
|
||||
// make a copy of the specs because we will add to this list each time we expand a subcommand
|
||||
specs := make([]*spec, len(curCmd.specs))
|
||||
@@ -500,6 +591,15 @@ func (p *Parser) process(args []string) error {
|
||||
}
|
||||
}
|
||||
|
||||
// determine if the current command has a version option spec
|
||||
var hasVersionOption bool
|
||||
for _, spec := range curCmd.specs {
|
||||
if spec.long == "version" {
|
||||
hasVersionOption = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// process each string from the command line
|
||||
var allpositional bool
|
||||
var positionals []string
|
||||
@@ -527,10 +627,17 @@ func (p *Parser) process(args []string) error {
|
||||
|
||||
// instantiate the field to point to a new struct
|
||||
v := p.val(subcmd.dest)
|
||||
v.Set(reflect.New(v.Type().Elem())) // we already checked that all subcommands are struct pointers
|
||||
if v.IsNil() {
|
||||
v.Set(reflect.New(v.Type().Elem())) // we already checked that all subcommands are struct pointers
|
||||
}
|
||||
|
||||
// add the new options to the set of allowed options
|
||||
specs = append(specs, subcmd.specs...)
|
||||
if p.config.StrictSubcommands {
|
||||
specs = make([]*spec, len(subcmd.specs))
|
||||
copy(specs, subcmd.specs)
|
||||
} else {
|
||||
specs = append(specs, subcmd.specs...)
|
||||
}
|
||||
|
||||
// capture environment vars for these new options
|
||||
if !p.config.IgnoreEnv {
|
||||
@@ -541,7 +648,7 @@ func (p *Parser) process(args []string) error {
|
||||
}
|
||||
|
||||
curCmd = subcmd
|
||||
p.lastCmd = curCmd
|
||||
p.subcommand = append(p.subcommand, arg)
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -550,7 +657,9 @@ func (p *Parser) process(args []string) error {
|
||||
case "-h", "--help":
|
||||
return ErrHelp
|
||||
case "--version":
|
||||
return ErrVersion
|
||||
if !hasVersionOption && p.version != "" {
|
||||
return ErrVersion
|
||||
}
|
||||
}
|
||||
|
||||
// check for an equals sign, as in "--foo=bar"
|
||||
@@ -564,7 +673,7 @@ func (p *Parser) process(args []string) error {
|
||||
// lookup the spec for this option (note that the "specs" slice changes as
|
||||
// we expand subcommands so it is better not to use a map)
|
||||
spec := findOption(specs, opt)
|
||||
if spec == nil {
|
||||
if spec == nil || opt == "" {
|
||||
return fmt.Errorf("unknown argument %s", arg)
|
||||
}
|
||||
wasPresent[spec] = true
|
||||
@@ -653,17 +762,26 @@ func (p *Parser) process(args []string) error {
|
||||
}
|
||||
|
||||
if spec.required {
|
||||
if spec.short == "" && spec.long == "" {
|
||||
msg := fmt.Sprintf("environment variable %s is required", spec.env)
|
||||
return errors.New(msg)
|
||||
}
|
||||
|
||||
msg := fmt.Sprintf("%s is required", name)
|
||||
if spec.env != "" {
|
||||
msg += " (or environment variable " + spec.env + ")"
|
||||
}
|
||||
|
||||
return errors.New(msg)
|
||||
}
|
||||
if spec.defaultVal != "" {
|
||||
err := scalar.ParseValue(p.val(spec.dest), spec.defaultVal)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error processing default value for %s: %v", name, err)
|
||||
}
|
||||
|
||||
if spec.defaultValue.IsValid() && !p.config.IgnoreDefault {
|
||||
// One issue here is that if the user now modifies the value then
|
||||
// the default value stored in the spec will be corrupted. There
|
||||
// is no general way to "deep-copy" values in Go, and we still
|
||||
// support the old-style method for specifying defaults as
|
||||
// Go values assigned directly to the struct field, so we are stuck.
|
||||
p.val(spec.dest).Set(spec.defaultValue)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -724,6 +842,11 @@ func findSubcommand(cmds []*command, name string) *command {
|
||||
if cmd.name == name {
|
||||
return cmd
|
||||
}
|
||||
for _, alias := range cmd.aliases {
|
||||
if alias == name {
|
||||
return cmd
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
+11
-6
@@ -13,9 +13,9 @@ import (
|
||||
var textUnmarshalerType = reflect.TypeOf([]encoding.TextUnmarshaler{}).Elem()
|
||||
|
||||
// cardinality tracks how many tokens are expected for a given spec
|
||||
// - zero is a boolean, which does to expect any value
|
||||
// - one is an ordinary option that will be parsed from a single token
|
||||
// - multiple is a slice or map that can accept zero or more tokens
|
||||
// - zero is a boolean, which does to expect any value
|
||||
// - one is an ordinary option that will be parsed from a single token
|
||||
// - multiple is a slice or map that can accept zero or more tokens
|
||||
type cardinality int
|
||||
|
||||
const (
|
||||
@@ -74,10 +74,10 @@ func cardinalityOf(t reflect.Type) (cardinality, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// isBoolean returns true if the type can be parsed from a single string
|
||||
// isBoolean returns true if the type is a boolean or a pointer to a boolean
|
||||
func isBoolean(t reflect.Type) bool {
|
||||
switch {
|
||||
case t.Implements(textUnmarshalerType):
|
||||
case isTextUnmarshaler(t):
|
||||
return false
|
||||
case t.Kind() == reflect.Bool:
|
||||
return true
|
||||
@@ -88,6 +88,11 @@ func isBoolean(t reflect.Type) bool {
|
||||
}
|
||||
}
|
||||
|
||||
// isTextUnmarshaler returns true if the type or its pointer implements encoding.TextUnmarshaler
|
||||
func isTextUnmarshaler(t reflect.Type) bool {
|
||||
return t.Implements(textUnmarshalerType) || reflect.PtrTo(t).Implements(textUnmarshalerType)
|
||||
}
|
||||
|
||||
// isExported returns true if the struct field name is exported
|
||||
func isExported(field string) bool {
|
||||
r, _ := utf8.DecodeRuneInString(field) // returns RuneError for empty string or invalid UTF8
|
||||
@@ -97,7 +102,7 @@ func isExported(field string) bool {
|
||||
// isZero returns true if v contains the zero value for its type
|
||||
func isZero(v reflect.Value) bool {
|
||||
t := v.Type()
|
||||
if t.Kind() == reflect.Slice || t.Kind() == reflect.Map {
|
||||
if t.Kind() == reflect.Ptr || t.Kind() == reflect.Slice || t.Kind() == reflect.Map || t.Kind() == reflect.Chan || t.Kind() == reflect.Interface {
|
||||
return v.IsNil()
|
||||
}
|
||||
if !t.Comparable() {
|
||||
|
||||
+24
-18
@@ -1,5 +1,7 @@
|
||||
package arg
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Subcommand returns the user struct for the subcommand selected by
|
||||
// the command line arguments most recently processed by the parser.
|
||||
// The return value is always a pointer to a struct. If no subcommand
|
||||
@@ -7,31 +9,35 @@ package arg
|
||||
// no command line arguments have been processed by this parser then it
|
||||
// returns nil.
|
||||
func (p *Parser) Subcommand() interface{} {
|
||||
if p.lastCmd == nil || p.lastCmd.parent == nil {
|
||||
if len(p.subcommand) == 0 {
|
||||
return nil
|
||||
}
|
||||
return p.val(p.lastCmd.dest).Interface()
|
||||
cmd, err := p.lookupCommand(p.subcommand...)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return p.val(cmd.dest).Interface()
|
||||
}
|
||||
|
||||
// SubcommandNames returns the sequence of subcommands specified by the
|
||||
// user. If no subcommands were given then it returns an empty slice.
|
||||
func (p *Parser) SubcommandNames() []string {
|
||||
if p.lastCmd == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
// make a list of ancestor commands
|
||||
var ancestors []string
|
||||
cur := p.lastCmd
|
||||
for cur.parent != nil { // we want to exclude the root
|
||||
ancestors = append(ancestors, cur.name)
|
||||
cur = cur.parent
|
||||
}
|
||||
return p.subcommand
|
||||
}
|
||||
|
||||
// reverse the list
|
||||
out := make([]string, len(ancestors))
|
||||
for i := 0; i < len(ancestors); i++ {
|
||||
out[i] = ancestors[len(ancestors)-i-1]
|
||||
// lookupCommand finds a subcommand based on a sequence of subcommand names. The
|
||||
// first string should be a top-level subcommand, the next should be a child
|
||||
// subcommand of that subcommand, and so on. If no strings are given then the
|
||||
// root command is returned. If no such subcommand exists then an error is
|
||||
// returned.
|
||||
func (p *Parser) lookupCommand(path ...string) (*command, error) {
|
||||
cmd := p.cmd
|
||||
for _, name := range path {
|
||||
found := findSubcommand(cmd.subcommands, name)
|
||||
if found == nil {
|
||||
return nil, fmt.Errorf("%q is not a subcommand of %s", name, cmd.name)
|
||||
}
|
||||
cmd = found
|
||||
}
|
||||
return out
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
+96
-93
@@ -3,23 +3,15 @@ package arg
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// the width of the left column
|
||||
const colWidth = 25
|
||||
|
||||
// to allow monkey patching in tests
|
||||
var (
|
||||
stdout io.Writer = os.Stdout
|
||||
stderr io.Writer = os.Stderr
|
||||
osExit = os.Exit
|
||||
)
|
||||
|
||||
// Fail prints usage information to stderr and exits with non-zero status
|
||||
func (p *Parser) Fail(msg string) {
|
||||
p.failWithSubcommand(msg, p.cmd)
|
||||
p.FailSubcommand(msg)
|
||||
}
|
||||
|
||||
// FailSubcommand prints usage information for a specified subcommand to stderr,
|
||||
@@ -29,28 +21,19 @@ func (p *Parser) Fail(msg string) {
|
||||
// a sequence of subcommand names starting with the top-level subcommand and so
|
||||
// on down the tree.
|
||||
func (p *Parser) FailSubcommand(msg string, subcommand ...string) error {
|
||||
cmd, err := p.lookupCommand(subcommand...)
|
||||
err := p.WriteUsageForSubcommand(p.config.Out, subcommand...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.failWithSubcommand(msg, cmd)
|
||||
return nil
|
||||
}
|
||||
|
||||
// failWithSubcommand prints usage information for the given subcommand to stderr and exits with non-zero status
|
||||
func (p *Parser) failWithSubcommand(msg string, cmd *command) {
|
||||
p.writeUsageForSubcommand(stderr, cmd)
|
||||
fmt.Fprintln(stderr, "error:", msg)
|
||||
osExit(-1)
|
||||
fmt.Fprintln(p.config.Out, "error:", msg)
|
||||
p.config.Exit(-1)
|
||||
return nil
|
||||
}
|
||||
|
||||
// WriteUsage writes usage information to the given writer
|
||||
func (p *Parser) WriteUsage(w io.Writer) {
|
||||
cmd := p.cmd
|
||||
if p.lastCmd != nil {
|
||||
cmd = p.lastCmd
|
||||
}
|
||||
p.writeUsageForSubcommand(w, cmd)
|
||||
p.WriteUsageForSubcommand(w, p.subcommand...)
|
||||
}
|
||||
|
||||
// WriteUsageForSubcommand writes the usage information for a specified
|
||||
@@ -63,12 +46,7 @@ func (p *Parser) WriteUsageForSubcommand(w io.Writer, subcommand ...string) erro
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.writeUsageForSubcommand(w, cmd)
|
||||
return nil
|
||||
}
|
||||
|
||||
// writeUsageForSubcommand writes usage information for the given subcommand
|
||||
func (p *Parser) writeUsageForSubcommand(w io.Writer, cmd *command) {
|
||||
var positionals, longOptions, shortOptions []*spec
|
||||
for _, spec := range cmd.specs {
|
||||
switch {
|
||||
@@ -85,18 +63,10 @@ func (p *Parser) writeUsageForSubcommand(w io.Writer, cmd *command) {
|
||||
fmt.Fprintln(w, p.version)
|
||||
}
|
||||
|
||||
// make a list of ancestor commands so that we print with full context
|
||||
var ancestors []string
|
||||
ancestor := cmd
|
||||
for ancestor != nil {
|
||||
ancestors = append(ancestors, ancestor.name)
|
||||
ancestor = ancestor.parent
|
||||
}
|
||||
|
||||
// print the beginning of the usage string
|
||||
fmt.Fprint(w, "Usage:")
|
||||
for i := len(ancestors) - 1; i >= 0; i-- {
|
||||
fmt.Fprint(w, " "+ancestors[i])
|
||||
fmt.Fprintf(w, "Usage: %s", p.cmd.name)
|
||||
for _, s := range subcommand {
|
||||
fmt.Fprint(w, " "+s)
|
||||
}
|
||||
|
||||
// write the option component of the usage message
|
||||
@@ -157,47 +127,66 @@ func (p *Parser) writeUsageForSubcommand(w io.Writer, cmd *command) {
|
||||
}
|
||||
|
||||
fmt.Fprint(w, "\n")
|
||||
return nil
|
||||
}
|
||||
|
||||
func printTwoCols(w io.Writer, left, help string, defaultVal string, envVal string) {
|
||||
lhs := " " + left
|
||||
// print prints a line like this:
|
||||
//
|
||||
// --option FOO A description of the option [default: 123]
|
||||
//
|
||||
// If the text on the left is longer than a certain threshold, the description is moved to the next line:
|
||||
//
|
||||
// --verylongoptionoption VERY_LONG_VARIABLE
|
||||
// A description of the option [default: 123]
|
||||
//
|
||||
// If multiple "extras" are provided then they are put inside a single set of square brackets:
|
||||
//
|
||||
// --option FOO A description of the option [default: 123, env: FOO]
|
||||
func print(w io.Writer, item, description string, bracketed ...string) {
|
||||
lhs := " " + item
|
||||
fmt.Fprint(w, lhs)
|
||||
if help != "" {
|
||||
if description != "" {
|
||||
if len(lhs)+2 < colWidth {
|
||||
fmt.Fprint(w, strings.Repeat(" ", colWidth-len(lhs)))
|
||||
} else {
|
||||
fmt.Fprint(w, "\n"+strings.Repeat(" ", colWidth))
|
||||
}
|
||||
fmt.Fprint(w, help)
|
||||
fmt.Fprint(w, description)
|
||||
}
|
||||
|
||||
bracketsContent := []string{}
|
||||
|
||||
if defaultVal != "" {
|
||||
bracketsContent = append(bracketsContent,
|
||||
fmt.Sprintf("default: %s", defaultVal),
|
||||
)
|
||||
var brack string
|
||||
for _, s := range bracketed {
|
||||
if s != "" {
|
||||
if brack != "" {
|
||||
brack += ", "
|
||||
}
|
||||
brack += s
|
||||
}
|
||||
}
|
||||
|
||||
if envVal != "" {
|
||||
bracketsContent = append(bracketsContent,
|
||||
fmt.Sprintf("env: %s", envVal),
|
||||
)
|
||||
}
|
||||
|
||||
if len(bracketsContent) > 0 {
|
||||
fmt.Fprintf(w, " [%s]", strings.Join(bracketsContent, ", "))
|
||||
if brack != "" {
|
||||
fmt.Fprintf(w, " [%s]", brack)
|
||||
}
|
||||
fmt.Fprint(w, "\n")
|
||||
}
|
||||
|
||||
func withDefault(s string) string {
|
||||
if s == "" {
|
||||
return ""
|
||||
}
|
||||
return "default: " + s
|
||||
}
|
||||
|
||||
func withEnv(env string) string {
|
||||
if env == "" {
|
||||
return ""
|
||||
}
|
||||
return "env: " + env
|
||||
}
|
||||
|
||||
// WriteHelp writes the usage string followed by the full help string for each option
|
||||
func (p *Parser) WriteHelp(w io.Writer) {
|
||||
cmd := p.cmd
|
||||
if p.lastCmd != nil {
|
||||
cmd = p.lastCmd
|
||||
}
|
||||
p.writeHelpForSubcommand(w, cmd)
|
||||
p.WriteHelpForSubcommand(w, p.subcommand...)
|
||||
}
|
||||
|
||||
// WriteHelpForSubcommand writes the usage string followed by the full help
|
||||
@@ -210,13 +199,9 @@ func (p *Parser) WriteHelpForSubcommand(w io.Writer, subcommand ...string) error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.writeHelpForSubcommand(w, cmd)
|
||||
return nil
|
||||
}
|
||||
|
||||
// writeHelp writes the usage string for the given subcommand
|
||||
func (p *Parser) writeHelpForSubcommand(w io.Writer, cmd *command) {
|
||||
var positionals, longOptions, shortOptions []*spec
|
||||
var positionals, longOptions, shortOptions, envOnlyOptions []*spec
|
||||
var hasVersionOption bool
|
||||
for _, spec := range cmd.specs {
|
||||
switch {
|
||||
case spec.positional:
|
||||
@@ -225,19 +210,21 @@ func (p *Parser) writeHelpForSubcommand(w io.Writer, cmd *command) {
|
||||
longOptions = append(longOptions, spec)
|
||||
case spec.short != "":
|
||||
shortOptions = append(shortOptions, spec)
|
||||
case spec.short == "" && spec.long == "":
|
||||
envOnlyOptions = append(envOnlyOptions, spec)
|
||||
}
|
||||
}
|
||||
|
||||
if p.description != "" {
|
||||
fmt.Fprintln(w, p.description)
|
||||
}
|
||||
p.writeUsageForSubcommand(w, cmd)
|
||||
p.WriteUsageForSubcommand(w, subcommand...)
|
||||
|
||||
// write the list of positionals
|
||||
if len(positionals) > 0 {
|
||||
fmt.Fprint(w, "\nPositional arguments:\n")
|
||||
for _, spec := range positionals {
|
||||
printTwoCols(w, spec.placeholder, spec.help, "", "")
|
||||
print(w, spec.placeholder, spec.help)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,6 +236,9 @@ func (p *Parser) writeHelpForSubcommand(w io.Writer, cmd *command) {
|
||||
}
|
||||
for _, spec := range longOptions {
|
||||
p.printOption(w, spec)
|
||||
if spec.long == "version" {
|
||||
hasVersionOption = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,6 +255,9 @@ func (p *Parser) writeHelpForSubcommand(w io.Writer, cmd *command) {
|
||||
fmt.Fprint(w, "\nGlobal options:\n")
|
||||
for _, spec := range globals {
|
||||
p.printOption(w, spec)
|
||||
if spec.long == "version" {
|
||||
hasVersionOption = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +268,7 @@ func (p *Parser) writeHelpForSubcommand(w io.Writer, cmd *command) {
|
||||
short: "h",
|
||||
help: "display this help and exit",
|
||||
})
|
||||
if p.version != "" {
|
||||
if !hasVersionOption && p.version != "" {
|
||||
p.printOption(w, &spec{
|
||||
cardinality: zero,
|
||||
long: "version",
|
||||
@@ -283,13 +276,27 @@ func (p *Parser) writeHelpForSubcommand(w io.Writer, cmd *command) {
|
||||
})
|
||||
}
|
||||
|
||||
// write the list of environment only variables
|
||||
if len(envOnlyOptions) > 0 {
|
||||
fmt.Fprint(w, "\nEnvironment variables:\n")
|
||||
for _, spec := range envOnlyOptions {
|
||||
p.printEnvOnlyVar(w, spec)
|
||||
}
|
||||
}
|
||||
|
||||
// write the list of subcommands
|
||||
if len(cmd.subcommands) > 0 {
|
||||
fmt.Fprint(w, "\nCommands:\n")
|
||||
for _, subcmd := range cmd.subcommands {
|
||||
printTwoCols(w, subcmd.name, subcmd.help, "", "")
|
||||
names := append([]string{subcmd.name}, subcmd.aliases...)
|
||||
print(w, strings.Join(names, ", "), subcmd.help)
|
||||
}
|
||||
}
|
||||
|
||||
if p.epilogue != "" {
|
||||
fmt.Fprintln(w, "\n"+p.epilogue)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Parser) printOption(w io.Writer, spec *spec) {
|
||||
@@ -301,34 +308,30 @@ func (p *Parser) printOption(w io.Writer, spec *spec) {
|
||||
ways = append(ways, synopsis(spec, "-"+spec.short))
|
||||
}
|
||||
if len(ways) > 0 {
|
||||
printTwoCols(w, strings.Join(ways, ", "), spec.help, spec.defaultVal, spec.env)
|
||||
print(w, strings.Join(ways, ", "), spec.help, withDefault(spec.defaultString), withEnv(spec.env))
|
||||
}
|
||||
}
|
||||
|
||||
// lookupCommand finds a subcommand based on a sequence of subcommand names. The
|
||||
// first string should be a top-level subcommand, the next should be a child
|
||||
// subcommand of that subcommand, and so on. If no strings are given then the
|
||||
// root command is returned. If no such subcommand exists then an error is
|
||||
// returned.
|
||||
func (p *Parser) lookupCommand(path ...string) (*command, error) {
|
||||
cmd := p.cmd
|
||||
for _, name := range path {
|
||||
var found *command
|
||||
for _, child := range cmd.subcommands {
|
||||
if child.name == name {
|
||||
found = child
|
||||
}
|
||||
}
|
||||
if found == nil {
|
||||
return nil, fmt.Errorf("%q is not a subcommand of %s", name, cmd.name)
|
||||
}
|
||||
cmd = found
|
||||
func (p *Parser) printEnvOnlyVar(w io.Writer, spec *spec) {
|
||||
ways := make([]string, 0, 2)
|
||||
if spec.required {
|
||||
ways = append(ways, "Required.")
|
||||
} else {
|
||||
ways = append(ways, "Optional.")
|
||||
}
|
||||
return cmd, nil
|
||||
|
||||
if spec.help != "" {
|
||||
ways = append(ways, spec.help)
|
||||
}
|
||||
|
||||
print(w, spec.env, strings.Join(ways, " "), withDefault(spec.defaultString))
|
||||
}
|
||||
|
||||
func synopsis(spec *spec, form string) string {
|
||||
if spec.cardinality == zero {
|
||||
// if the user omits the placeholder tag then we pick one automatically,
|
||||
// but if the user explicitly specifies an empty placeholder then we
|
||||
// leave out the placeholder in the help message
|
||||
if spec.cardinality == zero || spec.placeholder == "" {
|
||||
return form
|
||||
}
|
||||
return form + " " + spec.placeholder
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
.DS_Store
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
language: go
|
||||
|
||||
before_install:
|
||||
- sudo apt-get install libv4l-dev
|
||||
|
||||
go:
|
||||
- tip
|
||||
- 1.9
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) <2015> <Oleksandr Senkovych>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
# go-webcam
|
||||
|
||||
[](https://travis-ci.org/blackjack/webcam) [](https://godoc.org/github.com/blackjack/webcam)
|
||||
|
||||
This is a **go** library for working with webcams and other video capturing devices.
|
||||
It depends entirely on [V4L2](http://linuxtv.org/downloads/v4l-dvb-apis/) framework, thus will compile and work only on **Linux** machine.
|
||||
|
||||
## Installation
|
||||
|
||||
```console
|
||||
$ go get github.com/blackjack/webcam
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```go
|
||||
import "github.com/blackjack/webcam"
|
||||
// ...
|
||||
cam, err := webcam.Open("/dev/video0") // Open webcam
|
||||
if err != nil { panic(err.Error()) }
|
||||
defer cam.Close()
|
||||
// ...
|
||||
// Setup webcam image format and frame size here (see examples or documentation)
|
||||
// ...
|
||||
err = cam.StartStreaming()
|
||||
if err != nil { panic(err.Error()) }
|
||||
for {
|
||||
err = cam.WaitForFrame(timeout)
|
||||
|
||||
switch err.(type) {
|
||||
case nil:
|
||||
case *webcam.Timeout:
|
||||
fmt.Fprint(os.Stderr, err.Error())
|
||||
continue
|
||||
default:
|
||||
panic(err.Error())
|
||||
}
|
||||
|
||||
frame, err := cam.ReadFrame()
|
||||
if len(frame) != 0 {
|
||||
// Process frame
|
||||
} else if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
```
|
||||
For more detailed example see [examples folder](https://github.com/blackjack/webcam/tree/master/examples)
|
||||
The number of frame buffers used may be set as:
|
||||
```go
|
||||
// If already streaming, stop streaming.
|
||||
if streaming_on {
|
||||
cam.StopStreaming()
|
||||
}
|
||||
err = cam.SetBufferCount(64)
|
||||
```
|
||||
|
||||
## Roadmap
|
||||
|
||||
The library is still under development so API changes can happen. Currently library supports streaming
|
||||
using only MMAP method, which should be sufficient for most of devices available on the market.
|
||||
Other streaming methods can be added in future (please create issue if you need this).
|
||||
|
||||
Also currently image format is defined by 4-byte code received from V4L2, which is good in terms of
|
||||
compatibility with different versions of Linux kernel, but not very handy if you want to do some image manipulations.
|
||||
Plans are to aligh V4L2 image format codes with [Image](https://golang.org/pkg/image/) package from Go library.
|
||||
|
||||
## License
|
||||
|
||||
See LICENSE file
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
package webcam
|
||||
|
||||
// Timeout error
|
||||
type Timeout struct{}
|
||||
|
||||
func (e *Timeout) Error() string {
|
||||
return "Timeout occured"
|
||||
}
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
package webcam
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Represents image format code used by V4L2 subsystem.
|
||||
// Number of formats can be different in various
|
||||
// Linux kernel versions
|
||||
// See /usr/include/linux/videodev2.h for full list
|
||||
// of supported image formats
|
||||
type PixelFormat uint32
|
||||
|
||||
// Struct that describes frame size supported by a webcam
|
||||
// For fixed sizes min and max values will be the same and
|
||||
// step value will be equal to '0'
|
||||
type FrameSize struct {
|
||||
MinWidth uint32
|
||||
MaxWidth uint32
|
||||
StepWidth uint32
|
||||
|
||||
MinHeight uint32
|
||||
MaxHeight uint32
|
||||
StepHeight uint32
|
||||
}
|
||||
|
||||
// FrameRate represents all possible framerates supported by a webcam
|
||||
// for a given pixel format and frame size. For discrete returns min
|
||||
// and max values will be the same and step value will be equal to '0'
|
||||
// Stepwise returns are represented as a range of values with a step.
|
||||
type FrameRate struct {
|
||||
MinNumerator uint32
|
||||
MaxNumerator uint32
|
||||
StepNumerator uint32
|
||||
|
||||
MinDenominator uint32
|
||||
MaxDenominator uint32
|
||||
StepDenominator uint32
|
||||
}
|
||||
|
||||
// Return string representation of FrameRate struct. e.g.1/30 for
|
||||
// discrete framerates and [1-2;1]/[10-60;1] for stepwise framerates.
|
||||
func (f FrameRate) String() string {
|
||||
if f.StepNumerator == 0 && f.StepDenominator == 0 {
|
||||
return fmt.Sprintf("%d/%d", f.MinNumerator, f.MinDenominator)
|
||||
} else {
|
||||
return fmt.Sprintf("[%d-%d;%d]/[%d-%d;%d]", f.MinNumerator, f.MaxNumerator, f.StepNumerator, f.MinDenominator, f.MaxDenominator, f.StepDenominator)
|
||||
}
|
||||
}
|
||||
|
||||
// Returns string representation of frame size, e.g.
|
||||
// 1280x720 for fixed-size frames and
|
||||
// [320-640;160]x[240-480;160] for stepwise-sized frames
|
||||
func (s FrameSize) GetString() string {
|
||||
if s.StepWidth == 0 && s.StepHeight == 0 {
|
||||
return fmt.Sprintf("%dx%d", s.MaxWidth, s.MaxHeight)
|
||||
} else {
|
||||
return fmt.Sprintf("[%d-%d;%d]x[%d-%d;%d]", s.MinWidth, s.MaxWidth, s.StepWidth, s.MinHeight, s.MaxHeight, s.StepHeight)
|
||||
}
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
Copyright (c) 2012 Mark Wolfe
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
|
||||
is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
package ioctl
|
||||
|
||||
import "golang.org/x/sys/unix"
|
||||
|
||||
const (
|
||||
typeBits = 8
|
||||
numberBits = 8
|
||||
sizeBits = 14
|
||||
directionBits = 2
|
||||
|
||||
typeMask = (1 << typeBits) - 1
|
||||
numberMask = (1 << numberBits) - 1
|
||||
sizeMask = (1 << sizeBits) - 1
|
||||
directionMask = (1 << directionBits) - 1
|
||||
|
||||
directionNone = 0
|
||||
directionWrite = 1
|
||||
directionRead = 2
|
||||
|
||||
numberShift = 0
|
||||
typeShift = numberShift + numberBits
|
||||
sizeShift = typeShift + typeBits
|
||||
directionShift = sizeShift + sizeBits
|
||||
)
|
||||
|
||||
func ioc(dir, t, nr, size uintptr) uintptr {
|
||||
return (dir << directionShift) | (t << typeShift) | (nr << numberShift) | (size << sizeShift)
|
||||
}
|
||||
|
||||
// Io used for a simple ioctl that sends nothing but the type and number, and receives back nothing but an (integer) retval.
|
||||
func Io(t, nr uintptr) uintptr {
|
||||
return ioc(directionNone, t, nr, 0)
|
||||
}
|
||||
|
||||
// IoR used for an ioctl that reads data from the device driver. The driver will be allowed to return sizeof(data_type) bytes to the user.
|
||||
func IoR(t, nr, size uintptr) uintptr {
|
||||
return ioc(directionRead, t, nr, size)
|
||||
}
|
||||
|
||||
// IoW used for an ioctl that writes data to the device driver.
|
||||
func IoW(t, nr, size uintptr) uintptr {
|
||||
return ioc(directionWrite, t, nr, size)
|
||||
}
|
||||
|
||||
// IoRW a combination of IoR and IoW. That is, data is both written to the driver and then read back from the driver by the client.
|
||||
func IoRW(t, nr, size uintptr) uintptr {
|
||||
return ioc(directionRead|directionWrite, t, nr, size)
|
||||
}
|
||||
|
||||
// Ioctl simplified ioct call
|
||||
func Ioctl(fd, op, arg uintptr) error {
|
||||
_, _, ep := unix.Syscall(unix.SYS_IOCTL, fd, op, arg)
|
||||
if ep != 0 {
|
||||
return ep
|
||||
}
|
||||
return nil
|
||||
}
|
||||
-676
@@ -1,676 +0,0 @@
|
||||
package webcam
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"unsafe"
|
||||
|
||||
"github.com/blackjack/webcam/ioctl"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
/*
|
||||
V4L2 constants, enums, and structs are derived from the header file
|
||||
'videodev2.h'. See the following reference for more information:
|
||||
https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/videodev.html#videodev2-h
|
||||
*/
|
||||
|
||||
type controlType int
|
||||
|
||||
const (
|
||||
c_int controlType = iota
|
||||
c_bool
|
||||
c_menu
|
||||
)
|
||||
|
||||
type control struct {
|
||||
id uint32
|
||||
name string
|
||||
c_type controlType
|
||||
step int32
|
||||
min int32
|
||||
max int32
|
||||
}
|
||||
|
||||
const (
|
||||
V4L2_CAP_VIDEO_CAPTURE uint32 = 0x00000001
|
||||
V4L2_CAP_STREAMING uint32 = 0x04000000
|
||||
V4L2_BUF_TYPE_VIDEO_CAPTURE uint32 = 1
|
||||
V4L2_MEMORY_MMAP uint32 = 1
|
||||
V4L2_FIELD_ANY uint32 = 0
|
||||
)
|
||||
|
||||
const (
|
||||
V4L2_FRMSIZE_TYPE_DISCRETE uint32 = 1
|
||||
V4L2_FRMSIZE_TYPE_CONTINUOUS uint32 = 2
|
||||
V4L2_FRMSIZE_TYPE_STEPWISE uint32 = 3
|
||||
)
|
||||
|
||||
const (
|
||||
V4L2_FRMIVAL_TYPE_DISCRETE uint32 = 1
|
||||
V4L2_FRMIVAL_TYPE_CONTINUOUS uint32 = 2
|
||||
V4L2_FRMIVAL_TYPE_STEPWISE uint32 = 3
|
||||
)
|
||||
|
||||
const (
|
||||
V4L2_CID_BASE uint32 = 0x00980900
|
||||
V4L2_CID_AUTO_WHITE_BALANCE uint32 = V4L2_CID_BASE + 12
|
||||
V4L2_CID_PRIVATE_BASE uint32 = 0x08000000
|
||||
)
|
||||
|
||||
const (
|
||||
V4L2_CTRL_TYPE_INTEGER uint32 = 1
|
||||
V4L2_CTRL_TYPE_BOOLEAN uint32 = 2
|
||||
V4L2_CTRL_TYPE_MENU uint32 = 3
|
||||
V4L2_CTRL_TYPE_BUTTON uint32 = 4
|
||||
V4L2_CTRL_TYPE_INTEGER64 uint32 = 5
|
||||
V4L2_CTRL_TYPE_CTRL_CLASS uint32 = 6
|
||||
V4L2_CTRL_TYPE_STRING uint32 = 7
|
||||
V4L2_CTRL_TYPE_BITMASK uint32 = 8
|
||||
V4L2_CTRL_TYPE_INTEGER_MENU uint32 = 9
|
||||
|
||||
V4L2_CTRL_COMPOUND_TYPES uint32 = 0x0100
|
||||
V4L2_CTRL_TYPE_U8 uint32 = 0x0100
|
||||
V4L2_CTRL_TYPE_U16 uint32 = 0x0101
|
||||
V4L2_CTRL_TYPE_U32 uint32 = 0x0102
|
||||
)
|
||||
|
||||
const (
|
||||
V4L2_CTRL_FLAG_DISABLED uint32 = 0x00000001
|
||||
V4L2_CTRL_FLAG_NEXT_CTRL uint32 = 0x80000000
|
||||
)
|
||||
|
||||
var (
|
||||
VIDIOC_QUERYCAP = ioctl.IoR(uintptr('V'), 0, unsafe.Sizeof(v4l2_capability{}))
|
||||
VIDIOC_ENUM_FMT = ioctl.IoRW(uintptr('V'), 2, unsafe.Sizeof(v4l2_fmtdesc{}))
|
||||
VIDIOC_S_FMT = ioctl.IoRW(uintptr('V'), 5, unsafe.Sizeof(v4l2_format{}))
|
||||
VIDIOC_REQBUFS = ioctl.IoRW(uintptr('V'), 8, unsafe.Sizeof(v4l2_requestbuffers{}))
|
||||
VIDIOC_QUERYBUF = ioctl.IoRW(uintptr('V'), 9, unsafe.Sizeof(v4l2_buffer{}))
|
||||
VIDIOC_QBUF = ioctl.IoRW(uintptr('V'), 15, unsafe.Sizeof(v4l2_buffer{}))
|
||||
VIDIOC_DQBUF = ioctl.IoRW(uintptr('V'), 17, unsafe.Sizeof(v4l2_buffer{}))
|
||||
VIDIOC_G_PARM = ioctl.IoRW(uintptr('V'), 21, unsafe.Sizeof(v4l2_streamparm{}))
|
||||
VIDIOC_S_PARM = ioctl.IoRW(uintptr('V'), 22, unsafe.Sizeof(v4l2_streamparm{}))
|
||||
VIDIOC_G_CTRL = ioctl.IoRW(uintptr('V'), 27, unsafe.Sizeof(v4l2_control{}))
|
||||
VIDIOC_S_CTRL = ioctl.IoRW(uintptr('V'), 28, unsafe.Sizeof(v4l2_control{}))
|
||||
VIDIOC_QUERYCTRL = ioctl.IoRW(uintptr('V'), 36, unsafe.Sizeof(v4l2_queryctrl{}))
|
||||
//sizeof int32
|
||||
VIDIOC_STREAMON = ioctl.IoW(uintptr('V'), 18, 4)
|
||||
VIDIOC_STREAMOFF = ioctl.IoW(uintptr('V'), 19, 4)
|
||||
VIDIOC_G_INPUT = ioctl.IoR(uintptr('V'), 38, 4)
|
||||
VIDIOC_S_INPUT = ioctl.IoRW(uintptr('V'), 39, 4)
|
||||
VIDIOC_ENUM_FRAMESIZES = ioctl.IoRW(uintptr('V'), 74, unsafe.Sizeof(v4l2_frmsizeenum{}))
|
||||
VIDIOC_ENUM_FRAMEINTERVALS = ioctl.IoRW(uintptr('V'), 75, unsafe.Sizeof(v4l2_frmivalenum{}))
|
||||
__p = unsafe.Pointer(uintptr(0))
|
||||
NativeByteOrder = getNativeByteOrder()
|
||||
)
|
||||
|
||||
type v4l2_capability struct {
|
||||
driver [16]uint8
|
||||
card [32]uint8
|
||||
bus_info [32]uint8
|
||||
version uint32
|
||||
capabilities uint32
|
||||
device_caps uint32
|
||||
reserved [3]uint32
|
||||
}
|
||||
|
||||
type v4l2_fmtdesc struct {
|
||||
index uint32
|
||||
_type uint32
|
||||
flags uint32
|
||||
description [32]uint8
|
||||
pixelformat uint32
|
||||
reserved [4]uint32
|
||||
}
|
||||
|
||||
type v4l2_frmsizeenum struct {
|
||||
index uint32
|
||||
pixel_format uint32
|
||||
_type uint32
|
||||
union [24]uint8
|
||||
reserved [2]uint32
|
||||
}
|
||||
|
||||
type v4l2_frmsize_discrete struct {
|
||||
Width uint32
|
||||
Height uint32
|
||||
}
|
||||
|
||||
type v4l2_frmsize_stepwise struct {
|
||||
Min_width uint32
|
||||
Max_width uint32
|
||||
Step_width uint32
|
||||
Min_height uint32
|
||||
Max_height uint32
|
||||
Step_height uint32
|
||||
}
|
||||
|
||||
// v4l2_frmivalenum that contains a pixel format and size and receives a
|
||||
// frame interval (time duration between frames of a video stream).
|
||||
type v4l2_frmivalenum struct {
|
||||
index uint32
|
||||
pixel_format uint32
|
||||
width uint32
|
||||
height uint32
|
||||
_type uint32
|
||||
union [24]uint8
|
||||
reserved [2]uint32
|
||||
}
|
||||
|
||||
// v4l2_frmival_stepwise represents the frame interval range
|
||||
// as minimum, maximum, and step size intervals.
|
||||
type v4l2_frmival_stepwise struct {
|
||||
min v4l2_fract // minimum frame interval [s]
|
||||
max v4l2_fract // maximum frame interval [s]
|
||||
step v4l2_fract // frame interval step size [s]
|
||||
}
|
||||
|
||||
// Hack to make go compiler properly align union
|
||||
type v4l2_format_aligned_union struct {
|
||||
data [200 - unsafe.Sizeof(__p)]byte
|
||||
_ unsafe.Pointer
|
||||
}
|
||||
|
||||
type v4l2_format struct {
|
||||
_type uint32
|
||||
union v4l2_format_aligned_union
|
||||
}
|
||||
|
||||
type v4l2_pix_format struct {
|
||||
Width uint32
|
||||
Height uint32
|
||||
Pixelformat uint32
|
||||
Field uint32
|
||||
Bytesperline uint32
|
||||
Sizeimage uint32
|
||||
Colorspace uint32
|
||||
Priv uint32
|
||||
Flags uint32
|
||||
Ycbcr_enc uint32
|
||||
Quantization uint32
|
||||
Xfer_func uint32
|
||||
}
|
||||
|
||||
type v4l2_requestbuffers struct {
|
||||
count uint32
|
||||
_type uint32
|
||||
memory uint32
|
||||
reserved [2]uint32
|
||||
}
|
||||
|
||||
type v4l2_buffer struct {
|
||||
index uint32
|
||||
_type uint32
|
||||
bytesused uint32
|
||||
flags uint32
|
||||
field uint32
|
||||
timestamp unix.Timeval
|
||||
timecode v4l2_timecode
|
||||
sequence uint32
|
||||
memory uint32
|
||||
union [unsafe.Sizeof(__p)]uint8
|
||||
length uint32
|
||||
reserved2 uint32
|
||||
reserved uint32
|
||||
}
|
||||
|
||||
type v4l2_timecode struct {
|
||||
_type uint32
|
||||
flags uint32
|
||||
frames uint8
|
||||
seconds uint8
|
||||
minutes uint8
|
||||
hours uint8
|
||||
userbits [4]uint8
|
||||
}
|
||||
|
||||
type v4l2_queryctrl struct {
|
||||
id uint32
|
||||
_type uint32
|
||||
name [32]uint8
|
||||
minimum int32
|
||||
maximum int32
|
||||
step int32
|
||||
default_value int32
|
||||
flags uint32
|
||||
reserved [2]uint32
|
||||
}
|
||||
|
||||
type v4l2_control struct {
|
||||
id uint32
|
||||
value int32
|
||||
}
|
||||
|
||||
type v4l2_fract struct {
|
||||
Numerator uint32
|
||||
Denominator uint32
|
||||
}
|
||||
|
||||
type v4l2_streamparm_union struct {
|
||||
capability uint32
|
||||
output_mode uint32
|
||||
time_per_frame v4l2_fract
|
||||
extended_mode uint32
|
||||
buffers uint32
|
||||
reserved [4]uint32
|
||||
data [200 - (10 * unsafe.Sizeof(uint32(0)))]byte
|
||||
}
|
||||
|
||||
type v4l2_streamparm struct {
|
||||
_type uint32
|
||||
union v4l2_streamparm_union
|
||||
}
|
||||
|
||||
func checkCapabilities(fd uintptr) (supportsVideoCapture bool, supportsVideoStreaming bool, err error) {
|
||||
|
||||
caps := &v4l2_capability{}
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_QUERYCAP, uintptr(unsafe.Pointer(caps)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
supportsVideoCapture = (caps.capabilities & V4L2_CAP_VIDEO_CAPTURE) != 0
|
||||
supportsVideoStreaming = (caps.capabilities & V4L2_CAP_STREAMING) != 0
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func getPixelFormat(fd uintptr, index uint32) (code uint32, description string, err error) {
|
||||
|
||||
fmtdesc := &v4l2_fmtdesc{}
|
||||
|
||||
fmtdesc.index = index
|
||||
fmtdesc._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_ENUM_FMT, uintptr(unsafe.Pointer(fmtdesc)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
code = fmtdesc.pixelformat
|
||||
description = CToGoString(fmtdesc.description[:])
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func getFrameSize(fd uintptr, index uint32, code uint32) (frameSize FrameSize, err error) {
|
||||
|
||||
frmsizeenum := &v4l2_frmsizeenum{}
|
||||
frmsizeenum.index = index
|
||||
frmsizeenum.pixel_format = code
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_ENUM_FRAMESIZES, uintptr(unsafe.Pointer(frmsizeenum)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
switch frmsizeenum._type {
|
||||
|
||||
case V4L2_FRMSIZE_TYPE_DISCRETE:
|
||||
discrete := &v4l2_frmsize_discrete{}
|
||||
err = binary.Read(bytes.NewBuffer(frmsizeenum.union[:]), NativeByteOrder, discrete)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
frameSize.MinWidth = discrete.Width
|
||||
frameSize.MaxWidth = discrete.Width
|
||||
frameSize.StepWidth = 0
|
||||
frameSize.MinHeight = discrete.Height
|
||||
frameSize.MaxHeight = discrete.Height
|
||||
frameSize.StepHeight = 0
|
||||
|
||||
case V4L2_FRMSIZE_TYPE_CONTINUOUS:
|
||||
|
||||
case V4L2_FRMSIZE_TYPE_STEPWISE:
|
||||
stepwise := &v4l2_frmsize_stepwise{}
|
||||
err = binary.Read(bytes.NewBuffer(frmsizeenum.union[:]), NativeByteOrder, stepwise)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
frameSize.MinWidth = stepwise.Min_width
|
||||
frameSize.MaxWidth = stepwise.Max_width
|
||||
frameSize.StepWidth = stepwise.Step_width
|
||||
frameSize.MinHeight = stepwise.Min_height
|
||||
frameSize.MaxHeight = stepwise.Max_height
|
||||
frameSize.StepHeight = stepwise.Step_height
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func getName(fd uintptr) (string, error) {
|
||||
var caps v4l2_capability
|
||||
if err := ioctl.Ioctl(fd, VIDIOC_QUERYCAP, uintptr(unsafe.Pointer(&caps))); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return CToGoString(caps.card[:]), nil
|
||||
}
|
||||
|
||||
func getFrameInterval(fd uintptr, index uint32, code uint32, width uint32, height uint32) (FrameRate, error) {
|
||||
frmivalEnum := &v4l2_frmivalenum{
|
||||
index: index,
|
||||
pixel_format: code,
|
||||
width: width,
|
||||
height: height,
|
||||
}
|
||||
|
||||
if err := ioctl.Ioctl(fd, VIDIOC_ENUM_FRAMEINTERVALS, uintptr(unsafe.Pointer(frmivalEnum))); err != nil {
|
||||
return FrameRate{}, err
|
||||
}
|
||||
|
||||
switch frmivalEnum._type {
|
||||
|
||||
case V4L2_FRMIVAL_TYPE_DISCRETE:
|
||||
discrete := &v4l2_fract{}
|
||||
if err := binary.Read(bytes.NewBuffer(frmivalEnum.union[:]), NativeByteOrder, discrete); err != nil {
|
||||
return FrameRate{}, err
|
||||
}
|
||||
return FrameRate{
|
||||
MinDenominator: discrete.Denominator,
|
||||
MaxDenominator: discrete.Denominator,
|
||||
StepDenominator: 0,
|
||||
MinNumerator: discrete.Numerator,
|
||||
MaxNumerator: discrete.Numerator,
|
||||
StepNumerator: 0,
|
||||
}, nil
|
||||
|
||||
case V4L2_FRMIVAL_TYPE_CONTINUOUS:
|
||||
return FrameRate{}, fmt.Errorf("V4L2_FRMIVAL_TYPE_CONTINUOUS not implemented")
|
||||
|
||||
case V4L2_FRMIVAL_TYPE_STEPWISE:
|
||||
stepwise := &v4l2_frmival_stepwise{}
|
||||
if err := binary.Read(bytes.NewBuffer(frmivalEnum.union[:]), NativeByteOrder, stepwise); err != nil {
|
||||
return FrameRate{}, err
|
||||
}
|
||||
return FrameRate{
|
||||
MinDenominator: stepwise.min.Denominator,
|
||||
MaxDenominator: stepwise.max.Denominator,
|
||||
StepDenominator: stepwise.step.Denominator,
|
||||
MinNumerator: stepwise.min.Numerator,
|
||||
MaxNumerator: stepwise.max.Numerator,
|
||||
StepNumerator: stepwise.step.Numerator,
|
||||
}, nil
|
||||
}
|
||||
|
||||
return FrameRate{}, fmt.Errorf("unknown frame interval type")
|
||||
}
|
||||
|
||||
func getBusInfo(fd uintptr) (string, error) {
|
||||
var caps v4l2_capability
|
||||
if err := ioctl.Ioctl(fd, VIDIOC_QUERYCAP, uintptr(unsafe.Pointer(&caps))); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return CToGoString(caps.bus_info[:]), nil
|
||||
}
|
||||
|
||||
func setImageFormat(fd uintptr, formatcode *uint32, width *uint32, height *uint32) (err error) {
|
||||
|
||||
format := &v4l2_format{
|
||||
_type: V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||
}
|
||||
|
||||
pix := v4l2_pix_format{
|
||||
Width: *width,
|
||||
Height: *height,
|
||||
Pixelformat: *formatcode,
|
||||
Field: V4L2_FIELD_ANY,
|
||||
}
|
||||
|
||||
pixbytes := &bytes.Buffer{}
|
||||
err = binary.Write(pixbytes, NativeByteOrder, pix)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
copy(format.union.data[:], pixbytes.Bytes())
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_S_FMT, uintptr(unsafe.Pointer(format)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
pixReverse := &v4l2_pix_format{}
|
||||
err = binary.Read(bytes.NewBuffer(format.union.data[:]), NativeByteOrder, pixReverse)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
*width = pixReverse.Width
|
||||
*height = pixReverse.Height
|
||||
*formatcode = pixReverse.Pixelformat
|
||||
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func mmapRequestBuffers(fd uintptr, buf_count *uint32) (err error) {
|
||||
|
||||
req := &v4l2_requestbuffers{}
|
||||
req.count = *buf_count
|
||||
req._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
req.memory = V4L2_MEMORY_MMAP
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_REQBUFS, uintptr(unsafe.Pointer(req)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
*buf_count = req.count
|
||||
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func mmapQueryBuffer(fd uintptr, index uint32, length *uint32) (buffer []byte, err error) {
|
||||
|
||||
req := &v4l2_buffer{}
|
||||
|
||||
req._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
req.memory = V4L2_MEMORY_MMAP
|
||||
req.index = index
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_QUERYBUF, uintptr(unsafe.Pointer(req)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var offset uint32
|
||||
err = binary.Read(bytes.NewBuffer(req.union[:]), NativeByteOrder, &offset)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
*length = req.length
|
||||
|
||||
buffer, err = unix.Mmap(int(fd), int64(offset), int(req.length), unix.PROT_READ|unix.PROT_WRITE, unix.MAP_SHARED)
|
||||
return
|
||||
}
|
||||
|
||||
func mmapDequeueBuffer(fd uintptr, index *uint32, length *uint32) (err error) {
|
||||
|
||||
buffer := &v4l2_buffer{}
|
||||
|
||||
buffer._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
buffer.memory = V4L2_MEMORY_MMAP
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_DQBUF, uintptr(unsafe.Pointer(buffer)))
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
*index = buffer.index
|
||||
*length = buffer.bytesused
|
||||
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func mmapEnqueueBuffer(fd uintptr, index uint32) (err error) {
|
||||
|
||||
buffer := &v4l2_buffer{}
|
||||
|
||||
buffer._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
buffer.memory = V4L2_MEMORY_MMAP
|
||||
buffer.index = index
|
||||
|
||||
err = ioctl.Ioctl(fd, VIDIOC_QBUF, uintptr(unsafe.Pointer(buffer)))
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func mmapReleaseBuffer(buffer []byte) (err error) {
|
||||
err = unix.Munmap(buffer)
|
||||
return
|
||||
}
|
||||
|
||||
func startStreaming(fd uintptr) (err error) {
|
||||
|
||||
var uintPointer uint32 = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
err = ioctl.Ioctl(fd, VIDIOC_STREAMON, uintptr(unsafe.Pointer(&uintPointer)))
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func stopStreaming(fd uintptr) (err error) {
|
||||
|
||||
var uintPointer uint32 = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
err = ioctl.Ioctl(fd, VIDIOC_STREAMOFF, uintptr(unsafe.Pointer(&uintPointer)))
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func waitForFrame(pollFds []unix.PollFd, timeout uint32) (count int, err error) {
|
||||
for {
|
||||
count, err = unix.Poll(pollFds, int(timeout*1000))
|
||||
if count < 0 && err == unix.EINTR {
|
||||
continue
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func getControl(fd uintptr, id uint32) (int32, error) {
|
||||
ctrl := &v4l2_control{}
|
||||
ctrl.id = id
|
||||
err := ioctl.Ioctl(fd, VIDIOC_G_CTRL, uintptr(unsafe.Pointer(ctrl)))
|
||||
return ctrl.value, err
|
||||
}
|
||||
|
||||
func setControl(fd uintptr, id uint32, val int32) error {
|
||||
ctrl := &v4l2_control{}
|
||||
ctrl.id = id
|
||||
ctrl.value = val
|
||||
return ioctl.Ioctl(fd, VIDIOC_S_CTRL, uintptr(unsafe.Pointer(ctrl)))
|
||||
}
|
||||
|
||||
func getInput(fd uintptr) (index int32, err error) {
|
||||
err = ioctl.Ioctl(fd, VIDIOC_G_INPUT, uintptr(unsafe.Pointer(&index)))
|
||||
return
|
||||
}
|
||||
|
||||
func selectInput(fd uintptr, index uint32) (err error) {
|
||||
err = ioctl.Ioctl(fd, VIDIOC_S_INPUT, uintptr(unsafe.Pointer(&index)))
|
||||
return
|
||||
}
|
||||
|
||||
func getFramerate(fd uintptr) (float32, error) {
|
||||
param := &v4l2_streamparm{}
|
||||
param._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
|
||||
err := ioctl.Ioctl(fd, VIDIOC_G_PARM, uintptr(unsafe.Pointer(param)))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
tf := param.union.time_per_frame
|
||||
if tf.Denominator == 0 || tf.Numerator == 0 {
|
||||
return 0, fmt.Errorf("Invalid framerate (%d/%d)", tf.Denominator, tf.Numerator)
|
||||
}
|
||||
return float32(tf.Denominator) / float32(tf.Numerator), nil
|
||||
}
|
||||
|
||||
func setFramerate(fd uintptr, num, denom uint32) error {
|
||||
param := &v4l2_streamparm{}
|
||||
param._type = V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
param.union.time_per_frame.Numerator = num
|
||||
param.union.time_per_frame.Denominator = denom
|
||||
return ioctl.Ioctl(fd, VIDIOC_S_PARM, uintptr(unsafe.Pointer(param)))
|
||||
}
|
||||
|
||||
func queryControls(fd uintptr) []control {
|
||||
controls := []control{}
|
||||
var err error
|
||||
// Don't use V42L_CID_BASE since it is the same as brightness.
|
||||
var id uint32
|
||||
for err == nil {
|
||||
id |= V4L2_CTRL_FLAG_NEXT_CTRL
|
||||
query := &v4l2_queryctrl{}
|
||||
query.id = id
|
||||
err = ioctl.Ioctl(fd, VIDIOC_QUERYCTRL, uintptr(unsafe.Pointer(query)))
|
||||
id = query.id
|
||||
if err == nil {
|
||||
if (query.flags & V4L2_CTRL_FLAG_DISABLED) != 0 {
|
||||
continue
|
||||
}
|
||||
var c control
|
||||
switch query._type {
|
||||
default:
|
||||
continue
|
||||
case V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_INTEGER64:
|
||||
c.c_type = c_int
|
||||
case V4L2_CTRL_TYPE_BOOLEAN:
|
||||
c.c_type = c_bool
|
||||
case V4L2_CTRL_TYPE_MENU:
|
||||
c.c_type = c_menu
|
||||
}
|
||||
c.id = id
|
||||
c.name = CToGoString(query.name[:])
|
||||
c.min = query.minimum
|
||||
c.max = query.maximum
|
||||
c.step = query.step
|
||||
controls = append(controls, c)
|
||||
}
|
||||
}
|
||||
return controls
|
||||
}
|
||||
|
||||
func getNativeByteOrder() binary.ByteOrder {
|
||||
var i int32 = 0x01020304
|
||||
u := unsafe.Pointer(&i)
|
||||
pb := (*byte)(u)
|
||||
b := *pb
|
||||
if b == 0x04 {
|
||||
return binary.LittleEndian
|
||||
} else {
|
||||
return binary.BigEndian
|
||||
}
|
||||
}
|
||||
|
||||
func CToGoString(c []byte) string {
|
||||
n := -1
|
||||
for i, b := range c {
|
||||
if b == 0 {
|
||||
break
|
||||
}
|
||||
n = i
|
||||
}
|
||||
return string(c[:n+1])
|
||||
}
|
||||
-351
@@ -1,351 +0,0 @@
|
||||
// Library for working with webcams and other video capturing devices.
|
||||
// It depends entirely on v4l2 framework, thus will compile and work
|
||||
// only on Linux machine
|
||||
package webcam
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"reflect"
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
// Webcam object
|
||||
type Webcam struct {
|
||||
fd uintptr
|
||||
bufcount uint32
|
||||
buffers [][]byte
|
||||
streaming bool
|
||||
pollFds []unix.PollFd
|
||||
}
|
||||
|
||||
type ControlID uint32
|
||||
|
||||
type Control struct {
|
||||
Name string
|
||||
Min int32
|
||||
Max int32
|
||||
Type int32
|
||||
Step int32
|
||||
}
|
||||
|
||||
// Open a webcam with a given path
|
||||
// Checks if device is a v4l2 device and if it is
|
||||
// capable to stream video
|
||||
func Open(path string) (*Webcam, error) {
|
||||
|
||||
handle, err := unix.Open(path, unix.O_RDWR|unix.O_NONBLOCK, 0666)
|
||||
fd := uintptr(handle)
|
||||
|
||||
if fd < 0 || err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
supportsVideoCapture, supportsVideoStreaming, err := checkCapabilities(fd)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !supportsVideoCapture {
|
||||
return nil, errors.New("Not a video capture device")
|
||||
}
|
||||
|
||||
if !supportsVideoStreaming {
|
||||
return nil, errors.New("Device does not support the streaming I/O method")
|
||||
}
|
||||
|
||||
w := new(Webcam)
|
||||
w.fd = fd
|
||||
w.bufcount = 256
|
||||
w.pollFds = []unix.PollFd{{Fd: int32(fd), Events: unix.POLLIN}}
|
||||
return w, nil
|
||||
}
|
||||
|
||||
// Returns image formats supported by the device alongside with
|
||||
// their text description
|
||||
// Note that this function is somewhat experimental. Frames are not ordered in
|
||||
// any meaning, also duplicates can occur so it's up to developer to clean it up.
|
||||
// See http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-enum-framesizes.html
|
||||
// for more information
|
||||
func (w *Webcam) GetSupportedFormats() map[PixelFormat]string {
|
||||
|
||||
result := make(map[PixelFormat]string)
|
||||
var err error
|
||||
var code uint32
|
||||
var desc string
|
||||
var index uint32
|
||||
|
||||
for index = 0; err == nil; index++ {
|
||||
code, desc, err = getPixelFormat(w.fd, index)
|
||||
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
|
||||
result[PixelFormat(code)] = desc
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// GetName returns the human-readable name of the device
|
||||
func (w *Webcam) GetName() (string, error) {
|
||||
return getName(w.fd)
|
||||
}
|
||||
|
||||
// GetBusInfo returns the location of the device in the system
|
||||
func (w *Webcam) GetBusInfo() (string, error) {
|
||||
return getBusInfo(w.fd)
|
||||
}
|
||||
|
||||
// SelectInput selects the current video input.
|
||||
func (w *Webcam) SelectInput(index uint32) error {
|
||||
return selectInput(w.fd, index)
|
||||
}
|
||||
|
||||
// GetInput queries the current video input.
|
||||
func (w *Webcam) GetInput() (int32, error) {
|
||||
return getInput(w.fd)
|
||||
}
|
||||
|
||||
// Returns supported frame sizes for a given image format
|
||||
func (w *Webcam) GetSupportedFrameSizes(f PixelFormat) []FrameSize {
|
||||
result := make([]FrameSize, 0)
|
||||
|
||||
var index uint32
|
||||
var err error
|
||||
|
||||
for index = 0; err == nil; index++ {
|
||||
s, err := getFrameSize(w.fd, index, uint32(f))
|
||||
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
|
||||
result = append(result, s)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// GetSupportedFramerates returns supported frame rates for a given image format and frame size.
|
||||
func (w *Webcam) GetSupportedFramerates(fp PixelFormat, width uint32, height uint32) []FrameRate {
|
||||
var result []FrameRate
|
||||
var index uint32
|
||||
var err error
|
||||
|
||||
// keep incrementing the index value until we get an EINVAL error
|
||||
index = 0
|
||||
for err == nil {
|
||||
r, err := getFrameInterval(w.fd, index, uint32(fp), width, height)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
result = append(result, r)
|
||||
index++
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// Sets desired image format and frame size
|
||||
// Note, that device driver can change that values.
|
||||
// Resulting values are returned by a function
|
||||
// alongside with an error if any
|
||||
func (w *Webcam) SetImageFormat(f PixelFormat, width, height uint32) (PixelFormat, uint32, uint32, error) {
|
||||
|
||||
code := uint32(f)
|
||||
cw := width
|
||||
ch := height
|
||||
|
||||
err := setImageFormat(w.fd, &code, &width, &height)
|
||||
|
||||
if err != nil {
|
||||
return 0, 0, 0, err
|
||||
} else {
|
||||
return PixelFormat(code), cw, ch, nil
|
||||
}
|
||||
}
|
||||
|
||||
// Set the number of frames to be buffered.
|
||||
// Not allowed if streaming is already on.
|
||||
func (w *Webcam) SetBufferCount(count uint32) error {
|
||||
if w.streaming {
|
||||
return errors.New("Cannot set buffer count when streaming")
|
||||
}
|
||||
w.bufcount = count
|
||||
return nil
|
||||
}
|
||||
|
||||
// Get a map of available controls.
|
||||
func (w *Webcam) GetControls() map[ControlID]Control {
|
||||
cmap := make(map[ControlID]Control)
|
||||
for _, c := range queryControls(w.fd) {
|
||||
cmap[ControlID(c.id)] = Control{
|
||||
Name: c.name,
|
||||
Min: c.min,
|
||||
Max: c.max,
|
||||
Type: int32(c.c_type),
|
||||
Step: c.step,
|
||||
}
|
||||
}
|
||||
return cmap
|
||||
}
|
||||
|
||||
// Get the value of a control.
|
||||
func (w *Webcam) GetControl(id ControlID) (int32, error) {
|
||||
return getControl(w.fd, uint32(id))
|
||||
}
|
||||
|
||||
// Set a control.
|
||||
func (w *Webcam) SetControl(id ControlID, value int32) error {
|
||||
return setControl(w.fd, uint32(id), value)
|
||||
}
|
||||
|
||||
// Get the framerate.
|
||||
func (w *Webcam) GetFramerate() (float32, error) {
|
||||
return getFramerate(w.fd)
|
||||
}
|
||||
|
||||
// Set FPS
|
||||
func (w *Webcam) SetFramerate(fps float32) error {
|
||||
return setFramerate(w.fd, 1000, uint32(1000*(fps)))
|
||||
}
|
||||
|
||||
// Start streaming process
|
||||
func (w *Webcam) StartStreaming() error {
|
||||
if w.streaming {
|
||||
return errors.New("Already streaming")
|
||||
}
|
||||
|
||||
err := mmapRequestBuffers(w.fd, &w.bufcount)
|
||||
|
||||
if err != nil {
|
||||
return errors.New("Failed to map request buffers: " + string(err.Error()))
|
||||
}
|
||||
|
||||
w.buffers = make([][]byte, w.bufcount, w.bufcount)
|
||||
for index, _ := range w.buffers {
|
||||
var length uint32
|
||||
|
||||
buffer, err := mmapQueryBuffer(w.fd, uint32(index), &length)
|
||||
|
||||
if err != nil {
|
||||
return errors.New("Failed to map memory: " + string(err.Error()))
|
||||
}
|
||||
|
||||
w.buffers[index] = buffer
|
||||
}
|
||||
|
||||
for index, _ := range w.buffers {
|
||||
|
||||
err := mmapEnqueueBuffer(w.fd, uint32(index))
|
||||
|
||||
if err != nil {
|
||||
return errors.New("Failed to enqueue buffer: " + string(err.Error()))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
err = startStreaming(w.fd)
|
||||
|
||||
if err != nil {
|
||||
return errors.New("Failed to start streaming: " + string(err.Error()))
|
||||
}
|
||||
w.streaming = true
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Read a single frame from the webcam
|
||||
// If frame cannot be read at the moment
|
||||
// function will return empty slice
|
||||
func (w *Webcam) ReadFrame() ([]byte, error) {
|
||||
result, index, err := w.GetFrame()
|
||||
if err == nil {
|
||||
w.ReleaseFrame(index)
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
|
||||
// Get a single frame from the webcam and return the frame and
|
||||
// the buffer index. To return the buffer, ReleaseFrame must be called.
|
||||
// If frame cannot be read at the moment
|
||||
// function will return empty slice
|
||||
func (w *Webcam) GetFrame() ([]byte, uint32, error) {
|
||||
var index uint32
|
||||
var length uint32
|
||||
|
||||
err := mmapDequeueBuffer(w.fd, &index, &length)
|
||||
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return w.buffers[int(index)][:length], index, nil
|
||||
|
||||
}
|
||||
|
||||
// Release the frame buffer that was obtained via GetFrame
|
||||
func (w *Webcam) ReleaseFrame(index uint32) error {
|
||||
return mmapEnqueueBuffer(w.fd, index)
|
||||
}
|
||||
|
||||
// Wait until frame could be read
|
||||
func (w *Webcam) WaitForFrame(timeout uint32) error {
|
||||
|
||||
count, err := waitForFrame(w.pollFds, timeout)
|
||||
|
||||
if count < 0 || err != nil {
|
||||
return err
|
||||
} else if count == 0 {
|
||||
return new(Timeout)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (w *Webcam) StopStreaming() error {
|
||||
if !w.streaming {
|
||||
return errors.New("Request to stop streaming when not streaming")
|
||||
}
|
||||
w.streaming = false
|
||||
for _, buffer := range w.buffers {
|
||||
err := mmapReleaseBuffer(buffer)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return stopStreaming(w.fd)
|
||||
}
|
||||
|
||||
// Close the device
|
||||
func (w *Webcam) Close() error {
|
||||
if w.streaming {
|
||||
w.StopStreaming()
|
||||
}
|
||||
|
||||
err := unix.Close(int(w.fd))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// Sets automatic white balance correction
|
||||
func (w *Webcam) SetAutoWhiteBalance(val bool) error {
|
||||
v := int32(0)
|
||||
if val {
|
||||
v = 1
|
||||
}
|
||||
return setControl(w.fd, V4L2_CID_AUTO_WHITE_BALANCE, v)
|
||||
}
|
||||
|
||||
func gobytes(p unsafe.Pointer, n int) []byte {
|
||||
|
||||
h := reflect.SliceHeader{uintptr(p), n, n}
|
||||
s := *(*[]byte)(unsafe.Pointer(&h))
|
||||
|
||||
return s
|
||||
}
|
||||
+5
-2
@@ -1,3 +1,6 @@
|
||||
[submodule "tools/asm2asm"]
|
||||
[submodule "cloudwego"]
|
||||
path = tools/asm2asm
|
||||
url = https://github.com/chenzhuoyu/asm2asm
|
||||
url = https://github.com/cloudwego/asm2asm.git
|
||||
[submodule "tools/simde"]
|
||||
path = tools/simde
|
||||
url = https://github.com/simd-everywhere/simde.git
|
||||
|
||||
-111
@@ -1,111 +0,0 @@
|
||||
#
|
||||
# Copyright 2021 ByteDance Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
ARCH := avx avx2 sse
|
||||
TMP_DIR := output
|
||||
OUT_DIR := internal/native
|
||||
SRC_FILE := native/native.c
|
||||
|
||||
CPU_avx := amd64
|
||||
CPU_avx2 := amd64
|
||||
CPU_sse := amd64
|
||||
|
||||
TMPL_avx := fastint_amd64_test fastfloat_amd64_test native_amd64_test recover_amd64_test
|
||||
TMPL_avx2 := fastint_amd64_test fastfloat_amd64_test native_amd64_test recover_amd64_test
|
||||
TMPL_sse := fastint_amd64_test fastfloat_amd64_test native_amd64_test recover_amd64_test
|
||||
|
||||
CFLAGS_avx := -msse -mno-sse4 -mavx -mpclmul -mno-avx2 -mstack-alignment=0 -DUSE_AVX=1 -DUSE_AVX2=0
|
||||
CFLAGS_avx2 := -msse -mno-sse4 -mavx -mpclmul -mavx2 -mstack-alignment=0 -DUSE_AVX=1 -DUSE_AVX2=1
|
||||
CFLAGS_sse := -msse -mno-sse4 -mno-avx -mno-avx2 -mpclmul
|
||||
|
||||
CC_amd64 := clang
|
||||
ASM2ASM_amd64 := tools/asm2asm/asm2asm.py
|
||||
|
||||
CFLAGS := -mno-red-zone
|
||||
CFLAGS += -target x86_64-apple-macos11
|
||||
CFLAGS += -fno-asynchronous-unwind-tables
|
||||
CFLAGS += -fno-builtin
|
||||
CFLAGS += -fno-exceptions
|
||||
CFLAGS += -fno-rtti
|
||||
CFLAGS += -fno-stack-protector
|
||||
CFLAGS += -nostdlib
|
||||
CFLAGS += -O3
|
||||
CFLAGS += -Wall -Werror
|
||||
|
||||
NATIVE_SRC := $(wildcard native/*.h)
|
||||
NATIVE_SRC += $(wildcard native/*.c)
|
||||
|
||||
.PHONY: all clean ${ARCH}
|
||||
|
||||
define build_tmpl
|
||||
$(eval @arch := $(1))
|
||||
$(eval @tmpl := $(2))
|
||||
$(eval @dest := $(3))
|
||||
|
||||
${@dest}: ${@tmpl}
|
||||
mkdir -p $(dir ${@dest})
|
||||
echo '// Code generated by Makefile, DO NOT EDIT.' > ${@dest}
|
||||
echo >> ${@dest}
|
||||
sed -e 's/{{PACKAGE}}/${@arch}/g' ${@tmpl} >> ${@dest}
|
||||
endef
|
||||
|
||||
define build_arch
|
||||
$(eval @cpu := $(value CPU_$(1)))
|
||||
$(eval @deps := $(foreach tmpl,$(value TMPL_$(1)),${OUT_DIR}/$(1)/${tmpl}.go))
|
||||
$(eval @asmin := ${TMP_DIR}/$(1)/native.s)
|
||||
$(eval @asmout := ${OUT_DIR}/$(1)/native_text_${@cpu}.go)
|
||||
$(eval @stubin := ${OUT_DIR}/native_${@cpu}.tmpl)
|
||||
$(eval @stubout := ${OUT_DIR}/$(1)/native_${@cpu}.go)
|
||||
|
||||
$(1): ${@asmout} ${@deps}
|
||||
|
||||
${@asmout}: ${@stubout} ${NATIVE_SRC}
|
||||
mkdir -p ${TMP_DIR}/$(1)
|
||||
$${CC_${@cpu}} $${CFLAGS} $${CFLAGS_$(1)} -S -o ${TMP_DIR}/$(1)/native.s ${SRC_FILE}
|
||||
python3 $${ASM2ASM_${@cpu}} -r ${@stubout} ${TMP_DIR}/$(1)/native.s
|
||||
|
||||
$(eval $(call \
|
||||
build_tmpl, \
|
||||
$(1), \
|
||||
${@stubin}, \
|
||||
${@stubout} \
|
||||
))
|
||||
|
||||
$(foreach \
|
||||
tmpl, \
|
||||
$(value TMPL_$(1)), \
|
||||
$(eval $(call \
|
||||
build_tmpl, \
|
||||
$(1), \
|
||||
${OUT_DIR}/${tmpl}.tmpl, \
|
||||
${OUT_DIR}/$(1)/${tmpl}.go \
|
||||
)) \
|
||||
)
|
||||
endef
|
||||
|
||||
all: ${ARCH}
|
||||
|
||||
clean:
|
||||
for arch in ${ARCH}; do \
|
||||
rm -vfr ${TMP_DIR}/$${arch}; \
|
||||
rm -vfr ${OUT_DIR}/$${arch}; \
|
||||
done
|
||||
|
||||
$(foreach \
|
||||
arch, \
|
||||
${ARCH}, \
|
||||
$(eval $(call build_arch,${arch})) \
|
||||
)
|
||||
+1
-1
@@ -413,7 +413,7 @@ func init() {
|
||||
|
||||
When decoding **string values without any escaped characters**, sonic references them from the origin JSON buffer instead of mallocing a new buffer to copy. This helps a lot for CPU performance but may leave the whole JSON buffer in memory as long as the decoded objects are being used. In practice, we found the extra memory introduced by referring JSON buffer is usually 20% ~ 80% of decoded objects. Once an application holds these objects for a long time (for example, cache the decoded objects for reusing), its in-use memory on the server may go up. - `Config.CopyString`/`decoder.CopyString()`: We provide the option for `Decode()` / `Unmarshal()` users to choose not to reference the JSON buffer, which may cause a decline in CPU performance to some degree.
|
||||
|
||||
- `GetFromStringNoCopy()`: For memory safty, `sonic.Get()` / `sonic.GetFromString()` now copies return JSON. If users want to get json more quickly and not care about memory usage, you can use `GetFromStringNoCopy()` to return a JSON direclty referenced from source.
|
||||
- `GetFromStringNoCopy()`: For memory safety, `sonic.Get()` / `sonic.GetFromString()` now copies return JSON. If users want to get json more quickly and not care about memory usage, you can use `GetFromStringNoCopy()` to return a JSON directly referenced from source.
|
||||
|
||||
### Pass string or []byte?
|
||||
|
||||
|
||||
+3
-3
@@ -80,7 +80,7 @@ type Config struct {
|
||||
}
|
||||
|
||||
var (
|
||||
// ConfigDefault is the default config of APIs, aiming at efficiency and safty.
|
||||
// ConfigDefault is the default config of APIs, aiming at efficiency and safety.
|
||||
ConfigDefault = Config{}.Froze()
|
||||
|
||||
// ConfigStd is the standard config of APIs, aiming at being compatible with encoding/json.
|
||||
@@ -118,7 +118,7 @@ type API interface {
|
||||
NewEncoder(writer io.Writer) Encoder
|
||||
// NewDecoder create a Decoder holding reader
|
||||
NewDecoder(reader io.Reader) Decoder
|
||||
// Valid validates the JSON-encoded bytes and reportes if it is valid
|
||||
// Valid validates the JSON-encoded bytes and reports if it is valid
|
||||
Valid(data []byte) bool
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ func UnmarshalString(buf string, val interface{}) error {
|
||||
//
|
||||
// Notice: It expects the src json is **Well-formed** and **Immutable** when calling,
|
||||
// otherwise it may return unexpected result.
|
||||
// Considering memory safty, the returned JSON is **Copied** from the input
|
||||
// Considering memory safety, the returned JSON is **Copied** from the input
|
||||
func Get(src []byte, path ...interface{}) (ast.Node, error) {
|
||||
return GetCopyFromString(rt.Mem2Str(src), path...)
|
||||
}
|
||||
|
||||
Generated
Vendored
+17
-15
@@ -1,4 +1,5 @@
|
||||
// +build amd64,go1.16,!go1.23
|
||||
//go:build (amd64 && go1.16 && !go1.23) || (arm64 && go1.20 && !go1.23)
|
||||
// +build amd64,go1.16,!go1.23 arm64,go1.20,!go1.23
|
||||
|
||||
/*
|
||||
* Copyright 2022 ByteDance Inc.
|
||||
@@ -27,7 +28,7 @@ import (
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
uq `github.com/bytedance/sonic/unquote`
|
||||
`github.com/chenzhuoyu/base64x`
|
||||
`github.com/bytedance/sonic/utf8`
|
||||
)
|
||||
|
||||
var typeByte = rt.UnpackEface(byte(0)).Type
|
||||
@@ -60,7 +61,7 @@ func quote(buf *[]byte, val string) {
|
||||
}
|
||||
|
||||
// double buf size
|
||||
*b = growslice(typeByte, *b, b.Cap*2)
|
||||
*b = rt.GrowSlice(typeByte, *b, b.Cap*2)
|
||||
// ret is the complement of consumed input
|
||||
ret = ^ret
|
||||
// update input buffer
|
||||
@@ -77,14 +78,6 @@ func unquote(src string) (string, types.ParsingError) {
|
||||
return uq.String(src)
|
||||
}
|
||||
|
||||
func decodeBase64(src string) ([]byte, error) {
|
||||
return base64x.StdEncoding.DecodeString(src)
|
||||
}
|
||||
|
||||
func encodeBase64(src []byte) string {
|
||||
return base64x.StdEncoding.EncodeToString(src)
|
||||
}
|
||||
|
||||
func (self *Parser) decodeValue() (val types.JsonState) {
|
||||
sv := (*rt.GoString)(unsafe.Pointer(&self.s))
|
||||
flag := types.F_USE_NUMBER
|
||||
@@ -110,7 +103,7 @@ func (self *Parser) skip() (int, types.ParsingError) {
|
||||
|
||||
func (self *Node) encodeInterface(buf *[]byte) error {
|
||||
//WARN: NOT compatible with json.Encoder
|
||||
return encoder.EncodeInto(buf, self.packAny(), 0)
|
||||
return encoder.EncodeInto(buf, self.packAny(), encoder.NoEncoderNewline)
|
||||
}
|
||||
|
||||
func (self *Parser) skipFast() (int, types.ParsingError) {
|
||||
@@ -121,13 +114,22 @@ func (self *Parser) skipFast() (int, types.ParsingError) {
|
||||
return start, 0
|
||||
}
|
||||
|
||||
func (self *Parser) getByPath(path ...interface{}) (int, types.ParsingError) {
|
||||
fsm := types.NewStateMachine()
|
||||
func (self *Parser) getByPath(validate bool, path ...interface{}) (int, types.ParsingError) {
|
||||
var fsm *types.StateMachine
|
||||
if validate {
|
||||
fsm = types.NewStateMachine()
|
||||
}
|
||||
start := native.GetByPath(&self.s, &self.p, &path, fsm)
|
||||
types.FreeStateMachine(fsm)
|
||||
if validate {
|
||||
types.FreeStateMachine(fsm)
|
||||
}
|
||||
runtime.KeepAlive(path)
|
||||
if start < 0 {
|
||||
return self.p, types.ParsingError(-start)
|
||||
}
|
||||
return start, 0
|
||||
}
|
||||
|
||||
func validate_utf8(str string) bool {
|
||||
return utf8.ValidateString(str)
|
||||
}
|
||||
+35
-32
@@ -1,39 +1,40 @@
|
||||
// +build !amd64 !go1.16 go1.23
|
||||
// +build !amd64,!arm64 go1.23 !go1.16 arm64,!go1.20
|
||||
|
||||
/*
|
||||
* Copyright 2022 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Copyright 2022 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package ast
|
||||
|
||||
import (
|
||||
`encoding/base64`
|
||||
`encoding/json`
|
||||
`unicode/utf8`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
func init() {
|
||||
println("WARNING: sonic only supports Go1.16~1.22 && CPU amd64, but your environment is not suitable")
|
||||
println("WARNING:(ast) sonic only supports Go1.16~1.22, but your environment is not suitable")
|
||||
}
|
||||
|
||||
func quote(buf *[]byte, val string) {
|
||||
quoteString(buf, val)
|
||||
}
|
||||
|
||||
// unquote unescapes a internal JSON string (it doesn't count quotas at the begining and end)
|
||||
func unquote(src string) (string, types.ParsingError) {
|
||||
sp := rt.IndexChar(src, -1)
|
||||
out, ok := unquoteBytes(rt.BytesFrom(sp, len(src)+2, len(src)+2))
|
||||
@@ -43,13 +44,6 @@ func unquote(src string) (string, types.ParsingError) {
|
||||
return rt.Mem2Str(out), 0
|
||||
}
|
||||
|
||||
func decodeBase64(src string) ([]byte, error) {
|
||||
return base64.StdEncoding.DecodeString(src)
|
||||
}
|
||||
|
||||
func encodeBase64(src []byte) string {
|
||||
return base64.StdEncoding.EncodeToString(src)
|
||||
}
|
||||
|
||||
func (self *Parser) decodeValue() (val types.JsonState) {
|
||||
e, v := decodeValue(self.s, self.p, self.dbuf == nil)
|
||||
@@ -87,16 +81,15 @@ func (self *Node) encodeInterface(buf *[]byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *Parser) getByPath(path ...interface{}) (int, types.ParsingError) {
|
||||
var err types.ParsingError
|
||||
func (self *Parser) getByPath(validate bool, path ...interface{}) (int, types.ParsingError) {
|
||||
for _, p := range path {
|
||||
if idx, ok := p.(int); ok && idx >= 0 {
|
||||
if err = self.searchIndex(idx); err != 0 {
|
||||
return -1, err
|
||||
if err := self.searchIndex(idx); err != 0 {
|
||||
return self.p, err
|
||||
}
|
||||
} else if key, ok := p.(string); ok {
|
||||
if err = self.searchKey(key); err != 0 {
|
||||
return -1, err
|
||||
if err := self.searchKey(key); err != 0 {
|
||||
return self.p, err
|
||||
}
|
||||
} else {
|
||||
panic("path must be either int(>=0) or string")
|
||||
@@ -104,8 +97,18 @@ func (self *Parser) getByPath(path ...interface{}) (int, types.ParsingError) {
|
||||
}
|
||||
|
||||
var start int
|
||||
if start, err = self.skip(); err != 0 {
|
||||
return -1, err
|
||||
var e types.ParsingError
|
||||
if validate {
|
||||
start, e = self.skip()
|
||||
} else {
|
||||
start, e = self.skipFast()
|
||||
}
|
||||
if e != 0 {
|
||||
return self.p, e
|
||||
}
|
||||
return start, 0
|
||||
}
|
||||
|
||||
func validate_utf8(str string) bool {
|
||||
return utf8.ValidString(str)
|
||||
}
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// +build amd64,go1.16
|
||||
|
||||
/**
|
||||
* Copyright 2023 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package ast
|
||||
|
||||
import (
|
||||
`github.com/cloudwego/base64x`
|
||||
)
|
||||
|
||||
func decodeBase64(src string) ([]byte, error) {
|
||||
return base64x.StdEncoding.DecodeString(src)
|
||||
}
|
||||
|
||||
func encodeBase64(src []byte) string {
|
||||
return base64x.StdEncoding.EncodeToString(src)
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// +build !amd64 !go1.16
|
||||
|
||||
/*
|
||||
* Copyright 2022 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package ast
|
||||
|
||||
import (
|
||||
`encoding/base64`
|
||||
)
|
||||
|
||||
func decodeBase64(src string) ([]byte, error) {
|
||||
return base64.StdEncoding.DecodeString(src)
|
||||
}
|
||||
|
||||
func encodeBase64(src []byte) string {
|
||||
return base64.StdEncoding.EncodeToString(src)
|
||||
}
|
||||
+36
-2
@@ -26,7 +26,8 @@ import (
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
const _blankCharsMask = (1 << ' ') | (1 << '\t') | (1 << '\r') | (1 << '\n')
|
||||
// Hack: this is used for both checking space and cause firendly compile errors in 32-bit arch.
|
||||
const _Sonic_Not_Support_32Bit_Arch__Checking_32Bit_Arch_Here = (1 << ' ') | (1 << '\t') | (1 << '\r') | (1 << '\n')
|
||||
|
||||
const (
|
||||
bytesNull = "null"
|
||||
@@ -37,7 +38,7 @@ const (
|
||||
)
|
||||
|
||||
func isSpace(c byte) bool {
|
||||
return (int(1<<c) & _blankCharsMask) != 0
|
||||
return (int(1<<c) & _Sonic_Not_Support_32Bit_Arch__Checking_32Bit_Arch_Here) != 0
|
||||
}
|
||||
|
||||
//go:nocheckptr
|
||||
@@ -583,3 +584,36 @@ func skipArray(src string, pos int) (ret int, start int) {
|
||||
pos++
|
||||
}
|
||||
}
|
||||
|
||||
// DecodeString decodes a JSON string from pos and return golang string.
|
||||
// - needEsc indicates if to unescaped escaping chars
|
||||
// - hasEsc tells if the returned string has escaping chars
|
||||
// - validStr enables validating UTF8 charset
|
||||
//
|
||||
func _DecodeString(src string, pos int, needEsc bool, validStr bool) (v string, ret int, hasEsc bool) {
|
||||
p := NewParserObj(src)
|
||||
p.p = pos
|
||||
switch val := p.decodeValue(); val.Vt {
|
||||
case types.V_STRING:
|
||||
str := p.s[val.Iv : p.p-1]
|
||||
if validStr && !validate_utf8(str) {
|
||||
return "", -int(types.ERR_INVALID_UTF8), false
|
||||
}
|
||||
/* fast path: no escape sequence */
|
||||
if val.Ep == -1 {
|
||||
return str, p.p, false
|
||||
} else if !needEsc {
|
||||
return str, p.p, true
|
||||
}
|
||||
/* unquote the string */
|
||||
out, err := unquote(str)
|
||||
/* check for errors */
|
||||
if err != 0 {
|
||||
return "", -int(err), true
|
||||
} else {
|
||||
return out, p.p, true
|
||||
}
|
||||
default:
|
||||
return "", -int(_ERR_UNSUPPORT_TYPE), false
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -852,29 +852,29 @@ func (self *Node) IndexPair(idx int) *Pair {
|
||||
}
|
||||
|
||||
func (self *Node) indexOrGet(idx int, key string) (*Node, int) {
|
||||
if err := self.should(types.V_OBJECT, "an object"); err != nil {
|
||||
return unwrapError(err), idx
|
||||
}
|
||||
if err := self.should(types.V_OBJECT, "an object"); err != nil {
|
||||
return unwrapError(err), idx
|
||||
}
|
||||
|
||||
pr := self.skipIndexPair(idx)
|
||||
if pr != nil && pr.Key == key {
|
||||
return &pr.Value, idx
|
||||
}
|
||||
pr := self.skipIndexPair(idx)
|
||||
if pr != nil && pr.Key == key {
|
||||
return &pr.Value, idx
|
||||
}
|
||||
|
||||
return self.skipKey(key)
|
||||
return self.skipKey(key)
|
||||
}
|
||||
|
||||
// IndexOrGet firstly use idx to index a value and check if its key matches
|
||||
// If not, then use the key to search value
|
||||
func (self *Node) IndexOrGet(idx int, key string) *Node {
|
||||
node, _ := self.indexOrGet(idx, key)
|
||||
return node
|
||||
node, _ := self.indexOrGet(idx, key)
|
||||
return node
|
||||
}
|
||||
|
||||
// IndexOrGetWithIdx attempts to retrieve a node by index and key, returning the node and its correct index.
|
||||
// If the key does not match at the given index, it searches by key and returns the node with its updated index.
|
||||
func (self *Node) IndexOrGetWithIdx(idx int, key string) (*Node, int) {
|
||||
return self.indexOrGet(idx, key)
|
||||
return self.indexOrGet(idx, key)
|
||||
}
|
||||
|
||||
/** Generic Value Converters **/
|
||||
|
||||
+9
@@ -115,6 +115,10 @@ func (self *Parser) lspace(sp int) int {
|
||||
return sp
|
||||
}
|
||||
|
||||
func (self *Parser) backward() {
|
||||
for ; self.p >= 0 && isSpace(self.s[self.p]); self.p-=1 {}
|
||||
}
|
||||
|
||||
func (self *Parser) decodeArray(ret *linkedNodes) (Node, types.ParsingError) {
|
||||
sp := self.p
|
||||
ns := len(self.s)
|
||||
@@ -653,3 +657,8 @@ func (self *Parser) ExportError(err types.ParsingError) error {
|
||||
Code: err,
|
||||
}.Description())
|
||||
}
|
||||
|
||||
func backward(src string, i int) int {
|
||||
for ; i>=0 && isSpace(src[i]); i-- {}
|
||||
return i
|
||||
}
|
||||
|
||||
+62
-4
@@ -36,7 +36,7 @@ func NewSearcher(str string) *Searcher {
|
||||
|
||||
// GetByPathCopy search in depth from top json and returns a **Copied** json node at the path location
|
||||
func (self *Searcher) GetByPathCopy(path ...interface{}) (Node, error) {
|
||||
return self.getByPath(true, path...)
|
||||
return self.getByPath(true, true, path...)
|
||||
}
|
||||
|
||||
// GetByPathNoCopy search in depth from top json and returns a **Referenced** json node at the path location
|
||||
@@ -44,15 +44,15 @@ func (self *Searcher) GetByPathCopy(path ...interface{}) (Node, error) {
|
||||
// WARN: this search directly refer partial json from top json, which has faster speed,
|
||||
// may consumes more memory.
|
||||
func (self *Searcher) GetByPath(path ...interface{}) (Node, error) {
|
||||
return self.getByPath(false, path...)
|
||||
return self.getByPath(false, true, path...)
|
||||
}
|
||||
|
||||
func (self *Searcher) getByPath(copystring bool, path ...interface{}) (Node, error) {
|
||||
func (self *Searcher) getByPath(copystring bool, validate bool, path ...interface{}) (Node, error) {
|
||||
var err types.ParsingError
|
||||
var start int
|
||||
|
||||
self.parser.p = 0
|
||||
start, err = self.parser.getByPath(path...)
|
||||
start, err = self.parser.getByPath(validate, path...)
|
||||
if err != 0 {
|
||||
// for compatibility with old version
|
||||
if err == types.ERR_NOT_FOUND {
|
||||
@@ -78,3 +78,61 @@ func (self *Searcher) getByPath(copystring bool, path ...interface{}) (Node, err
|
||||
}
|
||||
return newRawNode(raw, t), nil
|
||||
}
|
||||
|
||||
// GetByPath searches a path and returns relaction and types of target
|
||||
func _GetByPath(src string, path ...interface{}) (start int, end int, typ int, err error) {
|
||||
p := NewParserObj(src)
|
||||
s, e := p.getByPath(false, path...)
|
||||
if e != 0 {
|
||||
// for compatibility with old version
|
||||
if e == types.ERR_NOT_FOUND {
|
||||
return -1, -1, 0, ErrNotExist
|
||||
}
|
||||
if e == types.ERR_UNSUPPORT_TYPE {
|
||||
panic("path must be either int(>=0) or string")
|
||||
}
|
||||
return -1, -1, 0, p.syntaxError(e)
|
||||
}
|
||||
|
||||
t := switchRawType(p.s[s])
|
||||
if t == _V_NONE {
|
||||
return -1, -1, 0, ErrNotExist
|
||||
}
|
||||
if t == _V_NUMBER {
|
||||
p.p = 1 + backward(p.s, p.p-1)
|
||||
}
|
||||
return s, p.p, int(t), nil
|
||||
}
|
||||
|
||||
// ValidSyntax check if a json has a valid JSON syntax,
|
||||
// while not validate UTF-8 charset
|
||||
func _ValidSyntax(json string) bool {
|
||||
p := NewParserObj(json)
|
||||
_, e := p.skip()
|
||||
if e != 0 {
|
||||
return false
|
||||
}
|
||||
if skipBlank(p.s, p.p) != -int(types.ERR_EOF) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// SkipFast skip a json value in fast-skip algs,
|
||||
// while not strictly validate JSON syntax and UTF-8 charset.
|
||||
func _SkipFast(src string, i int) (int, int, error) {
|
||||
p := NewParserObj(src)
|
||||
p.p = i
|
||||
s, e := p.skipFast()
|
||||
if e != 0 {
|
||||
return -1, -1, p.ExportError(e)
|
||||
}
|
||||
t := switchRawType(p.s[s])
|
||||
if t == _V_NONE {
|
||||
return -1, -1, ErrNotExist
|
||||
}
|
||||
if t == _V_NUMBER {
|
||||
p.p = 1 + backward(p.s, p.p-1)
|
||||
}
|
||||
return s, p.p, nil
|
||||
}
|
||||
|
||||
Generated
Vendored
-6
@@ -1,5 +1,3 @@
|
||||
// +build go1.20
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
@@ -34,10 +32,6 @@ func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func unsafe_NewArray(typ *rt.GoType, n int) unsafe.Pointer
|
||||
|
||||
//go:linkname growslice reflect.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:nosplit
|
||||
func mem2ptr(s []byte) unsafe.Pointer {
|
||||
return (*rt.GoSlice)(unsafe.Pointer(&s)).Ptr
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
// +build !go1.20
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package ast
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
`unicode/utf8`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:noescape
|
||||
//go:linkname memmove runtime.memmove
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)
|
||||
|
||||
//go:linkname unsafe_NewArray reflect.unsafe_NewArray
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func unsafe_NewArray(typ *rt.GoType, n int) unsafe.Pointer
|
||||
|
||||
//go:linkname growslice runtime.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:nosplit
|
||||
func mem2ptr(s []byte) unsafe.Pointer {
|
||||
return (*rt.GoSlice)(unsafe.Pointer(&s)).Ptr
|
||||
}
|
||||
|
||||
var (
|
||||
//go:linkname safeSet encoding/json.safeSet
|
||||
safeSet [utf8.RuneSelf]bool
|
||||
|
||||
//go:linkname hex encoding/json.hex
|
||||
hex string
|
||||
)
|
||||
|
||||
//go:linkname unquoteBytes encoding/json.unquoteBytes
|
||||
func unquoteBytes(s []byte) (t []byte, ok bool)
|
||||
+32
-16
@@ -18,6 +18,7 @@ package ast
|
||||
|
||||
import (
|
||||
`encoding/json`
|
||||
`errors`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
)
|
||||
@@ -25,7 +26,7 @@ import (
|
||||
// Visitor handles the callbacks during preorder traversal of a JSON AST.
|
||||
//
|
||||
// According to the JSON RFC8259, a JSON AST can be defined by
|
||||
// the following rules without seperator / whitespace tokens.
|
||||
// the following rules without separator / whitespace tokens.
|
||||
//
|
||||
// JSON-AST = value
|
||||
// value = false / null / true / object / array / number / string
|
||||
@@ -174,6 +175,19 @@ func (self *traverser) decodeArray() error {
|
||||
sp := self.parser.p
|
||||
ns := len(self.parser.s)
|
||||
|
||||
/* allocate array space and parse every element */
|
||||
if err := self.visitor.OnArrayBegin(_DEFAULT_NODE_CAP); err != nil {
|
||||
if err == VisitOPSkip {
|
||||
// NOTICE: for user needs to skip entiry object
|
||||
self.parser.p -= 1
|
||||
if _, e := self.parser.skipFast(); e != 0 {
|
||||
return e
|
||||
}
|
||||
return self.visitor.OnArrayEnd()
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
/* check for EOF */
|
||||
self.parser.p = self.parser.lspace(sp)
|
||||
if self.parser.p >= ns {
|
||||
@@ -183,16 +197,9 @@ func (self *traverser) decodeArray() error {
|
||||
/* check for empty array */
|
||||
if self.parser.s[self.parser.p] == ']' {
|
||||
self.parser.p++
|
||||
if err := self.visitor.OnArrayBegin(0); err != nil {
|
||||
return err
|
||||
}
|
||||
return self.visitor.OnArrayEnd()
|
||||
}
|
||||
|
||||
/* allocate array space and parse every element */
|
||||
if err := self.visitor.OnArrayBegin(_DEFAULT_NODE_CAP); err != nil {
|
||||
return err
|
||||
}
|
||||
for {
|
||||
/* decode the value */
|
||||
if err := self.decodeValue(); err != nil {
|
||||
@@ -223,6 +230,19 @@ func (self *traverser) decodeObject() error {
|
||||
sp := self.parser.p
|
||||
ns := len(self.parser.s)
|
||||
|
||||
/* allocate object space and decode each pair */
|
||||
if err := self.visitor.OnObjectBegin(_DEFAULT_NODE_CAP); err != nil {
|
||||
if err == VisitOPSkip {
|
||||
// NOTICE: for user needs to skip entiry object
|
||||
self.parser.p -= 1
|
||||
if _, e := self.parser.skipFast(); e != 0 {
|
||||
return e
|
||||
}
|
||||
return self.visitor.OnObjectEnd()
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
/* check for EOF */
|
||||
self.parser.p = self.parser.lspace(sp)
|
||||
if self.parser.p >= ns {
|
||||
@@ -231,17 +251,9 @@ func (self *traverser) decodeObject() error {
|
||||
|
||||
/* check for empty object */
|
||||
if self.parser.s[self.parser.p] == '}' {
|
||||
self.parser.p++
|
||||
if err := self.visitor.OnObjectBegin(0); err != nil {
|
||||
return err
|
||||
}
|
||||
return self.visitor.OnObjectEnd()
|
||||
}
|
||||
|
||||
/* allocate object space and decode each pair */
|
||||
if err := self.visitor.OnObjectBegin(_DEFAULT_NODE_CAP); err != nil {
|
||||
return err
|
||||
}
|
||||
for {
|
||||
var njs types.JsonState
|
||||
var err types.ParsingError
|
||||
@@ -313,3 +325,7 @@ func (self *traverser) decodeString(iv int64, ep int) error {
|
||||
}
|
||||
return self.visitor.OnString(out)
|
||||
}
|
||||
|
||||
// If visitor return this error on `OnObjectBegin()` or `OnArrayBegin()`,
|
||||
// the transverer will skip entiry object or array
|
||||
var VisitOPSkip = errors.New("")
|
||||
|
||||
+2
@@ -22,6 +22,8 @@ import (
|
||||
`github.com/bytedance/sonic/internal/encoder`
|
||||
)
|
||||
|
||||
// EnableFallback indicates if encoder use fallback
|
||||
const EnableFallback = false
|
||||
|
||||
// Encoder represents a specific set of encoder configurations.
|
||||
type Encoder = encoder.Encoder
|
||||
|
||||
+17
-10
@@ -28,9 +28,12 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
println("WARNING: sonic only supports Go1.16~1.22 && CPU amd64, but your environment is not suitable")
|
||||
println("WARNING:(encoder) sonic only supports Go1.16~1.22 && CPU amd64, but your environment is not suitable")
|
||||
}
|
||||
|
||||
// EnableFallback indicates if encoder use fallback
|
||||
const EnableFallback = true
|
||||
|
||||
// Options is a set of encoding options.
|
||||
type Options uint64
|
||||
|
||||
@@ -188,15 +191,19 @@ func Encode(val interface{}, opts Options) ([]byte, error) {
|
||||
// EncodeInto is like Encode but uses a user-supplied buffer instead of allocating
|
||||
// a new one.
|
||||
func EncodeInto(buf *[]byte, val interface{}, opts Options) error {
|
||||
if buf == nil {
|
||||
panic("user-supplied buffer buf is nil")
|
||||
}
|
||||
w := bytes.NewBuffer(*buf)
|
||||
enc := json.NewEncoder(w)
|
||||
enc.SetEscapeHTML((opts & EscapeHTML) != 0)
|
||||
err := enc.Encode(val)
|
||||
*buf = w.Bytes()
|
||||
return err
|
||||
if buf == nil {
|
||||
panic("user-supplied buffer buf is nil")
|
||||
}
|
||||
w := bytes.NewBuffer(*buf)
|
||||
enc := json.NewEncoder(w)
|
||||
enc.SetEscapeHTML((opts & EscapeHTML) != 0)
|
||||
err := enc.Encode(val)
|
||||
*buf = w.Bytes()
|
||||
l := len(*buf)
|
||||
if l > 0 && (opts & NoEncoderNewline != 0) && (*buf)[l-1] == '\n' {
|
||||
*buf = (*buf)[:l-1]
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029
|
||||
|
||||
+3
-2
@@ -2,7 +2,8 @@ go 1.18
|
||||
|
||||
use (
|
||||
.
|
||||
./generic_test
|
||||
./fuzz
|
||||
./external_jsonlib_test
|
||||
./fuzz
|
||||
./generic_test
|
||||
./loader
|
||||
)
|
||||
|
||||
+3
-2
@@ -134,6 +134,7 @@ var (
|
||||
_R9 = jit.Reg("R9")
|
||||
_X0 = jit.Reg("X0")
|
||||
_X1 = jit.Reg("X1")
|
||||
_X15 = jit.Reg("X15")
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -421,6 +422,7 @@ func (self *_Assembler) call_go(fn obj.Addr) {
|
||||
func (self *_Assembler) callc(fn obj.Addr) {
|
||||
self.save(_IP)
|
||||
self.call(fn)
|
||||
self.Emit("XORPS", _X15, _X15)
|
||||
self.load(_IP)
|
||||
}
|
||||
|
||||
@@ -605,7 +607,6 @@ func (self *_Assembler) skip_one() {
|
||||
self.Emit("TESTQ", _AX, _AX) // TESTQ AX, AX
|
||||
self.Sjmp("JS" , _LB_parsing_error_v) // JS _parse_error_v
|
||||
self.Emit("MOVQ" , _VAR_pc, _R9) // MOVQ pc, R9
|
||||
// self.Byte(0xcc)
|
||||
self.Rjmp("JMP" , _R9) // JMP (R9)
|
||||
}
|
||||
|
||||
@@ -1145,7 +1146,7 @@ func (self *_Assembler) decode_dynamic(vt obj.Addr, vp obj.Addr) {
|
||||
var (
|
||||
_F_memequal = jit.Func(memequal)
|
||||
_F_memmove = jit.Func(memmove)
|
||||
_F_growslice = jit.Func(growslice)
|
||||
_F_growslice = jit.Func(rt.GrowSlice)
|
||||
_F_makeslice = jit.Func(makeslice)
|
||||
_F_makemap_small = jit.Func(makemap_small)
|
||||
_F_mapassign_fast64 = jit.Func(mapassign_fast64)
|
||||
|
||||
+1
-1
@@ -1148,7 +1148,7 @@ func (self *_Assembler) decode_dynamic(vt obj.Addr, vp obj.Addr) {
|
||||
var (
|
||||
_F_memequal = jit.Func(memequal)
|
||||
_F_memmove = jit.Func(memmove)
|
||||
_F_growslice = jit.Func(growslice)
|
||||
_F_growslice = jit.Func(rt.GrowSlice)
|
||||
_F_makeslice = jit.Func(makeslice)
|
||||
_F_makemap_small = jit.Func(makemap_small)
|
||||
_F_mapassign_fast64 = jit.Func(mapassign_fast64)
|
||||
|
||||
-2
@@ -30,9 +30,7 @@ func decodeTypedPointer(s string, i int, vt *rt.GoType, vp unsafe.Pointer, sb *_
|
||||
return 0, err
|
||||
} else {
|
||||
rt.MoreStack(_FP_size + _VD_size + native.MaxFrameSize)
|
||||
rt.StopProf()
|
||||
ret, err := fn(s, i, vp, sb, fv, "", nil)
|
||||
rt.StartProf()
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
|
||||
+2
-7
@@ -22,12 +22,12 @@ import (
|
||||
`unsafe`
|
||||
`reflect`
|
||||
|
||||
_ `github.com/chenzhuoyu/base64x`
|
||||
_ `github.com/cloudwego/base64x`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:linkname _subr__b64decode github.com/chenzhuoyu/base64x._subr__b64decode
|
||||
//go:linkname _subr__b64decode github.com/cloudwego/base64x._subr__b64decode
|
||||
var _subr__b64decode uintptr
|
||||
|
||||
// runtime.maxElementSize
|
||||
@@ -72,11 +72,6 @@ func mallocgc(size uintptr, typ *rt.GoType, needzero bool) unsafe.Pointer
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func makeslice(et *rt.GoType, len int, cap int) unsafe.Pointer
|
||||
|
||||
//go:noescape
|
||||
//go:linkname growslice runtime.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:linkname makemap_small runtime.makemap_small
|
||||
func makemap_small() unsafe.Pointer
|
||||
|
||||
|
||||
+2
-7
@@ -22,12 +22,12 @@ import (
|
||||
`unsafe`
|
||||
`reflect`
|
||||
|
||||
_ `github.com/chenzhuoyu/base64x`
|
||||
_ `github.com/cloudwego/base64x`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:linkname _subr__b64decode github.com/chenzhuoyu/base64x._subr__b64decode
|
||||
//go:linkname _subr__b64decode github.com/cloudwego/base64x._subr__b64decode
|
||||
var _subr__b64decode uintptr
|
||||
|
||||
// runtime.maxElementSize
|
||||
@@ -72,11 +72,6 @@ func mallocgc(size uintptr, typ *rt.GoType, needzero bool) unsafe.Pointer
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func makeslice(et *rt.GoType, len int, cap int) unsafe.Pointer
|
||||
|
||||
//go:noescape
|
||||
//go:linkname growslice reflect.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:linkname makemap_small runtime.makemap_small
|
||||
func makemap_small() unsafe.Pointer
|
||||
|
||||
|
||||
+3
-1
@@ -128,6 +128,7 @@ var (
|
||||
|
||||
var (
|
||||
_X0 = jit.Reg("X0")
|
||||
_X15 = jit.Reg("X15")
|
||||
_Y0 = jit.Reg("Y0")
|
||||
)
|
||||
|
||||
@@ -512,6 +513,7 @@ func (self *_Assembler) call_c(pc obj.Addr) {
|
||||
self.call(pc) // CALL $pc
|
||||
self.xload(_REG_ffi...) // LOAD $REG_ffi
|
||||
self.Emit("XCHGQ", _SP_p, _BX)
|
||||
self.Emit("XORPS", _X15, _X15)
|
||||
}
|
||||
|
||||
func (self *_Assembler) call_go(pc obj.Addr) {
|
||||
@@ -590,7 +592,7 @@ func (self *_Assembler) call_marshaler_v(fn obj.Addr, it *rt.GoType, vt reflect.
|
||||
|
||||
var (
|
||||
_T_byte = jit.Type(byteType)
|
||||
_F_growslice = jit.Func(growslice)
|
||||
_F_growslice = jit.Func(rt.GrowSlice)
|
||||
)
|
||||
|
||||
// AX must saving n
|
||||
|
||||
+3
-3
@@ -574,17 +574,17 @@ func (self *_Assembler) call_marshaler_v(fn obj.Addr, it *rt.GoType, vt reflect.
|
||||
|
||||
var (
|
||||
_T_byte = jit.Type(byteType)
|
||||
_F_growslice = jit.Func(growslice)
|
||||
_F_growslice = jit.Func(rt.GrowSlice)
|
||||
)
|
||||
|
||||
func (self *_Assembler) more_space() {
|
||||
self.Link(_LB_more_space)
|
||||
self.Emit("MOVQ", _T_byte, _AX) // MOVQ $_T_byte, _AX
|
||||
self.Emit("MOVQ", _AX, jit.Ptr(_SP, 0)) // MOVQ _AX, (SP)
|
||||
self.Emit("MOVQ", _RP, jit.Ptr(_SP, 8)) // MOVQ RP, 8(SP)
|
||||
self.Emit("MOVQ", _RL, jit.Ptr(_SP, 16)) // MOVQ RL, 16(SP)
|
||||
self.Emit("MOVQ", _RC, jit.Ptr(_SP, 24)) // MOVQ RC, 24(SP)
|
||||
self.Emit("MOVQ", _AX, jit.Ptr(_SP, 32)) // MOVQ AX, 32(SP)
|
||||
self.Emit("MOVQ", _T_byte, _AX) // MOVQ $_T_byte, _AX
|
||||
self.Emit("MOVQ", _AX, jit.Ptr(_SP, 0)) // MOVQ _AX, (SP)
|
||||
self.xsave(_REG_jsr...) // SAVE $REG_jsr
|
||||
self.call(_F_growslice) // CALL $pc
|
||||
self.xload(_REG_jsr...) // LOAD $REG_jsr
|
||||
|
||||
+1
-1
@@ -337,7 +337,7 @@ func Valid(data []byte) (ok bool, start int) {
|
||||
s := rt.Mem2Str(data)
|
||||
p := 0
|
||||
m := types.NewStateMachine()
|
||||
ret := native.ValidateOne(&s, &p, m)
|
||||
ret := native.ValidateOne(&s, &p, m, types.F_VALIDATE_STRING)
|
||||
types.FreeStateMachine(m)
|
||||
|
||||
if ret < 0 {
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ func iteratorStart(t *rt.GoMapType, m *rt.GoMap, fv uint64) (*_MapIterator, erro
|
||||
|
||||
/* pre-allocate space if needed */
|
||||
if m.Count > it.kv.Cap {
|
||||
it.kv = growslice(iteratorPair, it.kv, m.Count)
|
||||
it.kv = rt.GrowSlice(iteratorPair, it.kv, m.Count)
|
||||
}
|
||||
|
||||
/* dump all the key-value pairs */
|
||||
|
||||
+6
-9
@@ -23,6 +23,7 @@ import (
|
||||
|
||||
`github.com/bytedance/sonic/internal/jit`
|
||||
`github.com/bytedance/sonic/internal/native`
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
@@ -58,7 +59,7 @@ func encodeString(buf *[]byte, val string) error {
|
||||
|
||||
/* not enough space, grow the slice and try again */
|
||||
sidx += ^nb
|
||||
*pbuf = growslice(rt.UnpackType(byteType), *pbuf, pbuf.Cap * 2)
|
||||
*pbuf = rt.GrowSlice(rt.UnpackType(byteType), *pbuf, pbuf.Cap * 2)
|
||||
}
|
||||
|
||||
/* closing quote */
|
||||
@@ -73,15 +74,11 @@ func encodeTypedPointer(buf *[]byte, vt *rt.GoType, vp *unsafe.Pointer, sb *_Sta
|
||||
return err
|
||||
} else if vt.Indirect() {
|
||||
rt.MoreStack(_FP_size + native.MaxFrameSize)
|
||||
rt.StopProf()
|
||||
err := fn(buf, *vp, sb, fv)
|
||||
rt.StartProf()
|
||||
return err
|
||||
} else {
|
||||
rt.MoreStack(_FP_size + native.MaxFrameSize)
|
||||
rt.StopProf()
|
||||
err := fn(buf, unsafe.Pointer(vp), sb, fv)
|
||||
rt.StartProf()
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -123,9 +120,9 @@ func htmlEscape(dst []byte, src []byte) []byte {
|
||||
dbuf := (*rt.GoSlice)(unsafe.Pointer(&dst))
|
||||
|
||||
/* grow dst if it is shorter */
|
||||
if cap(dst) - len(dst) < len(src) + native.BufPaddingSize {
|
||||
cap := len(src) * 3 / 2 + native.BufPaddingSize
|
||||
*dbuf = growslice(typeByte, *dbuf, cap)
|
||||
if cap(dst) - len(dst) < len(src) + types.BufPaddingSize {
|
||||
cap := len(src) * 3 / 2 + types.BufPaddingSize
|
||||
*dbuf = rt.GrowSlice(typeByte, *dbuf, cap)
|
||||
}
|
||||
|
||||
for sidx < sbuf.Len {
|
||||
@@ -143,7 +140,7 @@ func htmlEscape(dst []byte, src []byte) []byte {
|
||||
|
||||
/* not enough space, grow the slice and try again */
|
||||
sidx += ^nb
|
||||
*dbuf = growslice(typeByte, *dbuf, dbuf.Cap * 2)
|
||||
*dbuf = rt.GrowSlice(typeByte, *dbuf, dbuf.Cap * 2)
|
||||
}
|
||||
return dst
|
||||
}
|
||||
|
||||
+2
-6
@@ -21,12 +21,12 @@ package encoder
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
_ `github.com/chenzhuoyu/base64x`
|
||||
_ `github.com/cloudwego/base64x`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
|
||||
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
|
||||
var _subr__b64encode uintptr
|
||||
|
||||
//go:noescape
|
||||
@@ -34,10 +34,6 @@ var _subr__b64encode uintptr
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)
|
||||
|
||||
//go:linkname growslice runtime.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:linkname mapiternext runtime.mapiternext
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func mapiternext(it *rt.GoMapIterator)
|
||||
|
||||
+2
-6
@@ -21,12 +21,12 @@ package encoder
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
_ `github.com/chenzhuoyu/base64x`
|
||||
_ `github.com/cloudwego/base64x`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
|
||||
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
|
||||
var _subr__b64encode uintptr
|
||||
|
||||
//go:noescape
|
||||
@@ -34,10 +34,6 @@ var _subr__b64encode uintptr
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)
|
||||
|
||||
//go:linkname growslice runtime.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:linkname mapiternext runtime.mapiternext
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func mapiternext(it *rt.GoMapIterator)
|
||||
|
||||
+2
-6
@@ -21,12 +21,12 @@ package encoder
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
_ `github.com/chenzhuoyu/base64x`
|
||||
_ `github.com/cloudwego/base64x`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
|
||||
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
|
||||
var _subr__b64encode uintptr
|
||||
|
||||
//go:noescape
|
||||
@@ -34,10 +34,6 @@ var _subr__b64encode uintptr
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)
|
||||
|
||||
//go:linkname growslice reflect.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:linkname mapiternext runtime.mapiternext
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func mapiternext(it *rt.GoMapIterator)
|
||||
|
||||
+2
-6
@@ -21,12 +21,12 @@ package encoder
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
_ `github.com/chenzhuoyu/base64x`
|
||||
_ `github.com/cloudwego/base64x`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
//go:linkname _subr__b64encode github.com/chenzhuoyu/base64x._subr__b64encode
|
||||
//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
|
||||
var _subr__b64encode uintptr
|
||||
|
||||
//go:noescape
|
||||
@@ -34,10 +34,6 @@ var _subr__b64encode uintptr
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)
|
||||
|
||||
//go:linkname growslice reflect.growslice
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func growslice(et *rt.GoType, old rt.GoSlice, cap int) rt.GoSlice
|
||||
|
||||
//go:linkname mapiternext runtime.mapiternext
|
||||
//goland:noinspection GoUnusedParameter
|
||||
func mapiternext(it *rt.GoMapIterator)
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_f32toa func(out *byte, val float32) (ret int)
|
||||
|
||||
var S_f32toa uintptr
|
||||
|
||||
//go:nosplit
|
||||
func f32toa(out *byte, val float32) (ret int) {
|
||||
return F_f32toa((*byte)(rt.NoEscape(unsafe.Pointer(out))), val)
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__f32toa = 32
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__f32toa = 48
|
||||
)
|
||||
|
||||
const (
|
||||
_size__f32toa = 3392
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__f32toa = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{3350, 48},
|
||||
{3351, 40},
|
||||
{3353, 32},
|
||||
{3355, 24},
|
||||
{3357, 16},
|
||||
{3359, 8},
|
||||
{3363, 0},
|
||||
{3392, 48},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_f32toa = []loader.CFunc{
|
||||
{"_f32toa_entry", 0, _entry__f32toa, 0, nil},
|
||||
{"_f32toa", _entry__f32toa, _size__f32toa, _stack__f32toa, _pcsp__f32toa},
|
||||
}
|
||||
+964
@@ -0,0 +1,964 @@
|
||||
// +build amd64
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
var _text_f32toa = []byte{
|
||||
// .p2align 5, 0x00
|
||||
// LCPI0_0
|
||||
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, // QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
|
||||
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, //0x00000010 QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
|
||||
//0x00000020 .p2align 4, 0x90
|
||||
//0x00000020 _f32toa
|
||||
0x55, //0x00000020 pushq %rbp
|
||||
0x48, 0x89, 0xe5, //0x00000021 movq %rsp, %rbp
|
||||
0x41, 0x57, //0x00000024 pushq %r15
|
||||
0x41, 0x56, //0x00000026 pushq %r14
|
||||
0x41, 0x55, //0x00000028 pushq %r13
|
||||
0x41, 0x54, //0x0000002a pushq %r12
|
||||
0x53, //0x0000002c pushq %rbx
|
||||
0xc5, 0xf9, 0x7e, 0xc0, //0x0000002d vmovd %xmm0, %eax
|
||||
0x89, 0xc1, //0x00000031 movl %eax, %ecx
|
||||
0xc1, 0xe9, 0x17, //0x00000033 shrl $23, %ecx
|
||||
0x0f, 0xb6, 0xd9, //0x00000036 movzbl %cl, %ebx
|
||||
0x81, 0xfb, 0xff, 0x00, 0x00, 0x00, //0x00000039 cmpl $255, %ebx
|
||||
0x0f, 0x84, 0xff, 0x0c, 0x00, 0x00, //0x0000003f je LBB0_139
|
||||
0xc6, 0x07, 0x2d, //0x00000045 movb $45, (%rdi)
|
||||
0x41, 0x89, 0xc1, //0x00000048 movl %eax, %r9d
|
||||
0x41, 0xc1, 0xe9, 0x1f, //0x0000004b shrl $31, %r9d
|
||||
0x4e, 0x8d, 0x04, 0x0f, //0x0000004f leaq (%rdi,%r9), %r8
|
||||
0xa9, 0xff, 0xff, 0xff, 0x7f, //0x00000053 testl $2147483647, %eax
|
||||
0x0f, 0x84, 0xc6, 0x01, 0x00, 0x00, //0x00000058 je LBB0_14
|
||||
0x25, 0xff, 0xff, 0x7f, 0x00, //0x0000005e andl $8388607, %eax
|
||||
0x85, 0xdb, //0x00000063 testl %ebx, %ebx
|
||||
0x0f, 0x84, 0xe1, 0x0c, 0x00, 0x00, //0x00000065 je LBB0_140
|
||||
0x8d, 0xb0, 0x00, 0x00, 0x80, 0x00, //0x0000006b leal $8388608(%rax), %esi
|
||||
0x44, 0x8d, 0xbb, 0x6a, 0xff, 0xff, 0xff, //0x00000071 leal $-150(%rbx), %r15d
|
||||
0x8d, 0x4b, 0x81, //0x00000078 leal $-127(%rbx), %ecx
|
||||
0x83, 0xf9, 0x17, //0x0000007b cmpl $23, %ecx
|
||||
0x0f, 0x87, 0x1b, 0x00, 0x00, 0x00, //0x0000007e ja LBB0_5
|
||||
0xb9, 0x96, 0x00, 0x00, 0x00, //0x00000084 movl $150, %ecx
|
||||
0x29, 0xd9, //0x00000089 subl %ebx, %ecx
|
||||
0x48, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000008b movq $-1, %rdx
|
||||
0x48, 0xd3, 0xe2, //0x00000092 shlq %cl, %rdx
|
||||
0xf7, 0xd2, //0x00000095 notl %edx
|
||||
0x85, 0xf2, //0x00000097 testl %esi, %edx
|
||||
0x0f, 0x84, 0x12, 0x04, 0x00, 0x00, //0x00000099 je LBB0_32
|
||||
//0x0000009f LBB0_5
|
||||
0x41, 0x89, 0xf6, //0x0000009f movl %esi, %r14d
|
||||
0x41, 0x83, 0xe6, 0x01, //0x000000a2 andl $1, %r14d
|
||||
0x85, 0xc0, //0x000000a6 testl %eax, %eax
|
||||
0x0f, 0x94, 0xc0, //0x000000a8 sete %al
|
||||
0x83, 0xfb, 0x01, //0x000000ab cmpl $1, %ebx
|
||||
0x0f, 0x97, 0xc1, //0x000000ae seta %cl
|
||||
0x20, 0xc1, //0x000000b1 andb %al, %cl
|
||||
0x0f, 0xb6, 0xc9, //0x000000b3 movzbl %cl, %ecx
|
||||
0x41, 0x89, 0xf2, //0x000000b6 movl %esi, %r10d
|
||||
0x41, 0xc1, 0xe2, 0x02, //0x000000b9 shll $2, %r10d
|
||||
0x8d, 0x44, 0xb1, 0xfe, //0x000000bd leal $-2(%rcx,%rsi,4), %eax
|
||||
0x45, 0x69, 0xdf, 0x13, 0x44, 0x13, 0x00, //0x000000c1 imull $1262611, %r15d, %r11d
|
||||
0x31, 0xd2, //0x000000c8 xorl %edx, %edx
|
||||
0x84, 0xc9, //0x000000ca testb %cl, %cl
|
||||
0xb9, 0xff, 0xfe, 0x07, 0x00, //0x000000cc movl $524031, %ecx
|
||||
0x0f, 0x44, 0xca, //0x000000d1 cmovel %edx, %ecx
|
||||
0x41, 0x29, 0xcb, //0x000000d4 subl %ecx, %r11d
|
||||
0x41, 0xc1, 0xfb, 0x16, //0x000000d7 sarl $22, %r11d
|
||||
0x41, 0x69, 0xcb, 0xb1, 0x6c, 0xe5, 0xff, //0x000000db imull $-1741647, %r11d, %ecx
|
||||
0xc1, 0xe9, 0x13, //0x000000e2 shrl $19, %ecx
|
||||
0x44, 0x01, 0xf9, //0x000000e5 addl %r15d, %ecx
|
||||
0xba, 0x1f, 0x00, 0x00, 0x00, //0x000000e8 movl $31, %edx
|
||||
0x44, 0x29, 0xda, //0x000000ed subl %r11d, %edx
|
||||
0x48, 0x63, 0xd2, //0x000000f0 movslq %edx, %rdx
|
||||
0x48, 0x8d, 0x1d, 0x36, 0x0d, 0x00, 0x00, //0x000000f3 leaq $3382(%rip), %rbx /* _pow10_ceil_sig_f32.g+0(%rip) */
|
||||
0xfe, 0xc1, //0x000000fa incb %cl
|
||||
0xd3, 0xe0, //0x000000fc shll %cl, %eax
|
||||
0x4c, 0x8b, 0x24, 0xd3, //0x000000fe movq (%rbx,%rdx,8), %r12
|
||||
0x49, 0xf7, 0xe4, //0x00000102 mulq %r12
|
||||
0x48, 0xc1, 0xe8, 0x20, //0x00000105 shrq $32, %rax
|
||||
0x31, 0xdb, //0x00000109 xorl %ebx, %ebx
|
||||
0x83, 0xf8, 0x01, //0x0000010b cmpl $1, %eax
|
||||
0x0f, 0x97, 0xc3, //0x0000010e seta %bl
|
||||
0x41, 0xd3, 0xe2, //0x00000111 shll %cl, %r10d
|
||||
0x09, 0xd3, //0x00000114 orl %edx, %ebx
|
||||
0x4c, 0x89, 0xd0, //0x00000116 movq %r10, %rax
|
||||
0x49, 0xf7, 0xe4, //0x00000119 mulq %r12
|
||||
0x49, 0x89, 0xd2, //0x0000011c movq %rdx, %r10
|
||||
0x48, 0xc1, 0xe8, 0x20, //0x0000011f shrq $32, %rax
|
||||
0x45, 0x31, 0xff, //0x00000123 xorl %r15d, %r15d
|
||||
0x83, 0xf8, 0x01, //0x00000126 cmpl $1, %eax
|
||||
0x41, 0x0f, 0x97, 0xc7, //0x00000129 seta %r15b
|
||||
0x8d, 0x04, 0xb5, 0x02, 0x00, 0x00, 0x00, //0x0000012d leal $2(,%rsi,4), %eax
|
||||
0xd3, 0xe0, //0x00000134 shll %cl, %eax
|
||||
0x45, 0x09, 0xd7, //0x00000136 orl %r10d, %r15d
|
||||
0x49, 0xf7, 0xe4, //0x00000139 mulq %r12
|
||||
0x48, 0xc1, 0xe8, 0x20, //0x0000013c shrq $32, %rax
|
||||
0x31, 0xc9, //0x00000140 xorl %ecx, %ecx
|
||||
0x83, 0xf8, 0x01, //0x00000142 cmpl $1, %eax
|
||||
0x0f, 0x97, 0xc1, //0x00000145 seta %cl
|
||||
0x09, 0xd1, //0x00000148 orl %edx, %ecx
|
||||
0x44, 0x01, 0xf3, //0x0000014a addl %r14d, %ebx
|
||||
0x44, 0x29, 0xf1, //0x0000014d subl %r14d, %ecx
|
||||
0x41, 0x83, 0xff, 0x28, //0x00000150 cmpl $40, %r15d
|
||||
0x0f, 0x82, 0x9a, 0x00, 0x00, 0x00, //0x00000154 jb LBB0_12
|
||||
0x44, 0x89, 0xd2, //0x0000015a movl %r10d, %edx
|
||||
0xb8, 0xcd, 0xcc, 0xcc, 0xcc, //0x0000015d movl $3435973837, %eax
|
||||
0x48, 0x0f, 0xaf, 0xc2, //0x00000162 imulq %rdx, %rax
|
||||
0x48, 0xc1, 0xe8, 0x25, //0x00000166 shrq $37, %rax
|
||||
0x41, 0x89, 0xde, //0x0000016a movl %ebx, %r14d
|
||||
0x48, 0x8d, 0x34, 0xc5, 0x00, 0x00, 0x00, 0x00, //0x0000016d leaq (,%rax,8), %rsi
|
||||
0x48, 0x8d, 0x14, 0xb6, //0x00000175 leaq (%rsi,%rsi,4), %rdx
|
||||
0x4c, 0x39, 0xf2, //0x00000179 cmpq %r14, %rdx
|
||||
0x41, 0x0f, 0x93, 0xc4, //0x0000017c setae %r12b
|
||||
0x4c, 0x8d, 0x74, 0xb6, 0x28, //0x00000180 leaq $40(%rsi,%rsi,4), %r14
|
||||
0x89, 0xce, //0x00000185 movl %ecx, %esi
|
||||
0x49, 0x39, 0xf6, //0x00000187 cmpq %rsi, %r14
|
||||
0x0f, 0x96, 0xc2, //0x0000018a setbe %dl
|
||||
0x41, 0x38, 0xd4, //0x0000018d cmpb %dl, %r12b
|
||||
0x0f, 0x84, 0x5e, 0x00, 0x00, 0x00, //0x00000190 je LBB0_12
|
||||
0x45, 0x31, 0xed, //0x00000196 xorl %r13d, %r13d
|
||||
0x49, 0x39, 0xf6, //0x00000199 cmpq %rsi, %r14
|
||||
0x41, 0x0f, 0x96, 0xc5, //0x0000019c setbe %r13b
|
||||
0x41, 0x01, 0xc5, //0x000001a0 addl %eax, %r13d
|
||||
0x41, 0xff, 0xc3, //0x000001a3 incl %r11d
|
||||
0x41, 0x81, 0xfd, 0xa0, 0x86, 0x01, 0x00, //0x000001a6 cmpl $100000, %r13d
|
||||
0x0f, 0x83, 0xb0, 0x00, 0x00, 0x00, //0x000001ad jae LBB0_18
|
||||
//0x000001b3 LBB0_8
|
||||
0xb8, 0x01, 0x00, 0x00, 0x00, //0x000001b3 movl $1, %eax
|
||||
0x41, 0x83, 0xfd, 0x0a, //0x000001b8 cmpl $10, %r13d
|
||||
0x0f, 0x82, 0xd4, 0x00, 0x00, 0x00, //0x000001bc jb LBB0_22
|
||||
0xb8, 0x02, 0x00, 0x00, 0x00, //0x000001c2 movl $2, %eax
|
||||
0x41, 0x83, 0xfd, 0x64, //0x000001c7 cmpl $100, %r13d
|
||||
0x0f, 0x82, 0xc5, 0x00, 0x00, 0x00, //0x000001cb jb LBB0_22
|
||||
0xb8, 0x03, 0x00, 0x00, 0x00, //0x000001d1 movl $3, %eax
|
||||
0x41, 0x81, 0xfd, 0xe8, 0x03, 0x00, 0x00, //0x000001d6 cmpl $1000, %r13d
|
||||
0x0f, 0x82, 0xb3, 0x00, 0x00, 0x00, //0x000001dd jb LBB0_22
|
||||
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x000001e3 cmpl $10000, %r13d
|
||||
0xb8, 0x05, 0x00, 0x00, 0x00, //0x000001ea movl $5, %eax
|
||||
0xe9, 0x9f, 0x00, 0x00, 0x00, //0x000001ef jmp LBB0_21
|
||||
//0x000001f4 LBB0_12
|
||||
0x4d, 0x89, 0xd6, //0x000001f4 movq %r10, %r14
|
||||
0x49, 0xc1, 0xee, 0x02, //0x000001f7 shrq $2, %r14
|
||||
0x44, 0x89, 0xd6, //0x000001fb movl %r10d, %esi
|
||||
0x83, 0xe6, 0xfc, //0x000001fe andl $-4, %esi
|
||||
0x39, 0xf3, //0x00000201 cmpl %esi, %ebx
|
||||
0x0f, 0x96, 0xc2, //0x00000203 setbe %dl
|
||||
0x8d, 0x5e, 0x04, //0x00000206 leal $4(%rsi), %ebx
|
||||
0x39, 0xcb, //0x00000209 cmpl %ecx, %ebx
|
||||
0x0f, 0x96, 0xc0, //0x0000020b setbe %al
|
||||
0x38, 0xc2, //0x0000020e cmpb %al, %dl
|
||||
0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x00000210 je LBB0_15
|
||||
0x45, 0x31, 0xed, //0x00000216 xorl %r13d, %r13d
|
||||
0x39, 0xcb, //0x00000219 cmpl %ecx, %ebx
|
||||
0x41, 0x0f, 0x96, 0xc5, //0x0000021b setbe %r13b
|
||||
0xe9, 0x2f, 0x00, 0x00, 0x00, //0x0000021f jmp LBB0_17
|
||||
//0x00000224 LBB0_14
|
||||
0x41, 0xc6, 0x00, 0x30, //0x00000224 movb $48, (%r8)
|
||||
0x41, 0x29, 0xf8, //0x00000228 subl %edi, %r8d
|
||||
0x41, 0xff, 0xc0, //0x0000022b incl %r8d
|
||||
0xe9, 0x00, 0x0b, 0x00, 0x00, //0x0000022e jmp LBB0_138
|
||||
//0x00000233 LBB0_15
|
||||
0x83, 0xce, 0x02, //0x00000233 orl $2, %esi
|
||||
0x41, 0xbd, 0x01, 0x00, 0x00, 0x00, //0x00000236 movl $1, %r13d
|
||||
0x41, 0x39, 0xf7, //0x0000023c cmpl %esi, %r15d
|
||||
0x0f, 0x87, 0x0e, 0x00, 0x00, 0x00, //0x0000023f ja LBB0_17
|
||||
0x0f, 0x94, 0xc0, //0x00000245 sete %al
|
||||
0x41, 0xc0, 0xea, 0x02, //0x00000248 shrb $2, %r10b
|
||||
0x41, 0x20, 0xc2, //0x0000024c andb %al, %r10b
|
||||
0x45, 0x0f, 0xb6, 0xea, //0x0000024f movzbl %r10b, %r13d
|
||||
//0x00000253 LBB0_17
|
||||
0x45, 0x01, 0xf5, //0x00000253 addl %r14d, %r13d
|
||||
0x41, 0x81, 0xfd, 0xa0, 0x86, 0x01, 0x00, //0x00000256 cmpl $100000, %r13d
|
||||
0x0f, 0x82, 0x50, 0xff, 0xff, 0xff, //0x0000025d jb LBB0_8
|
||||
//0x00000263 LBB0_18
|
||||
0xb8, 0x06, 0x00, 0x00, 0x00, //0x00000263 movl $6, %eax
|
||||
0x41, 0x81, 0xfd, 0x40, 0x42, 0x0f, 0x00, //0x00000268 cmpl $1000000, %r13d
|
||||
0x0f, 0x82, 0x21, 0x00, 0x00, 0x00, //0x0000026f jb LBB0_22
|
||||
0xb8, 0x07, 0x00, 0x00, 0x00, //0x00000275 movl $7, %eax
|
||||
0x41, 0x81, 0xfd, 0x80, 0x96, 0x98, 0x00, //0x0000027a cmpl $10000000, %r13d
|
||||
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x00000281 jb LBB0_22
|
||||
0x41, 0x81, 0xfd, 0x00, 0xe1, 0xf5, 0x05, //0x00000287 cmpl $100000000, %r13d
|
||||
0xb8, 0x09, 0x00, 0x00, 0x00, //0x0000028e movl $9, %eax
|
||||
//0x00000293 LBB0_21
|
||||
0x83, 0xd8, 0x00, //0x00000293 sbbl $0, %eax
|
||||
//0x00000296 LBB0_22
|
||||
0x46, 0x8d, 0x3c, 0x18, //0x00000296 leal (%rax,%r11), %r15d
|
||||
0x42, 0x8d, 0x4c, 0x18, 0x05, //0x0000029a leal $5(%rax,%r11), %ecx
|
||||
0x83, 0xf9, 0x1b, //0x0000029f cmpl $27, %ecx
|
||||
0x0f, 0x82, 0x77, 0x00, 0x00, 0x00, //0x000002a2 jb LBB0_26
|
||||
0x89, 0xc0, //0x000002a8 movl %eax, %eax
|
||||
0x49, 0x8d, 0x5c, 0x00, 0x01, //0x000002aa leaq $1(%r8,%rax), %rbx
|
||||
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x000002af cmpl $10000, %r13d
|
||||
0x0f, 0x82, 0xd9, 0x00, 0x00, 0x00, //0x000002b6 jb LBB0_30
|
||||
0x44, 0x89, 0xe8, //0x000002bc movl %r13d, %eax
|
||||
0x41, 0xbb, 0x59, 0x17, 0xb7, 0xd1, //0x000002bf movl $3518437209, %r11d
|
||||
0x4c, 0x0f, 0xaf, 0xd8, //0x000002c5 imulq %rax, %r11
|
||||
0x49, 0xc1, 0xeb, 0x2d, //0x000002c9 shrq $45, %r11
|
||||
0x41, 0x69, 0xc3, 0xf0, 0xd8, 0xff, 0xff, //0x000002cd imull $-10000, %r11d, %eax
|
||||
0x44, 0x01, 0xe8, //0x000002d4 addl %r13d, %eax
|
||||
0x0f, 0x84, 0xb3, 0x04, 0x00, 0x00, //0x000002d7 je LBB0_62
|
||||
0x89, 0xc1, //0x000002dd movl %eax, %ecx
|
||||
0x48, 0x69, 0xc9, 0x1f, 0x85, 0xeb, 0x51, //0x000002df imulq $1374389535, %rcx, %rcx
|
||||
0x48, 0xc1, 0xe9, 0x25, //0x000002e6 shrq $37, %rcx
|
||||
0x6b, 0xd1, 0x64, //0x000002ea imull $100, %ecx, %edx
|
||||
0x29, 0xd0, //0x000002ed subl %edx, %eax
|
||||
0x48, 0x8d, 0x15, 0x6a, 0x0a, 0x00, 0x00, //0x000002ef leaq $2666(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x04, 0x42, //0x000002f6 movzwl (%rdx,%rax,2), %eax
|
||||
0x66, 0x89, 0x43, 0xfe, //0x000002fa movw %ax, $-2(%rbx)
|
||||
0x0f, 0xb7, 0x04, 0x4a, //0x000002fe movzwl (%rdx,%rcx,2), %eax
|
||||
0x66, 0x89, 0x43, 0xfc, //0x00000302 movw %ax, $-4(%rbx)
|
||||
0x45, 0x31, 0xc9, //0x00000306 xorl %r9d, %r9d
|
||||
0x48, 0x8d, 0x4b, 0xfc, //0x00000309 leaq $-4(%rbx), %rcx
|
||||
0x41, 0x83, 0xfb, 0x64, //0x0000030d cmpl $100, %r11d
|
||||
0x0f, 0x83, 0x91, 0x00, 0x00, 0x00, //0x00000311 jae LBB0_64
|
||||
//0x00000317 LBB0_31
|
||||
0x44, 0x89, 0xda, //0x00000317 movl %r11d, %edx
|
||||
0xe9, 0xd4, 0x00, 0x00, 0x00, //0x0000031a jmp LBB0_66
|
||||
//0x0000031f LBB0_26
|
||||
0x41, 0x89, 0xc4, //0x0000031f movl %eax, %r12d
|
||||
0x45, 0x85, 0xdb, //0x00000322 testl %r11d, %r11d
|
||||
0x0f, 0x88, 0x1d, 0x02, 0x00, 0x00, //0x00000325 js LBB0_38
|
||||
0x4b, 0x8d, 0x34, 0x20, //0x0000032b leaq (%r8,%r12), %rsi
|
||||
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x0000032f cmpl $10000, %r13d
|
||||
0x0f, 0x82, 0xa7, 0x02, 0x00, 0x00, //0x00000336 jb LBB0_43
|
||||
0x44, 0x89, 0xe8, //0x0000033c movl %r13d, %eax
|
||||
0xb9, 0x59, 0x17, 0xb7, 0xd1, //0x0000033f movl $3518437209, %ecx
|
||||
0x48, 0x0f, 0xaf, 0xc8, //0x00000344 imulq %rax, %rcx
|
||||
0x48, 0xc1, 0xe9, 0x2d, //0x00000348 shrq $45, %rcx
|
||||
0x69, 0xc1, 0xf0, 0xd8, 0xff, 0xff, //0x0000034c imull $-10000, %ecx, %eax
|
||||
0x44, 0x01, 0xe8, //0x00000352 addl %r13d, %eax
|
||||
0x48, 0x69, 0xd0, 0x1f, 0x85, 0xeb, 0x51, //0x00000355 imulq $1374389535, %rax, %rdx
|
||||
0x48, 0xc1, 0xea, 0x25, //0x0000035c shrq $37, %rdx
|
||||
0x6b, 0xda, 0x64, //0x00000360 imull $100, %edx, %ebx
|
||||
0x29, 0xd8, //0x00000363 subl %ebx, %eax
|
||||
0x48, 0x8d, 0x1d, 0xf4, 0x09, 0x00, 0x00, //0x00000365 leaq $2548(%rip), %rbx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x04, 0x43, //0x0000036c movzwl (%rbx,%rax,2), %eax
|
||||
0x66, 0x89, 0x46, 0xfe, //0x00000370 movw %ax, $-2(%rsi)
|
||||
0x48, 0x8d, 0x46, 0xfc, //0x00000374 leaq $-4(%rsi), %rax
|
||||
0x0f, 0xb7, 0x14, 0x53, //0x00000378 movzwl (%rbx,%rdx,2), %edx
|
||||
0x66, 0x89, 0x56, 0xfc, //0x0000037c movw %dx, $-4(%rsi)
|
||||
0x41, 0x89, 0xcd, //0x00000380 movl %ecx, %r13d
|
||||
0x41, 0x83, 0xfd, 0x64, //0x00000383 cmpl $100, %r13d
|
||||
0x0f, 0x83, 0x63, 0x02, 0x00, 0x00, //0x00000387 jae LBB0_44
|
||||
//0x0000038d LBB0_29
|
||||
0x44, 0x89, 0xe9, //0x0000038d movl %r13d, %ecx
|
||||
0xe9, 0x9e, 0x02, 0x00, 0x00, //0x00000390 jmp LBB0_46
|
||||
//0x00000395 LBB0_30
|
||||
0x45, 0x31, 0xc9, //0x00000395 xorl %r9d, %r9d
|
||||
0x48, 0x89, 0xd9, //0x00000398 movq %rbx, %rcx
|
||||
0x45, 0x89, 0xeb, //0x0000039b movl %r13d, %r11d
|
||||
0x41, 0x83, 0xfb, 0x64, //0x0000039e cmpl $100, %r11d
|
||||
0x0f, 0x82, 0x6f, 0xff, 0xff, 0xff, //0x000003a2 jb LBB0_31
|
||||
//0x000003a8 LBB0_64
|
||||
0x48, 0xff, 0xc9, //0x000003a8 decq %rcx
|
||||
0x4c, 0x8d, 0x15, 0xae, 0x09, 0x00, 0x00, //0x000003ab leaq $2478(%rip), %r10 /* _Digits+0(%rip) */
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000003b2 .p2align 4, 0x90
|
||||
//0x000003c0 LBB0_65
|
||||
0x44, 0x89, 0xda, //0x000003c0 movl %r11d, %edx
|
||||
0x48, 0x69, 0xd2, 0x1f, 0x85, 0xeb, 0x51, //0x000003c3 imulq $1374389535, %rdx, %rdx
|
||||
0x48, 0xc1, 0xea, 0x25, //0x000003ca shrq $37, %rdx
|
||||
0x6b, 0xc2, 0x64, //0x000003ce imull $100, %edx, %eax
|
||||
0x44, 0x89, 0xde, //0x000003d1 movl %r11d, %esi
|
||||
0x29, 0xc6, //0x000003d4 subl %eax, %esi
|
||||
0x41, 0x0f, 0xb7, 0x04, 0x72, //0x000003d6 movzwl (%r10,%rsi,2), %eax
|
||||
0x66, 0x89, 0x41, 0xff, //0x000003db movw %ax, $-1(%rcx)
|
||||
0x48, 0x83, 0xc1, 0xfe, //0x000003df addq $-2, %rcx
|
||||
0x41, 0x81, 0xfb, 0x0f, 0x27, 0x00, 0x00, //0x000003e3 cmpl $9999, %r11d
|
||||
0x41, 0x89, 0xd3, //0x000003ea movl %edx, %r11d
|
||||
0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x000003ed ja LBB0_65
|
||||
//0x000003f3 LBB0_66
|
||||
0x49, 0x8d, 0x70, 0x01, //0x000003f3 leaq $1(%r8), %rsi
|
||||
0x83, 0xfa, 0x0a, //0x000003f7 cmpl $10, %edx
|
||||
0x0f, 0x82, 0x1d, 0x00, 0x00, 0x00, //0x000003fa jb LBB0_68
|
||||
0x89, 0xd0, //0x00000400 movl %edx, %eax
|
||||
0x48, 0x8d, 0x0d, 0x57, 0x09, 0x00, 0x00, //0x00000402 leaq $2391(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x41, //0x00000409 movb (%rcx,%rax,2), %dl
|
||||
0x8a, 0x44, 0x41, 0x01, //0x0000040c movb $1(%rcx,%rax,2), %al
|
||||
0x41, 0x88, 0x50, 0x01, //0x00000410 movb %dl, $1(%r8)
|
||||
0x41, 0x88, 0x40, 0x02, //0x00000414 movb %al, $2(%r8)
|
||||
0xe9, 0x05, 0x00, 0x00, 0x00, //0x00000418 jmp LBB0_69
|
||||
//0x0000041d LBB0_68
|
||||
0x80, 0xc2, 0x30, //0x0000041d addb $48, %dl
|
||||
0x88, 0x16, //0x00000420 movb %dl, (%rsi)
|
||||
//0x00000422 LBB0_69
|
||||
0x4c, 0x29, 0xcb, //0x00000422 subq %r9, %rbx
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000425 .p2align 4, 0x90
|
||||
//0x00000430 LBB0_70
|
||||
0x80, 0x7b, 0xff, 0x30, //0x00000430 cmpb $48, $-1(%rbx)
|
||||
0x48, 0x8d, 0x5b, 0xff, //0x00000434 leaq $-1(%rbx), %rbx
|
||||
0x0f, 0x84, 0xf2, 0xff, 0xff, 0xff, //0x00000438 je LBB0_70
|
||||
0x41, 0x88, 0x10, //0x0000043e movb %dl, (%r8)
|
||||
0x48, 0x8d, 0x43, 0x01, //0x00000441 leaq $1(%rbx), %rax
|
||||
0x48, 0x89, 0xc1, //0x00000445 movq %rax, %rcx
|
||||
0x48, 0x29, 0xf1, //0x00000448 subq %rsi, %rcx
|
||||
0x48, 0x83, 0xf9, 0x02, //0x0000044b cmpq $2, %rcx
|
||||
0x0f, 0x8c, 0x06, 0x00, 0x00, 0x00, //0x0000044f jl LBB0_73
|
||||
0xc6, 0x06, 0x2e, //0x00000455 movb $46, (%rsi)
|
||||
0x48, 0x89, 0xc3, //0x00000458 movq %rax, %rbx
|
||||
//0x0000045b LBB0_73
|
||||
0xc6, 0x03, 0x65, //0x0000045b movb $101, (%rbx)
|
||||
0x45, 0x85, 0xff, //0x0000045e testl %r15d, %r15d
|
||||
0x0f, 0x8e, 0x41, 0x01, 0x00, 0x00, //0x00000461 jle LBB0_76
|
||||
0x41, 0xff, 0xcf, //0x00000467 decl %r15d
|
||||
0xc6, 0x43, 0x01, 0x2b, //0x0000046a movb $43, $1(%rbx)
|
||||
0x44, 0x89, 0xf8, //0x0000046e movl %r15d, %eax
|
||||
0x83, 0xf8, 0x64, //0x00000471 cmpl $100, %eax
|
||||
0x0f, 0x8c, 0x43, 0x01, 0x00, 0x00, //0x00000474 jl LBB0_77
|
||||
//0x0000047a LBB0_75
|
||||
0x89, 0xc1, //0x0000047a movl %eax, %ecx
|
||||
0xba, 0xcd, 0xcc, 0xcc, 0xcc, //0x0000047c movl $3435973837, %edx
|
||||
0x48, 0x0f, 0xaf, 0xd1, //0x00000481 imulq %rcx, %rdx
|
||||
0x48, 0xc1, 0xea, 0x23, //0x00000485 shrq $35, %rdx
|
||||
0x8d, 0x0c, 0x12, //0x00000489 leal (%rdx,%rdx), %ecx
|
||||
0x8d, 0x0c, 0x89, //0x0000048c leal (%rcx,%rcx,4), %ecx
|
||||
0x29, 0xc8, //0x0000048f subl %ecx, %eax
|
||||
0x48, 0x8d, 0x0d, 0xc8, 0x08, 0x00, 0x00, //0x00000491 leaq $2248(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x0c, 0x51, //0x00000498 movzwl (%rcx,%rdx,2), %ecx
|
||||
0x66, 0x89, 0x4b, 0x02, //0x0000049c movw %cx, $2(%rbx)
|
||||
0x0c, 0x30, //0x000004a0 orb $48, %al
|
||||
0x88, 0x43, 0x04, //0x000004a2 movb %al, $4(%rbx)
|
||||
0x48, 0x83, 0xc3, 0x05, //0x000004a5 addq $5, %rbx
|
||||
0x49, 0x89, 0xd8, //0x000004a9 movq %rbx, %r8
|
||||
0xe9, 0x7f, 0x08, 0x00, 0x00, //0x000004ac jmp LBB0_137
|
||||
//0x000004b1 LBB0_32
|
||||
0xd3, 0xee, //0x000004b1 shrl %cl, %esi
|
||||
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x000004b3 cmpl $100000, %esi
|
||||
0x0f, 0x82, 0x1a, 0x02, 0x00, 0x00, //0x000004b9 jb LBB0_52
|
||||
0xb8, 0x06, 0x00, 0x00, 0x00, //0x000004bf movl $6, %eax
|
||||
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x000004c4 cmpl $1000000, %esi
|
||||
0x0f, 0x82, 0x20, 0x00, 0x00, 0x00, //0x000004ca jb LBB0_36
|
||||
0xb8, 0x07, 0x00, 0x00, 0x00, //0x000004d0 movl $7, %eax
|
||||
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x000004d5 cmpl $10000000, %esi
|
||||
0x0f, 0x82, 0x0f, 0x00, 0x00, 0x00, //0x000004db jb LBB0_36
|
||||
0x81, 0xfe, 0x00, 0xe1, 0xf5, 0x05, //0x000004e1 cmpl $100000000, %esi
|
||||
0xb8, 0x09, 0x00, 0x00, 0x00, //0x000004e7 movl $9, %eax
|
||||
0x48, 0x83, 0xd8, 0x00, //0x000004ec sbbq $0, %rax
|
||||
//0x000004f0 LBB0_36
|
||||
0x4c, 0x01, 0xc0, //0x000004f0 addq %r8, %rax
|
||||
//0x000004f3 LBB0_37
|
||||
0x89, 0xf1, //0x000004f3 movl %esi, %ecx
|
||||
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x000004f5 movl $3518437209, %edx
|
||||
0x48, 0x0f, 0xaf, 0xd1, //0x000004fa imulq %rcx, %rdx
|
||||
0x48, 0xc1, 0xea, 0x2d, //0x000004fe shrq $45, %rdx
|
||||
0x69, 0xca, 0xf0, 0xd8, 0xff, 0xff, //0x00000502 imull $-10000, %edx, %ecx
|
||||
0x01, 0xf1, //0x00000508 addl %esi, %ecx
|
||||
0x48, 0x69, 0xf1, 0x1f, 0x85, 0xeb, 0x51, //0x0000050a imulq $1374389535, %rcx, %rsi
|
||||
0x48, 0xc1, 0xee, 0x25, //0x00000511 shrq $37, %rsi
|
||||
0x6b, 0xde, 0x64, //0x00000515 imull $100, %esi, %ebx
|
||||
0x29, 0xd9, //0x00000518 subl %ebx, %ecx
|
||||
0x48, 0x8d, 0x1d, 0x3f, 0x08, 0x00, 0x00, //0x0000051a leaq $2111(%rip), %rbx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x0c, 0x4b, //0x00000521 movzwl (%rbx,%rcx,2), %ecx
|
||||
0x66, 0x89, 0x48, 0xfe, //0x00000525 movw %cx, $-2(%rax)
|
||||
0x0f, 0xb7, 0x0c, 0x73, //0x00000529 movzwl (%rbx,%rsi,2), %ecx
|
||||
0x66, 0x89, 0x48, 0xfc, //0x0000052d movw %cx, $-4(%rax)
|
||||
0x49, 0x89, 0xc1, //0x00000531 movq %rax, %r9
|
||||
0x48, 0x83, 0xc0, 0xfc, //0x00000534 addq $-4, %rax
|
||||
0x89, 0xd6, //0x00000538 movl %edx, %esi
|
||||
0x83, 0xfe, 0x64, //0x0000053a cmpl $100, %esi
|
||||
0x0f, 0x83, 0xd5, 0x01, 0x00, 0x00, //0x0000053d jae LBB0_56
|
||||
0xe9, 0x17, 0x02, 0x00, 0x00, //0x00000543 jmp LBB0_58
|
||||
//0x00000548 LBB0_38
|
||||
0x45, 0x85, 0xff, //0x00000548 testl %r15d, %r15d
|
||||
0x0f, 0x8f, 0x90, 0x04, 0x00, 0x00, //0x0000054b jg LBB0_98
|
||||
0x66, 0x41, 0xc7, 0x00, 0x30, 0x2e, //0x00000551 movw $11824, (%r8)
|
||||
0x49, 0x83, 0xc0, 0x02, //0x00000557 addq $2, %r8
|
||||
0x45, 0x85, 0xff, //0x0000055b testl %r15d, %r15d
|
||||
0x0f, 0x89, 0x7d, 0x04, 0x00, 0x00, //0x0000055e jns LBB0_98
|
||||
0x31, 0xf6, //0x00000564 xorl %esi, %esi
|
||||
0x41, 0x83, 0xff, 0x80, //0x00000566 cmpl $-128, %r15d
|
||||
0x0f, 0x87, 0x5a, 0x04, 0x00, 0x00, //0x0000056a ja LBB0_96
|
||||
0x45, 0x89, 0xfa, //0x00000570 movl %r15d, %r10d
|
||||
0x41, 0xf7, 0xd2, //0x00000573 notl %r10d
|
||||
0x49, 0xff, 0xc2, //0x00000576 incq %r10
|
||||
0x4c, 0x89, 0xd6, //0x00000579 movq %r10, %rsi
|
||||
0x48, 0x83, 0xe6, 0x80, //0x0000057c andq $-128, %rsi
|
||||
0x48, 0x8d, 0x46, 0x80, //0x00000580 leaq $-128(%rsi), %rax
|
||||
0x48, 0x89, 0xc1, //0x00000584 movq %rax, %rcx
|
||||
0x48, 0xc1, 0xe9, 0x07, //0x00000587 shrq $7, %rcx
|
||||
0x48, 0xff, 0xc1, //0x0000058b incq %rcx
|
||||
0x41, 0x89, 0xcb, //0x0000058e movl %ecx, %r11d
|
||||
0x41, 0x83, 0xe3, 0x03, //0x00000591 andl $3, %r11d
|
||||
0x48, 0x3d, 0x80, 0x01, 0x00, 0x00, //0x00000595 cmpq $384, %rax
|
||||
0x0f, 0x83, 0x38, 0x03, 0x00, 0x00, //0x0000059b jae LBB0_90
|
||||
0x31, 0xdb, //0x000005a1 xorl %ebx, %ebx
|
||||
0xe9, 0xda, 0x03, 0x00, 0x00, //0x000005a3 jmp LBB0_92
|
||||
//0x000005a8 LBB0_76
|
||||
0xc6, 0x43, 0x01, 0x2d, //0x000005a8 movb $45, $1(%rbx)
|
||||
0xb8, 0x01, 0x00, 0x00, 0x00, //0x000005ac movl $1, %eax
|
||||
0x44, 0x29, 0xf8, //0x000005b1 subl %r15d, %eax
|
||||
0x83, 0xf8, 0x64, //0x000005b4 cmpl $100, %eax
|
||||
0x0f, 0x8d, 0xbd, 0xfe, 0xff, 0xff, //0x000005b7 jge LBB0_75
|
||||
//0x000005bd LBB0_77
|
||||
0x83, 0xf8, 0x0a, //0x000005bd cmpl $10, %eax
|
||||
0x0f, 0x8c, 0x02, 0x01, 0x00, 0x00, //0x000005c0 jl LBB0_79
|
||||
0x48, 0x98, //0x000005c6 cltq
|
||||
0x48, 0x8d, 0x0d, 0x91, 0x07, 0x00, 0x00, //0x000005c8 leaq $1937(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x04, 0x41, //0x000005cf movzwl (%rcx,%rax,2), %eax
|
||||
0x66, 0x89, 0x43, 0x02, //0x000005d3 movw %ax, $2(%rbx)
|
||||
0x48, 0x83, 0xc3, 0x04, //0x000005d7 addq $4, %rbx
|
||||
0x49, 0x89, 0xd8, //0x000005db movq %rbx, %r8
|
||||
0xe9, 0x4d, 0x07, 0x00, 0x00, //0x000005de jmp LBB0_137
|
||||
//0x000005e3 LBB0_43
|
||||
0x48, 0x89, 0xf0, //0x000005e3 movq %rsi, %rax
|
||||
0x41, 0x83, 0xfd, 0x64, //0x000005e6 cmpl $100, %r13d
|
||||
0x0f, 0x82, 0x9d, 0xfd, 0xff, 0xff, //0x000005ea jb LBB0_29
|
||||
//0x000005f0 LBB0_44
|
||||
0x48, 0xff, 0xc8, //0x000005f0 decq %rax
|
||||
0x4c, 0x8d, 0x15, 0x66, 0x07, 0x00, 0x00, //0x000005f3 leaq $1894(%rip), %r10 /* _Digits+0(%rip) */
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000005fa .p2align 4, 0x90
|
||||
//0x00000600 LBB0_45
|
||||
0x44, 0x89, 0xe9, //0x00000600 movl %r13d, %ecx
|
||||
0x48, 0x69, 0xc9, 0x1f, 0x85, 0xeb, 0x51, //0x00000603 imulq $1374389535, %rcx, %rcx
|
||||
0x48, 0xc1, 0xe9, 0x25, //0x0000060a shrq $37, %rcx
|
||||
0x6b, 0xd9, 0x64, //0x0000060e imull $100, %ecx, %ebx
|
||||
0x44, 0x89, 0xea, //0x00000611 movl %r13d, %edx
|
||||
0x29, 0xda, //0x00000614 subl %ebx, %edx
|
||||
0x41, 0x0f, 0xb7, 0x14, 0x52, //0x00000616 movzwl (%r10,%rdx,2), %edx
|
||||
0x66, 0x89, 0x50, 0xff, //0x0000061b movw %dx, $-1(%rax)
|
||||
0x48, 0x83, 0xc0, 0xfe, //0x0000061f addq $-2, %rax
|
||||
0x41, 0x81, 0xfd, 0x0f, 0x27, 0x00, 0x00, //0x00000623 cmpl $9999, %r13d
|
||||
0x41, 0x89, 0xcd, //0x0000062a movl %ecx, %r13d
|
||||
0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x0000062d ja LBB0_45
|
||||
//0x00000633 LBB0_46
|
||||
0x49, 0x63, 0xc7, //0x00000633 movslq %r15d, %rax
|
||||
0x83, 0xf9, 0x0a, //0x00000636 cmpl $10, %ecx
|
||||
0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x00000639 jb LBB0_48
|
||||
0x89, 0xc9, //0x0000063f movl %ecx, %ecx
|
||||
0x48, 0x8d, 0x15, 0x18, 0x07, 0x00, 0x00, //0x00000641 leaq $1816(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x0c, 0x4a, //0x00000648 movzwl (%rdx,%rcx,2), %ecx
|
||||
0x66, 0x41, 0x89, 0x08, //0x0000064c movw %cx, (%r8)
|
||||
0x49, 0x01, 0xc0, //0x00000650 addq %rax, %r8
|
||||
0x49, 0x39, 0xc4, //0x00000653 cmpq %rax, %r12
|
||||
0x0f, 0x8c, 0x17, 0x00, 0x00, 0x00, //0x00000656 jl LBB0_49
|
||||
0xe9, 0xcf, 0x06, 0x00, 0x00, //0x0000065c jmp LBB0_137
|
||||
//0x00000661 LBB0_48
|
||||
0x80, 0xc1, 0x30, //0x00000661 addb $48, %cl
|
||||
0x41, 0x88, 0x08, //0x00000664 movb %cl, (%r8)
|
||||
0x49, 0x01, 0xc0, //0x00000667 addq %rax, %r8
|
||||
0x49, 0x39, 0xc4, //0x0000066a cmpq %rax, %r12
|
||||
0x0f, 0x8d, 0xbd, 0x06, 0x00, 0x00, //0x0000066d jge LBB0_137
|
||||
//0x00000673 LBB0_49
|
||||
0x4b, 0x8d, 0x04, 0x21, //0x00000673 leaq (%r9,%r12), %rax
|
||||
0x4c, 0x8d, 0x5c, 0x07, 0x01, //0x00000677 leaq $1(%rdi,%rax), %r11
|
||||
0x4d, 0x39, 0xc3, //0x0000067c cmpq %r8, %r11
|
||||
0x4d, 0x0f, 0x46, 0xd8, //0x0000067f cmovbeq %r8, %r11
|
||||
0x4a, 0x8d, 0x0c, 0x0f, //0x00000683 leaq (%rdi,%r9), %rcx
|
||||
0x4c, 0x01, 0xe1, //0x00000687 addq %r12, %rcx
|
||||
0x49, 0x29, 0xcb, //0x0000068a subq %rcx, %r11
|
||||
0x49, 0x81, 0xfb, 0x80, 0x00, 0x00, 0x00, //0x0000068d cmpq $128, %r11
|
||||
0x0f, 0x82, 0x06, 0x02, 0x00, 0x00, //0x00000694 jb LBB0_87
|
||||
0x4d, 0x89, 0xda, //0x0000069a movq %r11, %r10
|
||||
0x49, 0x83, 0xe2, 0x80, //0x0000069d andq $-128, %r10
|
||||
0x49, 0x8d, 0x4a, 0x80, //0x000006a1 leaq $-128(%r10), %rcx
|
||||
0x48, 0x89, 0xcb, //0x000006a5 movq %rcx, %rbx
|
||||
0x48, 0xc1, 0xeb, 0x07, //0x000006a8 shrq $7, %rbx
|
||||
0x48, 0xff, 0xc3, //0x000006ac incq %rbx
|
||||
0x89, 0xda, //0x000006af movl %ebx, %edx
|
||||
0x83, 0xe2, 0x03, //0x000006b1 andl $3, %edx
|
||||
0x48, 0x81, 0xf9, 0x80, 0x01, 0x00, 0x00, //0x000006b4 cmpq $384, %rcx
|
||||
0x0f, 0x83, 0xe8, 0x00, 0x00, 0x00, //0x000006bb jae LBB0_80
|
||||
0x31, 0xc0, //0x000006c1 xorl %eax, %eax
|
||||
0xe9, 0x88, 0x01, 0x00, 0x00, //0x000006c3 jmp LBB0_82
|
||||
//0x000006c8 LBB0_79
|
||||
0x04, 0x30, //0x000006c8 addb $48, %al
|
||||
0x88, 0x43, 0x02, //0x000006ca movb %al, $2(%rbx)
|
||||
0x48, 0x83, 0xc3, 0x03, //0x000006cd addq $3, %rbx
|
||||
0x49, 0x89, 0xd8, //0x000006d1 movq %rbx, %r8
|
||||
0xe9, 0x57, 0x06, 0x00, 0x00, //0x000006d4 jmp LBB0_137
|
||||
//0x000006d9 LBB0_52
|
||||
0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, //0x000006d9 movl $1, %r9d
|
||||
0x83, 0xfe, 0x0a, //0x000006df cmpl $10, %esi
|
||||
0x0f, 0x82, 0x21, 0x00, 0x00, 0x00, //0x000006e2 jb LBB0_55
|
||||
0x41, 0xb9, 0x02, 0x00, 0x00, 0x00, //0x000006e8 movl $2, %r9d
|
||||
0x83, 0xfe, 0x64, //0x000006ee cmpl $100, %esi
|
||||
0x0f, 0x82, 0x12, 0x00, 0x00, 0x00, //0x000006f1 jb LBB0_55
|
||||
0x41, 0xb9, 0x03, 0x00, 0x00, 0x00, //0x000006f7 movl $3, %r9d
|
||||
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x000006fd cmpl $1000, %esi
|
||||
0x0f, 0x83, 0xab, 0x01, 0x00, 0x00, //0x00000703 jae LBB0_88
|
||||
//0x00000709 LBB0_55
|
||||
0x4d, 0x01, 0xc1, //0x00000709 addq %r8, %r9
|
||||
0x4c, 0x89, 0xc8, //0x0000070c movq %r9, %rax
|
||||
0x83, 0xfe, 0x64, //0x0000070f cmpl $100, %esi
|
||||
0x0f, 0x82, 0x47, 0x00, 0x00, 0x00, //0x00000712 jb LBB0_58
|
||||
//0x00000718 LBB0_56
|
||||
0x48, 0xff, 0xc8, //0x00000718 decq %rax
|
||||
0x4c, 0x8d, 0x15, 0x3e, 0x06, 0x00, 0x00, //0x0000071b leaq $1598(%rip), %r10 /* _Digits+0(%rip) */
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000722 .p2align 4, 0x90
|
||||
//0x00000730 LBB0_57
|
||||
0x89, 0xf3, //0x00000730 movl %esi, %ebx
|
||||
0x89, 0xf6, //0x00000732 movl %esi, %esi
|
||||
0x48, 0x69, 0xf6, 0x1f, 0x85, 0xeb, 0x51, //0x00000734 imulq $1374389535, %rsi, %rsi
|
||||
0x48, 0xc1, 0xee, 0x25, //0x0000073b shrq $37, %rsi
|
||||
0x6b, 0xce, 0x64, //0x0000073f imull $100, %esi, %ecx
|
||||
0x89, 0xda, //0x00000742 movl %ebx, %edx
|
||||
0x29, 0xca, //0x00000744 subl %ecx, %edx
|
||||
0x41, 0x0f, 0xb7, 0x0c, 0x52, //0x00000746 movzwl (%r10,%rdx,2), %ecx
|
||||
0x66, 0x89, 0x48, 0xff, //0x0000074b movw %cx, $-1(%rax)
|
||||
0x48, 0x83, 0xc0, 0xfe, //0x0000074f addq $-2, %rax
|
||||
0x81, 0xfb, 0x0f, 0x27, 0x00, 0x00, //0x00000753 cmpl $9999, %ebx
|
||||
0x0f, 0x87, 0xd1, 0xff, 0xff, 0xff, //0x00000759 ja LBB0_57
|
||||
//0x0000075f LBB0_58
|
||||
0x83, 0xfe, 0x0a, //0x0000075f cmpl $10, %esi
|
||||
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000762 jb LBB0_60
|
||||
0x89, 0xf0, //0x00000768 movl %esi, %eax
|
||||
0x48, 0x8d, 0x0d, 0xef, 0x05, 0x00, 0x00, //0x0000076a leaq $1519(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x04, 0x41, //0x00000771 movzwl (%rcx,%rax,2), %eax
|
||||
0x66, 0x41, 0x89, 0x00, //0x00000775 movw %ax, (%r8)
|
||||
0xe9, 0x07, 0x00, 0x00, 0x00, //0x00000779 jmp LBB0_61
|
||||
//0x0000077e LBB0_60
|
||||
0x40, 0x80, 0xc6, 0x30, //0x0000077e addb $48, %sil
|
||||
0x41, 0x88, 0x30, //0x00000782 movb %sil, (%r8)
|
||||
//0x00000785 LBB0_61
|
||||
0x41, 0x29, 0xf9, //0x00000785 subl %edi, %r9d
|
||||
0x45, 0x89, 0xc8, //0x00000788 movl %r9d, %r8d
|
||||
0xe9, 0xa3, 0x05, 0x00, 0x00, //0x0000078b jmp LBB0_138
|
||||
//0x00000790 LBB0_62
|
||||
0x41, 0xb9, 0x04, 0x00, 0x00, 0x00, //0x00000790 movl $4, %r9d
|
||||
0x48, 0x8d, 0x4b, 0xfc, //0x00000796 leaq $-4(%rbx), %rcx
|
||||
0x41, 0x83, 0xfb, 0x64, //0x0000079a cmpl $100, %r11d
|
||||
0x0f, 0x82, 0x73, 0xfb, 0xff, 0xff, //0x0000079e jb LBB0_31
|
||||
0xe9, 0xff, 0xfb, 0xff, 0xff, //0x000007a4 jmp LBB0_64
|
||||
//0x000007a9 LBB0_80
|
||||
0x48, 0x29, 0xd3, //0x000007a9 subq %rdx, %rbx
|
||||
0x48, 0x8d, 0x8c, 0x07, 0xe0, 0x01, 0x00, 0x00, //0x000007ac leaq $480(%rdi,%rax), %rcx
|
||||
0x31, 0xc0, //0x000007b4 xorl %eax, %eax
|
||||
0xc5, 0xfe, 0x6f, 0x05, 0x42, 0xf8, 0xff, 0xff, //0x000007b6 vmovdqu $-1982(%rip), %ymm0 /* LCPI0_0+0(%rip) */
|
||||
0x90, 0x90, //0x000007be .p2align 4, 0x90
|
||||
//0x000007c0 LBB0_81
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x20, 0xfe, 0xff, 0xff, //0x000007c0 vmovdqu %ymm0, $-480(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x40, 0xfe, 0xff, 0xff, //0x000007c9 vmovdqu %ymm0, $-448(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x60, 0xfe, 0xff, 0xff, //0x000007d2 vmovdqu %ymm0, $-416(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x80, 0xfe, 0xff, 0xff, //0x000007db vmovdqu %ymm0, $-384(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0xa0, 0xfe, 0xff, 0xff, //0x000007e4 vmovdqu %ymm0, $-352(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0xc0, 0xfe, 0xff, 0xff, //0x000007ed vmovdqu %ymm0, $-320(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0xe0, 0xfe, 0xff, 0xff, //0x000007f6 vmovdqu %ymm0, $-288(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x00, 0xff, 0xff, 0xff, //0x000007ff vmovdqu %ymm0, $-256(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x20, 0xff, 0xff, 0xff, //0x00000808 vmovdqu %ymm0, $-224(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x40, 0xff, 0xff, 0xff, //0x00000811 vmovdqu %ymm0, $-192(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x01, 0x60, 0xff, 0xff, 0xff, //0x0000081a vmovdqu %ymm0, $-160(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0x80, //0x00000823 vmovdqu %ymm0, $-128(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0xa0, //0x00000829 vmovdqu %ymm0, $-96(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0xc0, //0x0000082f vmovdqu %ymm0, $-64(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x01, 0xe0, //0x00000835 vmovdqu %ymm0, $-32(%rcx,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x04, 0x01, //0x0000083b vmovdqu %ymm0, (%rcx,%rax)
|
||||
0x48, 0x05, 0x00, 0x02, 0x00, 0x00, //0x00000840 addq $512, %rax
|
||||
0x48, 0x83, 0xc3, 0xfc, //0x00000846 addq $-4, %rbx
|
||||
0x0f, 0x85, 0x70, 0xff, 0xff, 0xff, //0x0000084a jne LBB0_81
|
||||
//0x00000850 LBB0_82
|
||||
0x48, 0x85, 0xd2, //0x00000850 testq %rdx, %rdx
|
||||
0x0f, 0x84, 0x37, 0x00, 0x00, 0x00, //0x00000853 je LBB0_85
|
||||
0x4c, 0x01, 0xc8, //0x00000859 addq %r9, %rax
|
||||
0x4c, 0x01, 0xe0, //0x0000085c addq %r12, %rax
|
||||
0x48, 0x8d, 0x44, 0x07, 0x60, //0x0000085f leaq $96(%rdi,%rax), %rax
|
||||
0x48, 0xf7, 0xda, //0x00000864 negq %rdx
|
||||
0xc5, 0xfe, 0x6f, 0x05, 0x91, 0xf7, 0xff, 0xff, //0x00000867 vmovdqu $-2159(%rip), %ymm0 /* LCPI0_0+0(%rip) */
|
||||
0x90, //0x0000086f .p2align 4, 0x90
|
||||
//0x00000870 LBB0_84
|
||||
0xc5, 0xfe, 0x7f, 0x40, 0xa0, //0x00000870 vmovdqu %ymm0, $-96(%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x40, 0xc0, //0x00000875 vmovdqu %ymm0, $-64(%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x40, 0xe0, //0x0000087a vmovdqu %ymm0, $-32(%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x00, //0x0000087f vmovdqu %ymm0, (%rax)
|
||||
0x48, 0x83, 0xe8, 0x80, //0x00000883 subq $-128, %rax
|
||||
0x48, 0xff, 0xc2, //0x00000887 incq %rdx
|
||||
0x0f, 0x85, 0xe0, 0xff, 0xff, 0xff, //0x0000088a jne LBB0_84
|
||||
//0x00000890 LBB0_85
|
||||
0x4d, 0x39, 0xda, //0x00000890 cmpq %r11, %r10
|
||||
0x0f, 0x84, 0x97, 0x04, 0x00, 0x00, //0x00000893 je LBB0_137
|
||||
0x4c, 0x01, 0xd6, //0x00000899 addq %r10, %rsi
|
||||
0x90, 0x90, 0x90, 0x90, //0x0000089c .p2align 4, 0x90
|
||||
//0x000008a0 LBB0_87
|
||||
0xc6, 0x06, 0x30, //0x000008a0 movb $48, (%rsi)
|
||||
0x48, 0xff, 0xc6, //0x000008a3 incq %rsi
|
||||
0x4c, 0x39, 0xc6, //0x000008a6 cmpq %r8, %rsi
|
||||
0x0f, 0x82, 0xf1, 0xff, 0xff, 0xff, //0x000008a9 jb LBB0_87
|
||||
0xe9, 0x7c, 0x04, 0x00, 0x00, //0x000008af jmp LBB0_137
|
||||
//0x000008b4 LBB0_88
|
||||
0x81, 0xfe, 0x10, 0x27, 0x00, 0x00, //0x000008b4 cmpl $10000, %esi
|
||||
0x4c, 0x89, 0xc0, //0x000008ba movq %r8, %rax
|
||||
0x48, 0x83, 0xd8, 0x00, //0x000008bd sbbq $0, %rax
|
||||
0x48, 0x83, 0xc0, 0x05, //0x000008c1 addq $5, %rax
|
||||
0x81, 0xfe, 0x10, 0x27, 0x00, 0x00, //0x000008c5 cmpl $10000, %esi
|
||||
0x0f, 0x83, 0x22, 0xfc, 0xff, 0xff, //0x000008cb jae LBB0_37
|
||||
0x49, 0x89, 0xc1, //0x000008d1 movq %rax, %r9
|
||||
0xe9, 0x3f, 0xfe, 0xff, 0xff, //0x000008d4 jmp LBB0_56
|
||||
//0x000008d9 LBB0_90
|
||||
0x49, 0x8d, 0x84, 0x39, 0xe2, 0x01, 0x00, 0x00, //0x000008d9 leaq $482(%r9,%rdi), %rax
|
||||
0x4d, 0x89, 0xde, //0x000008e1 movq %r11, %r14
|
||||
0x49, 0x29, 0xce, //0x000008e4 subq %rcx, %r14
|
||||
0x31, 0xdb, //0x000008e7 xorl %ebx, %ebx
|
||||
0xc5, 0xfe, 0x6f, 0x05, 0x0f, 0xf7, 0xff, 0xff, //0x000008e9 vmovdqu $-2289(%rip), %ymm0 /* LCPI0_0+0(%rip) */
|
||||
//0x000008f1 LBB0_91
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x20, 0xfe, 0xff, 0xff, //0x000008f1 vmovdqu %ymm0, $-480(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x40, 0xfe, 0xff, 0xff, //0x000008fa vmovdqu %ymm0, $-448(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x60, 0xfe, 0xff, 0xff, //0x00000903 vmovdqu %ymm0, $-416(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x80, 0xfe, 0xff, 0xff, //0x0000090c vmovdqu %ymm0, $-384(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0xa0, 0xfe, 0xff, 0xff, //0x00000915 vmovdqu %ymm0, $-352(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0xc0, 0xfe, 0xff, 0xff, //0x0000091e vmovdqu %ymm0, $-320(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0xe0, 0xfe, 0xff, 0xff, //0x00000927 vmovdqu %ymm0, $-288(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x00, 0xff, 0xff, 0xff, //0x00000930 vmovdqu %ymm0, $-256(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x20, 0xff, 0xff, 0xff, //0x00000939 vmovdqu %ymm0, $-224(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x40, 0xff, 0xff, 0xff, //0x00000942 vmovdqu %ymm0, $-192(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x18, 0x60, 0xff, 0xff, 0xff, //0x0000094b vmovdqu %ymm0, $-160(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0x80, //0x00000954 vmovdqu %ymm0, $-128(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0xa0, //0x0000095a vmovdqu %ymm0, $-96(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0xc0, //0x00000960 vmovdqu %ymm0, $-64(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x18, 0xe0, //0x00000966 vmovdqu %ymm0, $-32(%rax,%rbx)
|
||||
0xc5, 0xfe, 0x7f, 0x04, 0x18, //0x0000096c vmovdqu %ymm0, (%rax,%rbx)
|
||||
0x48, 0x81, 0xc3, 0x00, 0x02, 0x00, 0x00, //0x00000971 addq $512, %rbx
|
||||
0x49, 0x83, 0xc6, 0x04, //0x00000978 addq $4, %r14
|
||||
0x0f, 0x85, 0x6f, 0xff, 0xff, 0xff, //0x0000097c jne LBB0_91
|
||||
//0x00000982 LBB0_92
|
||||
0x4d, 0x85, 0xdb, //0x00000982 testq %r11, %r11
|
||||
0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000985 je LBB0_95
|
||||
0x4c, 0x01, 0xcb, //0x0000098b addq %r9, %rbx
|
||||
0x48, 0x8d, 0x44, 0x1f, 0x62, //0x0000098e leaq $98(%rdi,%rbx), %rax
|
||||
0x49, 0xf7, 0xdb, //0x00000993 negq %r11
|
||||
0xc5, 0xfe, 0x6f, 0x05, 0x62, 0xf6, 0xff, 0xff, //0x00000996 vmovdqu $-2462(%rip), %ymm0 /* LCPI0_0+0(%rip) */
|
||||
//0x0000099e LBB0_94
|
||||
0xc5, 0xfe, 0x7f, 0x40, 0xa0, //0x0000099e vmovdqu %ymm0, $-96(%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x40, 0xc0, //0x000009a3 vmovdqu %ymm0, $-64(%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x40, 0xe0, //0x000009a8 vmovdqu %ymm0, $-32(%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x00, //0x000009ad vmovdqu %ymm0, (%rax)
|
||||
0x48, 0x83, 0xe8, 0x80, //0x000009b1 subq $-128, %rax
|
||||
0x49, 0xff, 0xc3, //0x000009b5 incq %r11
|
||||
0x0f, 0x85, 0xe0, 0xff, 0xff, 0xff, //0x000009b8 jne LBB0_94
|
||||
//0x000009be LBB0_95
|
||||
0x49, 0x01, 0xf0, //0x000009be addq %rsi, %r8
|
||||
0x49, 0x39, 0xf2, //0x000009c1 cmpq %rsi, %r10
|
||||
0x0f, 0x84, 0x17, 0x00, 0x00, 0x00, //0x000009c4 je LBB0_98
|
||||
//0x000009ca LBB0_96
|
||||
0x44, 0x89, 0xf8, //0x000009ca movl %r15d, %eax
|
||||
0xf7, 0xd8, //0x000009cd negl %eax
|
||||
0x90, //0x000009cf .p2align 4, 0x90
|
||||
//0x000009d0 LBB0_97
|
||||
0x41, 0xc6, 0x00, 0x30, //0x000009d0 movb $48, (%r8)
|
||||
0x49, 0xff, 0xc0, //0x000009d4 incq %r8
|
||||
0xff, 0xc6, //0x000009d7 incl %esi
|
||||
0x39, 0xc6, //0x000009d9 cmpl %eax, %esi
|
||||
0x0f, 0x8c, 0xef, 0xff, 0xff, 0xff, //0x000009db jl LBB0_97
|
||||
//0x000009e1 LBB0_98
|
||||
0x4b, 0x8d, 0x04, 0x20, //0x000009e1 leaq (%r8,%r12), %rax
|
||||
0x41, 0x81, 0xfd, 0x10, 0x27, 0x00, 0x00, //0x000009e5 cmpl $10000, %r13d
|
||||
0x0f, 0x82, 0x63, 0x00, 0x00, 0x00, //0x000009ec jb LBB0_101
|
||||
0x44, 0x89, 0xe9, //0x000009f2 movl %r13d, %ecx
|
||||
0x41, 0xba, 0x59, 0x17, 0xb7, 0xd1, //0x000009f5 movl $3518437209, %r10d
|
||||
0x4c, 0x0f, 0xaf, 0xd1, //0x000009fb imulq %rcx, %r10
|
||||
0x49, 0xc1, 0xea, 0x2d, //0x000009ff shrq $45, %r10
|
||||
0x41, 0x69, 0xca, 0xf0, 0xd8, 0xff, 0xff, //0x00000a03 imull $-10000, %r10d, %ecx
|
||||
0x44, 0x01, 0xe9, //0x00000a0a addl %r13d, %ecx
|
||||
0x0f, 0x84, 0x87, 0x01, 0x00, 0x00, //0x00000a0d je LBB0_103
|
||||
0x89, 0xca, //0x00000a13 movl %ecx, %edx
|
||||
0x48, 0x69, 0xd2, 0x1f, 0x85, 0xeb, 0x51, //0x00000a15 imulq $1374389535, %rdx, %rdx
|
||||
0x48, 0xc1, 0xea, 0x25, //0x00000a1c shrq $37, %rdx
|
||||
0x6b, 0xda, 0x64, //0x00000a20 imull $100, %edx, %ebx
|
||||
0x29, 0xd9, //0x00000a23 subl %ebx, %ecx
|
||||
0x48, 0x8d, 0x1d, 0x34, 0x03, 0x00, 0x00, //0x00000a25 leaq $820(%rip), %rbx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x0c, 0x4b, //0x00000a2c movzwl (%rbx,%rcx,2), %ecx
|
||||
0x66, 0x89, 0x48, 0xfe, //0x00000a30 movw %cx, $-2(%rax)
|
||||
0x0f, 0xb7, 0x0c, 0x53, //0x00000a34 movzwl (%rbx,%rdx,2), %ecx
|
||||
0x66, 0x89, 0x48, 0xfc, //0x00000a38 movw %cx, $-4(%rax)
|
||||
0x45, 0x31, 0xc9, //0x00000a3c xorl %r9d, %r9d
|
||||
0x48, 0x83, 0xc0, 0xfc, //0x00000a3f addq $-4, %rax
|
||||
0x41, 0x83, 0xfa, 0x64, //0x00000a43 cmpl $100, %r10d
|
||||
0x0f, 0x83, 0x18, 0x00, 0x00, 0x00, //0x00000a47 jae LBB0_105
|
||||
//0x00000a4d LBB0_102
|
||||
0x44, 0x89, 0xd1, //0x00000a4d movl %r10d, %ecx
|
||||
0xe9, 0x4d, 0x00, 0x00, 0x00, //0x00000a50 jmp LBB0_107
|
||||
//0x00000a55 LBB0_101
|
||||
0x45, 0x31, 0xc9, //0x00000a55 xorl %r9d, %r9d
|
||||
0x45, 0x89, 0xea, //0x00000a58 movl %r13d, %r10d
|
||||
0x41, 0x83, 0xfa, 0x64, //0x00000a5b cmpl $100, %r10d
|
||||
0x0f, 0x82, 0xe8, 0xff, 0xff, 0xff, //0x00000a5f jb LBB0_102
|
||||
//0x00000a65 LBB0_105
|
||||
0x48, 0xff, 0xc8, //0x00000a65 decq %rax
|
||||
0x48, 0x8d, 0x15, 0xf1, 0x02, 0x00, 0x00, //0x00000a68 leaq $753(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x90, //0x00000a6f .p2align 4, 0x90
|
||||
//0x00000a70 LBB0_106
|
||||
0x44, 0x89, 0xd1, //0x00000a70 movl %r10d, %ecx
|
||||
0x48, 0x69, 0xc9, 0x1f, 0x85, 0xeb, 0x51, //0x00000a73 imulq $1374389535, %rcx, %rcx
|
||||
0x48, 0xc1, 0xe9, 0x25, //0x00000a7a shrq $37, %rcx
|
||||
0x6b, 0xd9, 0x64, //0x00000a7e imull $100, %ecx, %ebx
|
||||
0x44, 0x89, 0xd6, //0x00000a81 movl %r10d, %esi
|
||||
0x29, 0xde, //0x00000a84 subl %ebx, %esi
|
||||
0x0f, 0xb7, 0x34, 0x72, //0x00000a86 movzwl (%rdx,%rsi,2), %esi
|
||||
0x66, 0x89, 0x70, 0xff, //0x00000a8a movw %si, $-1(%rax)
|
||||
0x48, 0x83, 0xc0, 0xfe, //0x00000a8e addq $-2, %rax
|
||||
0x41, 0x81, 0xfa, 0x0f, 0x27, 0x00, 0x00, //0x00000a92 cmpl $9999, %r10d
|
||||
0x41, 0x89, 0xca, //0x00000a99 movl %ecx, %r10d
|
||||
0x0f, 0x87, 0xce, 0xff, 0xff, 0xff, //0x00000a9c ja LBB0_106
|
||||
//0x00000aa2 LBB0_107
|
||||
0x83, 0xf9, 0x0a, //0x00000aa2 cmpl $10, %ecx
|
||||
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000aa5 jb LBB0_109
|
||||
0x89, 0xc8, //0x00000aab movl %ecx, %eax
|
||||
0x48, 0x8d, 0x0d, 0xac, 0x02, 0x00, 0x00, //0x00000aad leaq $684(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x0f, 0xb7, 0x04, 0x41, //0x00000ab4 movzwl (%rcx,%rax,2), %eax
|
||||
0x66, 0x41, 0x89, 0x00, //0x00000ab8 movw %ax, (%r8)
|
||||
0xe9, 0x06, 0x00, 0x00, 0x00, //0x00000abc jmp LBB0_110
|
||||
//0x00000ac1 LBB0_109
|
||||
0x80, 0xc1, 0x30, //0x00000ac1 addb $48, %cl
|
||||
0x41, 0x88, 0x08, //0x00000ac4 movb %cl, (%r8)
|
||||
//0x00000ac7 LBB0_110
|
||||
0x4d, 0x29, 0xcc, //0x00000ac7 subq %r9, %r12
|
||||
0x49, 0x8d, 0x74, 0x24, 0x01, //0x00000aca leaq $1(%r12), %rsi
|
||||
0x49, 0x8d, 0x54, 0x24, 0x61, //0x00000acf leaq $97(%r12), %rdx
|
||||
0x49, 0x8d, 0x44, 0x24, 0x02, //0x00000ad4 leaq $2(%r12), %rax
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ad9 .p2align 4, 0x90
|
||||
//0x00000ae0 LBB0_111
|
||||
0x48, 0xff, 0xca, //0x00000ae0 decq %rdx
|
||||
0x48, 0xff, 0xce, //0x00000ae3 decq %rsi
|
||||
0x48, 0xff, 0xc8, //0x00000ae6 decq %rax
|
||||
0x43, 0x80, 0x7c, 0x20, 0xff, 0x30, //0x00000ae9 cmpb $48, $-1(%r8,%r12)
|
||||
0x4d, 0x8d, 0x64, 0x24, 0xff, //0x00000aef leaq $-1(%r12), %r12
|
||||
0x0f, 0x84, 0xe6, 0xff, 0xff, 0xff, //0x00000af4 je LBB0_111
|
||||
0x4d, 0x8d, 0x0c, 0x30, //0x00000afa leaq (%r8,%rsi), %r9
|
||||
0x45, 0x85, 0xff, //0x00000afe testl %r15d, %r15d
|
||||
0x0f, 0x8e, 0x8b, 0x00, 0x00, 0x00, //0x00000b01 jle LBB0_116
|
||||
0x44, 0x89, 0xc9, //0x00000b07 movl %r9d, %ecx
|
||||
0x44, 0x29, 0xc1, //0x00000b0a subl %r8d, %ecx
|
||||
0x41, 0x39, 0xcf, //0x00000b0d cmpl %ecx, %r15d
|
||||
0x0f, 0x8d, 0x23, 0x00, 0x00, 0x00, //0x00000b10 jge LBB0_117
|
||||
0x43, 0x8d, 0x0c, 0x07, //0x00000b16 leal (%r15,%r8), %ecx
|
||||
0x41, 0x29, 0xc9, //0x00000b1a subl %ecx, %r9d
|
||||
0x49, 0x8d, 0x49, 0xff, //0x00000b1d leaq $-1(%r9), %rcx
|
||||
0x45, 0x89, 0xca, //0x00000b21 movl %r9d, %r10d
|
||||
0x41, 0x83, 0xe2, 0x03, //0x00000b24 andl $3, %r10d
|
||||
0x48, 0x83, 0xf9, 0x03, //0x00000b28 cmpq $3, %rcx
|
||||
0x0f, 0x83, 0x81, 0x00, 0x00, 0x00, //0x00000b2c jae LBB0_121
|
||||
0x31, 0xc9, //0x00000b32 xorl %ecx, %ecx
|
||||
0xe9, 0xa3, 0x00, 0x00, 0x00, //0x00000b34 jmp LBB0_124
|
||||
//0x00000b39 LBB0_117
|
||||
0x0f, 0x8e, 0x53, 0x00, 0x00, 0x00, //0x00000b39 jle LBB0_116
|
||||
0x45, 0x01, 0xc7, //0x00000b3f addl %r8d, %r15d
|
||||
0x45, 0x89, 0xce, //0x00000b42 movl %r9d, %r14d
|
||||
0x41, 0xf7, 0xd6, //0x00000b45 notl %r14d
|
||||
0x45, 0x01, 0xfe, //0x00000b48 addl %r15d, %r14d
|
||||
0x45, 0x31, 0xd2, //0x00000b4b xorl %r10d, %r10d
|
||||
0x4d, 0x89, 0xcb, //0x00000b4e movq %r9, %r11
|
||||
0x41, 0x83, 0xfe, 0x7e, //0x00000b51 cmpl $126, %r14d
|
||||
0x0f, 0x86, 0xb4, 0x01, 0x00, 0x00, //0x00000b55 jbe LBB0_135
|
||||
0x49, 0xff, 0xc6, //0x00000b5b incq %r14
|
||||
0x4d, 0x89, 0xf2, //0x00000b5e movq %r14, %r10
|
||||
0x49, 0x83, 0xe2, 0x80, //0x00000b61 andq $-128, %r10
|
||||
0x4f, 0x8d, 0x1c, 0x10, //0x00000b65 leaq (%r8,%r10), %r11
|
||||
0x49, 0x8d, 0x5a, 0x80, //0x00000b69 leaq $-128(%r10), %rbx
|
||||
0x48, 0x89, 0xd9, //0x00000b6d movq %rbx, %rcx
|
||||
0x48, 0xc1, 0xe9, 0x07, //0x00000b70 shrq $7, %rcx
|
||||
0x48, 0xff, 0xc1, //0x00000b74 incq %rcx
|
||||
0x41, 0x89, 0xcc, //0x00000b77 movl %ecx, %r12d
|
||||
0x41, 0x83, 0xe4, 0x03, //0x00000b7a andl $3, %r12d
|
||||
0x48, 0x81, 0xfb, 0x80, 0x01, 0x00, 0x00, //0x00000b7e cmpq $384, %rbx
|
||||
0x0f, 0x83, 0x8f, 0x00, 0x00, 0x00, //0x00000b85 jae LBB0_129
|
||||
0x31, 0xc9, //0x00000b8b xorl %ecx, %ecx
|
||||
0xe9, 0x30, 0x01, 0x00, 0x00, //0x00000b8d jmp LBB0_131
|
||||
//0x00000b92 LBB0_116
|
||||
0x4d, 0x89, 0xc8, //0x00000b92 movq %r9, %r8
|
||||
0xe9, 0x96, 0x01, 0x00, 0x00, //0x00000b95 jmp LBB0_137
|
||||
//0x00000b9a LBB0_103
|
||||
0x41, 0xb9, 0x04, 0x00, 0x00, 0x00, //0x00000b9a movl $4, %r9d
|
||||
0x48, 0x83, 0xc0, 0xfc, //0x00000ba0 addq $-4, %rax
|
||||
0x41, 0x83, 0xfa, 0x64, //0x00000ba4 cmpl $100, %r10d
|
||||
0x0f, 0x82, 0x9f, 0xfe, 0xff, 0xff, //0x00000ba8 jb LBB0_102
|
||||
0xe9, 0xb2, 0xfe, 0xff, 0xff, //0x00000bae jmp LBB0_105
|
||||
//0x00000bb3 LBB0_121
|
||||
0x4d, 0x89, 0xd3, //0x00000bb3 movq %r10, %r11
|
||||
0x4d, 0x29, 0xcb, //0x00000bb6 subq %r9, %r11
|
||||
0x31, 0xc9, //0x00000bb9 xorl %ecx, %ecx
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, //0x00000bbb .p2align 4, 0x90
|
||||
//0x00000bc0 LBB0_122
|
||||
0x49, 0x8d, 0x1c, 0x08, //0x00000bc0 leaq (%r8,%rcx), %rbx
|
||||
0x8b, 0x54, 0x1e, 0xfc, //0x00000bc4 movl $-4(%rsi,%rbx), %edx
|
||||
0x89, 0x54, 0x1e, 0xfd, //0x00000bc8 movl %edx, $-3(%rsi,%rbx)
|
||||
0x48, 0x83, 0xc1, 0xfc, //0x00000bcc addq $-4, %rcx
|
||||
0x49, 0x39, 0xcb, //0x00000bd0 cmpq %rcx, %r11
|
||||
0x0f, 0x85, 0xe7, 0xff, 0xff, 0xff, //0x00000bd3 jne LBB0_122
|
||||
0x48, 0xf7, 0xd9, //0x00000bd9 negq %rcx
|
||||
//0x00000bdc LBB0_124
|
||||
0x4d, 0x85, 0xd2, //0x00000bdc testq %r10, %r10
|
||||
0x0f, 0x84, 0x25, 0x00, 0x00, 0x00, //0x00000bdf je LBB0_127
|
||||
0x49, 0xf7, 0xda, //0x00000be5 negq %r10
|
||||
0x4c, 0x89, 0xc2, //0x00000be8 movq %r8, %rdx
|
||||
0x48, 0x29, 0xca, //0x00000beb subq %rcx, %rdx
|
||||
0x31, 0xc9, //0x00000bee xorl %ecx, %ecx
|
||||
//0x00000bf0 .p2align 4, 0x90
|
||||
//0x00000bf0 LBB0_126
|
||||
0x48, 0x8d, 0x34, 0x0a, //0x00000bf0 leaq (%rdx,%rcx), %rsi
|
||||
0x41, 0x0f, 0xb6, 0x1c, 0x34, //0x00000bf4 movzbl (%r12,%rsi), %ebx
|
||||
0x41, 0x88, 0x5c, 0x34, 0x01, //0x00000bf9 movb %bl, $1(%r12,%rsi)
|
||||
0x48, 0xff, 0xc9, //0x00000bfe decq %rcx
|
||||
0x49, 0x39, 0xca, //0x00000c01 cmpq %rcx, %r10
|
||||
0x0f, 0x85, 0xe6, 0xff, 0xff, 0xff, //0x00000c04 jne LBB0_126
|
||||
//0x00000c0a LBB0_127
|
||||
0x49, 0x63, 0xcf, //0x00000c0a movslq %r15d, %rcx
|
||||
0x41, 0xc6, 0x04, 0x08, 0x2e, //0x00000c0d movb $46, (%r8,%rcx)
|
||||
0x49, 0x01, 0xc0, //0x00000c12 addq %rax, %r8
|
||||
0xe9, 0x16, 0x01, 0x00, 0x00, //0x00000c15 jmp LBB0_137
|
||||
//0x00000c1a LBB0_129
|
||||
0x4c, 0x89, 0xe3, //0x00000c1a movq %r12, %rbx
|
||||
0x48, 0x29, 0xcb, //0x00000c1d subq %rcx, %rbx
|
||||
0x31, 0xc9, //0x00000c20 xorl %ecx, %ecx
|
||||
0xc5, 0xfe, 0x6f, 0x05, 0xd6, 0xf3, 0xff, 0xff, //0x00000c22 vmovdqu $-3114(%rip), %ymm0 /* LCPI0_0+0(%rip) */
|
||||
//0x00000c2a LBB0_130
|
||||
0x49, 0x8d, 0x04, 0x08, //0x00000c2a leaq (%r8,%rcx), %rax
|
||||
0xc5, 0xfe, 0x7f, 0x04, 0x06, //0x00000c2e vmovdqu %ymm0, (%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x06, 0x20, //0x00000c33 vmovdqu %ymm0, $32(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x06, 0x40, //0x00000c39 vmovdqu %ymm0, $64(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x44, 0x06, 0x60, //0x00000c3f vmovdqu %ymm0, $96(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x80, 0x00, 0x00, 0x00, //0x00000c45 vmovdqu %ymm0, $128(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xa0, 0x00, 0x00, 0x00, //0x00000c4e vmovdqu %ymm0, $160(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xc0, 0x00, 0x00, 0x00, //0x00000c57 vmovdqu %ymm0, $192(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xe0, 0x00, 0x00, 0x00, //0x00000c60 vmovdqu %ymm0, $224(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x00, 0x01, 0x00, 0x00, //0x00000c69 vmovdqu %ymm0, $256(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x20, 0x01, 0x00, 0x00, //0x00000c72 vmovdqu %ymm0, $288(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x40, 0x01, 0x00, 0x00, //0x00000c7b vmovdqu %ymm0, $320(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x60, 0x01, 0x00, 0x00, //0x00000c84 vmovdqu %ymm0, $352(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0x80, 0x01, 0x00, 0x00, //0x00000c8d vmovdqu %ymm0, $384(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xa0, 0x01, 0x00, 0x00, //0x00000c96 vmovdqu %ymm0, $416(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xc0, 0x01, 0x00, 0x00, //0x00000c9f vmovdqu %ymm0, $448(%rsi,%rax)
|
||||
0xc5, 0xfe, 0x7f, 0x84, 0x06, 0xe0, 0x01, 0x00, 0x00, //0x00000ca8 vmovdqu %ymm0, $480(%rsi,%rax)
|
||||
0x48, 0x81, 0xc1, 0x00, 0x02, 0x00, 0x00, //0x00000cb1 addq $512, %rcx
|
||||
0x48, 0x83, 0xc3, 0x04, //0x00000cb8 addq $4, %rbx
|
||||
0x0f, 0x85, 0x68, 0xff, 0xff, 0xff, //0x00000cbc jne LBB0_130
|
||||
//0x00000cc2 LBB0_131
|
||||
0x49, 0x01, 0xf3, //0x00000cc2 addq %rsi, %r11
|
||||
0x4d, 0x85, 0xe4, //0x00000cc5 testq %r12, %r12
|
||||
0x0f, 0x84, 0x35, 0x00, 0x00, 0x00, //0x00000cc8 je LBB0_134
|
||||
0x49, 0x01, 0xc8, //0x00000cce addq %rcx, %r8
|
||||
0x49, 0x01, 0xd0, //0x00000cd1 addq %rdx, %r8
|
||||
0x49, 0xf7, 0xdc, //0x00000cd4 negq %r12
|
||||
0xc5, 0xfe, 0x6f, 0x05, 0x21, 0xf3, 0xff, 0xff, //0x00000cd7 vmovdqu $-3295(%rip), %ymm0 /* LCPI0_0+0(%rip) */
|
||||
//0x00000cdf LBB0_133
|
||||
0xc4, 0xc1, 0x7e, 0x7f, 0x40, 0xa0, //0x00000cdf vmovdqu %ymm0, $-96(%r8)
|
||||
0xc4, 0xc1, 0x7e, 0x7f, 0x40, 0xc0, //0x00000ce5 vmovdqu %ymm0, $-64(%r8)
|
||||
0xc4, 0xc1, 0x7e, 0x7f, 0x40, 0xe0, //0x00000ceb vmovdqu %ymm0, $-32(%r8)
|
||||
0xc4, 0xc1, 0x7e, 0x7f, 0x00, //0x00000cf1 vmovdqu %ymm0, (%r8)
|
||||
0x49, 0x83, 0xe8, 0x80, //0x00000cf6 subq $-128, %r8
|
||||
0x49, 0xff, 0xc4, //0x00000cfa incq %r12
|
||||
0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x00000cfd jne LBB0_133
|
||||
//0x00000d03 LBB0_134
|
||||
0x4d, 0x89, 0xd8, //0x00000d03 movq %r11, %r8
|
||||
0x4d, 0x39, 0xd6, //0x00000d06 cmpq %r10, %r14
|
||||
0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x00000d09 je LBB0_137
|
||||
//0x00000d0f LBB0_135
|
||||
0x45, 0x29, 0xd7, //0x00000d0f subl %r10d, %r15d
|
||||
0x45, 0x29, 0xcf, //0x00000d12 subl %r9d, %r15d
|
||||
0x4d, 0x89, 0xd8, //0x00000d15 movq %r11, %r8
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000d18 .p2align 4, 0x90
|
||||
//0x00000d20 LBB0_136
|
||||
0x41, 0xc6, 0x00, 0x30, //0x00000d20 movb $48, (%r8)
|
||||
0x49, 0xff, 0xc0, //0x00000d24 incq %r8
|
||||
0x41, 0xff, 0xcf, //0x00000d27 decl %r15d
|
||||
0x0f, 0x85, 0xf0, 0xff, 0xff, 0xff, //0x00000d2a jne LBB0_136
|
||||
//0x00000d30 LBB0_137
|
||||
0x41, 0x29, 0xf8, //0x00000d30 subl %edi, %r8d
|
||||
//0x00000d33 LBB0_138
|
||||
0x44, 0x89, 0xc0, //0x00000d33 movl %r8d, %eax
|
||||
0x5b, //0x00000d36 popq %rbx
|
||||
0x41, 0x5c, //0x00000d37 popq %r12
|
||||
0x41, 0x5d, //0x00000d39 popq %r13
|
||||
0x41, 0x5e, //0x00000d3b popq %r14
|
||||
0x41, 0x5f, //0x00000d3d popq %r15
|
||||
0x5d, //0x00000d3f popq %rbp
|
||||
0xc5, 0xf8, 0x77, //0x00000d40 vzeroupper
|
||||
0xc3, //0x00000d43 retq
|
||||
//0x00000d44 LBB0_139
|
||||
0x45, 0x31, 0xc0, //0x00000d44 xorl %r8d, %r8d
|
||||
0xe9, 0xe7, 0xff, 0xff, 0xff, //0x00000d47 jmp LBB0_138
|
||||
//0x00000d4c LBB0_140
|
||||
0x41, 0xbf, 0x6b, 0xff, 0xff, 0xff, //0x00000d4c movl $-149, %r15d
|
||||
0x89, 0xc6, //0x00000d52 movl %eax, %esi
|
||||
0xe9, 0x46, 0xf3, 0xff, 0xff, //0x00000d54 jmp LBB0_5
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d59 .p2align 4, 0x00
|
||||
//0x00000d60 _Digits
|
||||
0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35, 0x30, 0x36, 0x30, 0x37, //0x00000d60 QUAD $0x3330323031303030; QUAD $0x3730363035303430 // .ascii 16, '0001020304050607'
|
||||
0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, //0x00000d70 QUAD $0x3131303139303830; QUAD $0x3531343133313231 // .ascii 16, '0809101112131415'
|
||||
0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, //0x00000d80 QUAD $0x3931383137313631; QUAD $0x3332323231323032 // .ascii 16, '1617181920212223'
|
||||
0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, //0x00000d90 QUAD $0x3732363235323432; QUAD $0x3133303339323832 // .ascii 16, '2425262728293031'
|
||||
0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, //0x00000da0 QUAD $0x3533343333333233; QUAD $0x3933383337333633 // .ascii 16, '3233343536373839'
|
||||
0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, //0x00000db0 QUAD $0x3334323431343034; QUAD $0x3734363435343434 // .ascii 16, '4041424344454647'
|
||||
0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33, 0x35, 0x34, 0x35, 0x35, //0x00000dc0 QUAD $0x3135303539343834; QUAD $0x3535343533353235 // .ascii 16, '4849505152535455'
|
||||
0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39, 0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, //0x00000dd0 QUAD $0x3935383537353635; QUAD $0x3336323631363036 // .ascii 16, '5657585960616263'
|
||||
0x36, 0x34, 0x36, 0x35, 0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31, //0x00000de0 QUAD $0x3736363635363436; QUAD $0x3137303739363836 // .ascii 16, '6465666768697071'
|
||||
0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37, 0x37, 0x38, 0x37, 0x39, //0x00000df0 QUAD $0x3537343733373237; QUAD $0x3937383737373637 // .ascii 16, '7273747576777879'
|
||||
0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33, 0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, //0x00000e00 QUAD $0x3338323831383038; QUAD $0x3738363835383438 // .ascii 16, '8081828384858687'
|
||||
0x38, 0x38, 0x38, 0x39, 0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35, //0x00000e10 QUAD $0x3139303939383838; QUAD $0x3539343933393239 // .ascii 16, '8889909192939495'
|
||||
0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39, //0x00000e20 QUAD $0x3939383937393639 // .ascii 8, '96979899'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e28 .p2align 4, 0x00
|
||||
//0x00000e30 _pow10_ceil_sig_f32.g
|
||||
0xf5, 0xfc, 0x43, 0x4b, 0x2c, 0xb3, 0xce, 0x81, //0x00000e30 .quad -9093133594791772939
|
||||
0x32, 0xfc, 0x14, 0x5e, 0xf7, 0x5f, 0x42, 0xa2, //0x00000e38 .quad -6754730975062328270
|
||||
0x3f, 0x3b, 0x9a, 0x35, 0xf5, 0xf7, 0xd2, 0xca, //0x00000e40 .quad -3831727700400522433
|
||||
0x0e, 0xca, 0x00, 0x83, 0xf2, 0xb5, 0x87, 0xfd, //0x00000e48 .quad -177973607073265138
|
||||
0x49, 0x7e, 0xe0, 0x91, 0xb7, 0xd1, 0x74, 0x9e, //0x00000e50 .quad -7028762532061872567
|
||||
0xdb, 0x9d, 0x58, 0x76, 0x25, 0x06, 0x12, 0xc6, //0x00000e58 .quad -4174267146649952805
|
||||
0x52, 0xc5, 0xee, 0xd3, 0xae, 0x87, 0x96, 0xf7, //0x00000e60 .quad -606147914885053102
|
||||
0x53, 0x3b, 0x75, 0x44, 0xcd, 0x14, 0xbe, 0x9a, //0x00000e68 .quad -7296371474444240045
|
||||
0x28, 0x8a, 0x92, 0x95, 0x00, 0x9a, 0x6d, 0xc1, //0x00000e70 .quad -4508778324627912152
|
||||
0xb2, 0x2c, 0xf7, 0xba, 0x80, 0x00, 0xc9, 0xf1, //0x00000e78 .quad -1024286887357502286
|
||||
0xef, 0x7b, 0xda, 0x74, 0x50, 0xa0, 0x1d, 0x97, //0x00000e80 .quad -7557708332239520785
|
||||
0xeb, 0x1a, 0x11, 0x92, 0x64, 0x08, 0xe5, 0xbc, //0x00000e88 .quad -4835449396872013077
|
||||
0xa6, 0x61, 0x95, 0xb6, 0x7d, 0x4a, 0x1e, 0xec, //0x00000e90 .quad -1432625727662628442
|
||||
0x08, 0x5d, 0x1d, 0x92, 0x8e, 0xee, 0x92, 0x93, //0x00000e98 .quad -7812920107430224632
|
||||
0x4a, 0xb4, 0xa4, 0x36, 0x32, 0xaa, 0x77, 0xb8, //0x00000ea0 .quad -5154464115860392886
|
||||
0x5c, 0xe1, 0x4d, 0xc4, 0xbe, 0x94, 0x95, 0xe6, //0x00000ea8 .quad -1831394126398103204
|
||||
0xda, 0xac, 0xb0, 0x3a, 0xf7, 0x7c, 0x1d, 0x90, //0x00000eb0 .quad -8062150356639896358
|
||||
0x10, 0xd8, 0x5c, 0x09, 0x35, 0xdc, 0x24, 0xb4, //0x00000eb8 .quad -5466001927372482544
|
||||
0x14, 0x0e, 0xb4, 0x4b, 0x42, 0x13, 0x2e, 0xe1, //0x00000ec0 .quad -2220816390788215276
|
||||
0xcc, 0x88, 0x50, 0x6f, 0x09, 0xcc, 0xbc, 0x8c, //0x00000ec8 .quad -8305539271883716404
|
||||
0xff, 0xaa, 0x24, 0xcb, 0x0b, 0xff, 0xeb, 0xaf, //0x00000ed0 .quad -5770238071427257601
|
||||
0xbf, 0xd5, 0xed, 0xbd, 0xce, 0xfe, 0xe6, 0xdb, //0x00000ed8 .quad -2601111570856684097
|
||||
0x98, 0xa5, 0xb4, 0x36, 0x41, 0x5f, 0x70, 0x89, //0x00000ee0 .quad -8543223759426509416
|
||||
0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x00000ee8 .quad -6067343680855748867
|
||||
0xbd, 0x42, 0x7a, 0xe5, 0xd5, 0x94, 0xbf, 0xd6, //0x00000ef0 .quad -2972493582642298179
|
||||
0xb6, 0x69, 0x6c, 0xaf, 0x05, 0xbd, 0x37, 0x86, //0x00000ef8 .quad -8775337516792518218
|
||||
0x24, 0x84, 0x47, 0x1b, 0x47, 0xac, 0xc5, 0xa7, //0x00000f00 .quad -6357485877563259868
|
||||
0x2c, 0x65, 0x19, 0xe2, 0x58, 0x17, 0xb7, 0xd1, //0x00000f08 .quad -3335171328526686932
|
||||
0x3c, 0xdf, 0x4f, 0x8d, 0x97, 0x6e, 0x12, 0x83, //0x00000f10 .quad -9002011107970261188
|
||||
0x0b, 0xd7, 0xa3, 0x70, 0x3d, 0x0a, 0xd7, 0xa3, //0x00000f18 .quad -6640827866535438581
|
||||
0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, //0x00000f20 .quad -3689348814741910323
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //0x00000f28 .quad -9223372036854775808
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, //0x00000f30 .quad -6917529027641081856
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, //0x00000f38 .quad -4035225266123964416
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, //0x00000f40 .quad -432345564227567616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9c, //0x00000f48 .quad -7187745005283311616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc3, //0x00000f50 .quad -4372995238176751616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xf4, //0x00000f58 .quad -854558029293551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, //0x00000f60 .quad -7451627795949551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xbc, 0xbe, //0x00000f68 .quad -4702848726509551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6b, 0xee, //0x00000f70 .quad -1266874889709551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x02, 0x95, //0x00000f78 .quad -7709325833709551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x40, 0xb7, 0x43, 0xba, //0x00000f80 .quad -5024971273709551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x10, 0xa5, 0xd4, 0xe8, //0x00000f88 .quad -1669528073709551616
|
||||
0x00, 0x00, 0x00, 0x00, 0x2a, 0xe7, 0x84, 0x91, //0x00000f90 .quad -7960984073709551616
|
||||
0x00, 0x00, 0x00, 0x80, 0xf4, 0x20, 0xe6, 0xb5, //0x00000f98 .quad -5339544073709551616
|
||||
0x00, 0x00, 0x00, 0xa0, 0x31, 0xa9, 0x5f, 0xe3, //0x00000fa0 .quad -2062744073709551616
|
||||
0x00, 0x00, 0x00, 0x04, 0xbf, 0xc9, 0x1b, 0x8e, //0x00000fa8 .quad -8206744073709551616
|
||||
0x00, 0x00, 0x00, 0xc5, 0x2e, 0xbc, 0xa2, 0xb1, //0x00000fb0 .quad -5646744073709551616
|
||||
0x00, 0x00, 0x40, 0x76, 0x3a, 0x6b, 0x0b, 0xde, //0x00000fb8 .quad -2446744073709551616
|
||||
0x00, 0x00, 0xe8, 0x89, 0x04, 0x23, 0xc7, 0x8a, //0x00000fc0 .quad -8446744073709551616
|
||||
0x00, 0x00, 0x62, 0xac, 0xc5, 0xeb, 0x78, 0xad, //0x00000fc8 .quad -5946744073709551616
|
||||
0x00, 0x80, 0x7a, 0x17, 0xb7, 0x26, 0xd7, 0xd8, //0x00000fd0 .quad -2821744073709551616
|
||||
0x00, 0x90, 0xac, 0x6e, 0x32, 0x78, 0x86, 0x87, //0x00000fd8 .quad -8681119073709551616
|
||||
0x00, 0xb4, 0x57, 0x0a, 0x3f, 0x16, 0x68, 0xa9, //0x00000fe0 .quad -6239712823709551616
|
||||
0x00, 0xa1, 0xed, 0xcc, 0xce, 0x1b, 0xc2, 0xd3, //0x00000fe8 .quad -3187955011209551616
|
||||
0xa0, 0x84, 0x14, 0x40, 0x61, 0x51, 0x59, 0x84, //0x00000ff0 .quad -8910000909647051616
|
||||
0xc8, 0xa5, 0x19, 0x90, 0xb9, 0xa5, 0x6f, 0xa5, //0x00000ff8 .quad -6525815118631426616
|
||||
0x3a, 0x0f, 0x20, 0xf4, 0x27, 0x8f, 0xcb, 0xce, //0x00001000 .quad -3545582879861895366
|
||||
0x85, 0x09, 0x94, 0xf8, 0x78, 0x39, 0x3f, 0x81, //0x00001008 .quad -9133518327554766459
|
||||
0xe6, 0x0b, 0xb9, 0x36, 0xd7, 0x07, 0x8f, 0xa1, //0x00001010 .quad -6805211891016070170
|
||||
0xdf, 0x4e, 0x67, 0x04, 0xcd, 0xc9, 0xf2, 0xc9, //0x00001018 .quad -3894828845342699809
|
||||
0x97, 0x22, 0x81, 0x45, 0x40, 0x7c, 0x6f, 0xfc, //0x00001020 .quad -256850038250986857
|
||||
0x9e, 0xb5, 0x70, 0x2b, 0xa8, 0xad, 0xc5, 0x9d, //0x00001028 .quad -7078060301547948642
|
||||
0x06, 0xe3, 0x4c, 0x36, 0x12, 0x19, 0x37, 0xc5, //0x00001030 .quad -4235889358507547898
|
||||
0xc7, 0x1b, 0xe0, 0xc3, 0x56, 0xdf, 0x84, 0xf6, //0x00001038 .quad -683175679707046969
|
||||
0x5d, 0x11, 0x6c, 0x3a, 0x96, 0x0b, 0x13, 0x9a, //0x00001040 .quad -7344513827457986211
|
||||
0xb4, 0x15, 0x07, 0xc9, 0x7b, 0xce, 0x97, 0xc0, //0x00001048 .quad -4568956265895094860
|
||||
0x21, 0xdb, 0x48, 0xbb, 0x1a, 0xc2, 0xbd, 0xf0, //0x00001050 .quad -1099509313941480671
|
||||
0xf5, 0x88, 0x0d, 0xb5, 0x50, 0x99, 0x76, 0x96, //0x00001058 .quad -7604722348854507275
|
||||
0x32, 0xeb, 0x50, 0xe2, 0xa4, 0x3f, 0x14, 0xbc, //0x00001060 .quad -4894216917640746190
|
||||
0xfe, 0x25, 0xe5, 0x1a, 0x8e, 0x4f, 0x19, 0xeb, //0x00001068 .quad -1506085128623544834
|
||||
0xbf, 0x37, 0xcf, 0xd0, 0xb8, 0xd1, 0xef, 0x92, //0x00001070 .quad -7858832233030797377
|
||||
0xae, 0x05, 0x03, 0x05, 0x27, 0xc6, 0xab, 0xb7, //0x00001078 .quad -5211854272861108818
|
||||
0x1a, 0xc7, 0x43, 0xc6, 0xb0, 0xb7, 0x96, 0xe5, //0x00001080 .quad -1903131822648998118
|
||||
0x70, 0x5c, 0xea, 0x7b, 0xce, 0x32, 0x7e, 0x8f, //0x00001088 .quad -8106986416796705680
|
||||
0x8c, 0xf3, 0xe4, 0x1a, 0x82, 0xbf, 0x5d, 0xb3, //0x00001090 .quad -5522047002568494196
|
||||
}
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_f64toa func(out unsafe.Pointer, val float64) (ret int)
|
||||
|
||||
var S_f64toa uintptr
|
||||
|
||||
//go:nosplit
|
||||
func f64toa(out *byte, val float64) (ret int) {
|
||||
return F_f64toa((rt.NoEscape(unsafe.Pointer(out))), val)
|
||||
}
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__f64toa = 32
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__f64toa = 56
|
||||
)
|
||||
|
||||
const (
|
||||
_size__f64toa = 4704
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__f64toa = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{4614, 56},
|
||||
{4618, 48},
|
||||
{4619, 40},
|
||||
{4621, 32},
|
||||
{4623, 24},
|
||||
{4625, 16},
|
||||
{4627, 8},
|
||||
{4631, 0},
|
||||
{4704, 56},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_f64toa = []loader.CFunc{
|
||||
{"_f64toa_entry", 0, _entry__f64toa, 0, nil},
|
||||
{"_f64toa", _entry__f64toa, _size__f64toa, _stack__f64toa, _pcsp__f64toa},
|
||||
}
|
||||
+2402
File diff suppressed because it is too large
Load Diff
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_get_by_path func(s unsafe.Pointer, p unsafe.Pointer, path unsafe.Pointer, m unsafe.Pointer) (ret int)
|
||||
|
||||
var S_get_by_path uintptr
|
||||
|
||||
//go:nosplit
|
||||
func get_by_path(s *string, p *int, path *[]interface{}, m *types.StateMachine) (ret int) {
|
||||
return F_get_by_path(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(path)), rt.NoEscape(unsafe.Pointer(m)))
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__get_by_path = 224
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__get_by_path = 272
|
||||
)
|
||||
|
||||
const (
|
||||
_size__get_by_path = 20184
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__get_by_path = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{17077, 272},
|
||||
{17078, 264},
|
||||
{17080, 256},
|
||||
{17082, 248},
|
||||
{17084, 240},
|
||||
{17086, 232},
|
||||
{17090, 224},
|
||||
{20184, 272},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_get_by_path = []loader.CFunc{
|
||||
{"_get_by_path_entry", 0, _entry__get_by_path, 0, nil},
|
||||
{"_get_by_path", _entry__get_by_path, _size__get_by_path, _stack__get_by_path, _pcsp__get_by_path},
|
||||
}
|
||||
+6049
File diff suppressed because it is too large
Load Diff
+36
@@ -0,0 +1,36 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_html_escape func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer) (ret int)
|
||||
|
||||
var S_html_escape uintptr
|
||||
|
||||
//go:nosplit
|
||||
func html_escape(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int) (ret int) {
|
||||
return F_html_escape(rt.NoEscape(sp), nb, dp, rt.NoEscape(unsafe.Pointer(dn)))
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__html_escape = 64
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__html_escape = 72
|
||||
)
|
||||
|
||||
const (
|
||||
_size__html_escape = 1248
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__html_escape = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1224, 72},
|
||||
{1228, 48},
|
||||
{1229, 40},
|
||||
{1231, 32},
|
||||
{1233, 24},
|
||||
{1235, 16},
|
||||
{1237, 8},
|
||||
{1248, 0},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_html_escape = []loader.CFunc{
|
||||
{"_html_escape_entry", 0, _entry__html_escape, 0, nil},
|
||||
{"_html_escape", _entry__html_escape, _size__html_escape, _stack__html_escape, _pcsp__html_escape},
|
||||
}
|
||||
+620
@@ -0,0 +1,620 @@
|
||||
// +build amd64
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
var _text_html_escape = []byte{
|
||||
// .p2align 4, 0x00
|
||||
// LCPI0_0
|
||||
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, // QUAD $0x2626262626262626; QUAD $0x2626262626262626 // .space 16, '&&&&&&&&&&&&&&&&'
|
||||
//0x00000010 LCPI0_1
|
||||
0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, //0x00000010 QUAD $0xe2e2e2e2e2e2e2e2; QUAD $0xe2e2e2e2e2e2e2e2 // .space 16, '\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2\xe2'
|
||||
//0x00000020 LCPI0_2
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, //0x00000020 QUAD $0x0202020202020202; QUAD $0x0202020202020202 // .space 16, '\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02'
|
||||
//0x00000030 LCPI0_3
|
||||
0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, //0x00000030 QUAD $0x3e3e3e3e3e3e3e3e; QUAD $0x3e3e3e3e3e3e3e3e // .space 16, '>>>>>>>>>>>>>>>>'
|
||||
//0x00000040 .p2align 4, 0x90
|
||||
//0x00000040 _html_escape
|
||||
0x55, //0x00000040 pushq %rbp
|
||||
0x48, 0x89, 0xe5, //0x00000041 movq %rsp, %rbp
|
||||
0x41, 0x57, //0x00000044 pushq %r15
|
||||
0x41, 0x56, //0x00000046 pushq %r14
|
||||
0x41, 0x55, //0x00000048 pushq %r13
|
||||
0x41, 0x54, //0x0000004a pushq %r12
|
||||
0x53, //0x0000004c pushq %rbx
|
||||
0x48, 0x83, 0xec, 0x18, //0x0000004d subq $24, %rsp
|
||||
0x48, 0x89, 0x4d, 0xc0, //0x00000051 movq %rcx, $-64(%rbp)
|
||||
0x49, 0x89, 0xd2, //0x00000055 movq %rdx, %r10
|
||||
0x48, 0x89, 0x55, 0xc8, //0x00000058 movq %rdx, $-56(%rbp)
|
||||
0x48, 0x89, 0x7d, 0xd0, //0x0000005c movq %rdi, $-48(%rbp)
|
||||
0x48, 0x89, 0xf8, //0x00000060 movq %rdi, %rax
|
||||
0x48, 0x85, 0xf6, //0x00000063 testq %rsi, %rsi
|
||||
0x0f, 0x8e, 0x73, 0x04, 0x00, 0x00, //0x00000066 jle LBB0_59
|
||||
0x48, 0x8b, 0x45, 0xc0, //0x0000006c movq $-64(%rbp), %rax
|
||||
0x4c, 0x8b, 0x08, //0x00000070 movq (%rax), %r9
|
||||
0xc5, 0xfa, 0x6f, 0x05, 0x85, 0xff, 0xff, 0xff, //0x00000073 vmovdqu $-123(%rip), %xmm0 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0x8d, 0xff, 0xff, 0xff, //0x0000007b vmovdqu $-115(%rip), %xmm1 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x15, 0x95, 0xff, 0xff, 0xff, //0x00000083 vmovdqu $-107(%rip), %xmm2 /* LCPI0_2+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x1d, 0x9d, 0xff, 0xff, 0xff, //0x0000008b vmovdqu $-99(%rip), %xmm3 /* LCPI0_3+0(%rip) */
|
||||
0x49, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x50, //0x00000093 movabsq $5764607797912141824, %r14
|
||||
0x4c, 0x8d, 0x1d, 0x7c, 0x04, 0x00, 0x00, //0x0000009d leaq $1148(%rip), %r11 /* __HtmlQuoteTab+0(%rip) */
|
||||
0x4c, 0x8b, 0x7d, 0xd0, //0x000000a4 movq $-48(%rbp), %r15
|
||||
0x4c, 0x8b, 0x55, 0xc8, //0x000000a8 movq $-56(%rbp), %r10
|
||||
0x90, 0x90, 0x90, 0x90, //0x000000ac .p2align 4, 0x90
|
||||
//0x000000b0 LBB0_2
|
||||
0x4d, 0x85, 0xc9, //0x000000b0 testq %r9, %r9
|
||||
0x0f, 0x8e, 0x45, 0x04, 0x00, 0x00, //0x000000b3 jle LBB0_61
|
||||
0x48, 0x83, 0xfe, 0x0f, //0x000000b9 cmpq $15, %rsi
|
||||
0x0f, 0x9f, 0xc3, //0x000000bd setg %bl
|
||||
0x4d, 0x89, 0xcc, //0x000000c0 movq %r9, %r12
|
||||
0x4d, 0x89, 0xd0, //0x000000c3 movq %r10, %r8
|
||||
0x48, 0x89, 0xf0, //0x000000c6 movq %rsi, %rax
|
||||
0x4d, 0x89, 0xfd, //0x000000c9 movq %r15, %r13
|
||||
0x49, 0x83, 0xf9, 0x10, //0x000000cc cmpq $16, %r9
|
||||
0x0f, 0x8c, 0x7a, 0x00, 0x00, 0x00, //0x000000d0 jl LBB0_9
|
||||
0x48, 0x83, 0xfe, 0x10, //0x000000d6 cmpq $16, %rsi
|
||||
0x0f, 0x8c, 0x70, 0x00, 0x00, 0x00, //0x000000da jl LBB0_9
|
||||
0x4d, 0x89, 0xfd, //0x000000e0 movq %r15, %r13
|
||||
0x48, 0x89, 0xf0, //0x000000e3 movq %rsi, %rax
|
||||
0x4d, 0x89, 0xd0, //0x000000e6 movq %r10, %r8
|
||||
0x4c, 0x89, 0xc9, //0x000000e9 movq %r9, %rcx
|
||||
0x90, 0x90, 0x90, 0x90, //0x000000ec .p2align 4, 0x90
|
||||
//0x000000f0 LBB0_6
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x65, 0x00, //0x000000f0 vmovdqu (%r13), %xmm4
|
||||
0xc5, 0xd9, 0x74, 0xe8, //0x000000f6 vpcmpeqb %xmm0, %xmm4, %xmm5
|
||||
0xc5, 0xd9, 0x74, 0xf1, //0x000000fa vpcmpeqb %xmm1, %xmm4, %xmm6
|
||||
0xc5, 0xc9, 0xeb, 0xed, //0x000000fe vpor %xmm5, %xmm6, %xmm5
|
||||
0xc5, 0xd9, 0xeb, 0xf2, //0x00000102 vpor %xmm2, %xmm4, %xmm6
|
||||
0xc5, 0xc9, 0x74, 0xf3, //0x00000106 vpcmpeqb %xmm3, %xmm6, %xmm6
|
||||
0xc5, 0xd1, 0xeb, 0xee, //0x0000010a vpor %xmm6, %xmm5, %xmm5
|
||||
0xc4, 0xc1, 0x7a, 0x7f, 0x20, //0x0000010e vmovdqu %xmm4, (%r8)
|
||||
0xc5, 0xf9, 0xd7, 0xd5, //0x00000113 vpmovmskb %xmm5, %edx
|
||||
0x66, 0x85, 0xd2, //0x00000117 testw %dx, %dx
|
||||
0x0f, 0x85, 0x30, 0x01, 0x00, 0x00, //0x0000011a jne LBB0_21
|
||||
0x49, 0x83, 0xc5, 0x10, //0x00000120 addq $16, %r13
|
||||
0x49, 0x83, 0xc0, 0x10, //0x00000124 addq $16, %r8
|
||||
0x4c, 0x8d, 0x61, 0xf0, //0x00000128 leaq $-16(%rcx), %r12
|
||||
0x48, 0x83, 0xf8, 0x1f, //0x0000012c cmpq $31, %rax
|
||||
0x0f, 0x9f, 0xc3, //0x00000130 setg %bl
|
||||
0x48, 0x83, 0xf8, 0x20, //0x00000133 cmpq $32, %rax
|
||||
0x48, 0x8d, 0x40, 0xf0, //0x00000137 leaq $-16(%rax), %rax
|
||||
0x0f, 0x8c, 0x0f, 0x00, 0x00, 0x00, //0x0000013b jl LBB0_9
|
||||
0x48, 0x83, 0xf9, 0x1f, //0x00000141 cmpq $31, %rcx
|
||||
0x4c, 0x89, 0xe1, //0x00000145 movq %r12, %rcx
|
||||
0x0f, 0x8f, 0xa2, 0xff, 0xff, 0xff, //0x00000148 jg LBB0_6
|
||||
0x90, 0x90, //0x0000014e .p2align 4, 0x90
|
||||
//0x00000150 LBB0_9
|
||||
0x84, 0xdb, //0x00000150 testb %bl, %bl
|
||||
0x0f, 0x84, 0x68, 0x00, 0x00, 0x00, //0x00000152 je LBB0_13
|
||||
0x4c, 0x89, 0xf2, //0x00000158 movq %r14, %rdx
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x65, 0x00, //0x0000015b vmovdqu (%r13), %xmm4
|
||||
0xc5, 0xd9, 0x74, 0xe8, //0x00000161 vpcmpeqb %xmm0, %xmm4, %xmm5
|
||||
0xc5, 0xd9, 0x74, 0xf1, //0x00000165 vpcmpeqb %xmm1, %xmm4, %xmm6
|
||||
0xc5, 0xc9, 0xeb, 0xed, //0x00000169 vpor %xmm5, %xmm6, %xmm5
|
||||
0xc5, 0xd9, 0xeb, 0xf2, //0x0000016d vpor %xmm2, %xmm4, %xmm6
|
||||
0xc5, 0xc9, 0x74, 0xf3, //0x00000171 vpcmpeqb %xmm3, %xmm6, %xmm6
|
||||
0xc5, 0xd1, 0xeb, 0xee, //0x00000175 vpor %xmm6, %xmm5, %xmm5
|
||||
0xc5, 0xf9, 0xd7, 0xc5, //0x00000179 vpmovmskb %xmm5, %eax
|
||||
0x0d, 0x00, 0x00, 0x01, 0x00, //0x0000017d orl $65536, %eax
|
||||
0x44, 0x0f, 0xbc, 0xf0, //0x00000182 bsfl %eax, %r14d
|
||||
0xc4, 0xe1, 0xf9, 0x7e, 0xe0, //0x00000186 vmovq %xmm4, %rax
|
||||
0x4d, 0x39, 0xf4, //0x0000018b cmpq %r14, %r12
|
||||
0x0f, 0x8d, 0xd7, 0x00, 0x00, 0x00, //0x0000018e jge LBB0_22
|
||||
0x49, 0x83, 0xfc, 0x08, //0x00000194 cmpq $8, %r12
|
||||
0x0f, 0x82, 0x09, 0x01, 0x00, 0x00, //0x00000198 jb LBB0_25
|
||||
0x49, 0x89, 0x00, //0x0000019e movq %rax, (%r8)
|
||||
0x4d, 0x8d, 0x75, 0x08, //0x000001a1 leaq $8(%r13), %r14
|
||||
0x49, 0x83, 0xc0, 0x08, //0x000001a5 addq $8, %r8
|
||||
0x49, 0x8d, 0x44, 0x24, 0xf8, //0x000001a9 leaq $-8(%r12), %rax
|
||||
0x48, 0x83, 0xf8, 0x04, //0x000001ae cmpq $4, %rax
|
||||
0x0f, 0x8d, 0xff, 0x00, 0x00, 0x00, //0x000001b2 jge LBB0_26
|
||||
0xe9, 0x0c, 0x01, 0x00, 0x00, //0x000001b8 jmp LBB0_27
|
||||
0x90, 0x90, 0x90, //0x000001bd .p2align 4, 0x90
|
||||
//0x000001c0 LBB0_13
|
||||
0x4d, 0x85, 0xe4, //0x000001c0 testq %r12, %r12
|
||||
0x0f, 0x8e, 0x67, 0x00, 0x00, 0x00, //0x000001c3 jle LBB0_20
|
||||
0x48, 0x85, 0xc0, //0x000001c9 testq %rax, %rax
|
||||
0x0f, 0x8e, 0x5e, 0x00, 0x00, 0x00, //0x000001cc jle LBB0_20
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x000001d2 .p2align 4, 0x90
|
||||
//0x000001e0 LBB0_15
|
||||
0x41, 0x0f, 0xb6, 0x4d, 0x00, //0x000001e0 movzbl (%r13), %ecx
|
||||
0x48, 0x83, 0xf9, 0x3e, //0x000001e5 cmpq $62, %rcx
|
||||
0x0f, 0x87, 0x0a, 0x00, 0x00, 0x00, //0x000001e9 ja LBB0_17
|
||||
0x49, 0x0f, 0xa3, 0xce, //0x000001ef btq %rcx, %r14
|
||||
0x0f, 0x82, 0x9a, 0x00, 0x00, 0x00, //0x000001f3 jb LBB0_24
|
||||
//0x000001f9 LBB0_17
|
||||
0x80, 0xf9, 0xe2, //0x000001f9 cmpb $-30, %cl
|
||||
0x0f, 0x84, 0x91, 0x00, 0x00, 0x00, //0x000001fc je LBB0_24
|
||||
0x49, 0xff, 0xc5, //0x00000202 incq %r13
|
||||
0x41, 0x88, 0x08, //0x00000205 movb %cl, (%r8)
|
||||
0x48, 0x83, 0xf8, 0x02, //0x00000208 cmpq $2, %rax
|
||||
0x48, 0x8d, 0x40, 0xff, //0x0000020c leaq $-1(%rax), %rax
|
||||
0x0f, 0x8c, 0x1a, 0x00, 0x00, 0x00, //0x00000210 jl LBB0_20
|
||||
0x49, 0xff, 0xc0, //0x00000216 incq %r8
|
||||
0x49, 0x83, 0xfc, 0x01, //0x00000219 cmpq $1, %r12
|
||||
0x4d, 0x8d, 0x64, 0x24, 0xff, //0x0000021d leaq $-1(%r12), %r12
|
||||
0x0f, 0x8f, 0xb8, 0xff, 0xff, 0xff, //0x00000222 jg LBB0_15
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000228 .p2align 4, 0x90
|
||||
//0x00000230 LBB0_20
|
||||
0x4d, 0x29, 0xfd, //0x00000230 subq %r15, %r13
|
||||
0x48, 0xf7, 0xd8, //0x00000233 negq %rax
|
||||
0x4d, 0x19, 0xe4, //0x00000236 sbbq %r12, %r12
|
||||
0x4d, 0x31, 0xec, //0x00000239 xorq %r13, %r12
|
||||
0x4d, 0x85, 0xe4, //0x0000023c testq %r12, %r12
|
||||
0x0f, 0x89, 0x5b, 0x01, 0x00, 0x00, //0x0000023f jns LBB0_37
|
||||
0xe9, 0x72, 0x02, 0x00, 0x00, //0x00000245 jmp LBB0_57
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x0000024a .p2align 4, 0x90
|
||||
//0x00000250 LBB0_21
|
||||
0x0f, 0xb7, 0xc2, //0x00000250 movzwl %dx, %eax
|
||||
0x4d, 0x29, 0xfd, //0x00000253 subq %r15, %r13
|
||||
0x44, 0x0f, 0xbc, 0xe0, //0x00000256 bsfl %eax, %r12d
|
||||
0x4d, 0x01, 0xec, //0x0000025a addq %r13, %r12
|
||||
0x4d, 0x85, 0xe4, //0x0000025d testq %r12, %r12
|
||||
0x0f, 0x89, 0x3a, 0x01, 0x00, 0x00, //0x00000260 jns LBB0_37
|
||||
0xe9, 0x51, 0x02, 0x00, 0x00, //0x00000266 jmp LBB0_57
|
||||
//0x0000026b LBB0_22
|
||||
0x41, 0x83, 0xfe, 0x08, //0x0000026b cmpl $8, %r14d
|
||||
0x0f, 0x82, 0xa9, 0x00, 0x00, 0x00, //0x0000026f jb LBB0_31
|
||||
0x49, 0x89, 0x00, //0x00000275 movq %rax, (%r8)
|
||||
0x4d, 0x8d, 0x65, 0x08, //0x00000278 leaq $8(%r13), %r12
|
||||
0x49, 0x83, 0xc0, 0x08, //0x0000027c addq $8, %r8
|
||||
0x49, 0x8d, 0x46, 0xf8, //0x00000280 leaq $-8(%r14), %rax
|
||||
0x48, 0x83, 0xf8, 0x04, //0x00000284 cmpq $4, %rax
|
||||
0x0f, 0x8d, 0xa0, 0x00, 0x00, 0x00, //0x00000288 jge LBB0_32
|
||||
0xe9, 0xae, 0x00, 0x00, 0x00, //0x0000028e jmp LBB0_33
|
||||
//0x00000293 LBB0_24
|
||||
0x4d, 0x29, 0xfd, //0x00000293 subq %r15, %r13
|
||||
0x4d, 0x89, 0xec, //0x00000296 movq %r13, %r12
|
||||
0x4d, 0x85, 0xe4, //0x00000299 testq %r12, %r12
|
||||
0x0f, 0x89, 0xfe, 0x00, 0x00, 0x00, //0x0000029c jns LBB0_37
|
||||
0xe9, 0x15, 0x02, 0x00, 0x00, //0x000002a2 jmp LBB0_57
|
||||
//0x000002a7 LBB0_25
|
||||
0x4d, 0x89, 0xee, //0x000002a7 movq %r13, %r14
|
||||
0x4c, 0x89, 0xe0, //0x000002aa movq %r12, %rax
|
||||
0x48, 0x83, 0xf8, 0x04, //0x000002ad cmpq $4, %rax
|
||||
0x0f, 0x8c, 0x12, 0x00, 0x00, 0x00, //0x000002b1 jl LBB0_27
|
||||
//0x000002b7 LBB0_26
|
||||
0x41, 0x8b, 0x0e, //0x000002b7 movl (%r14), %ecx
|
||||
0x41, 0x89, 0x08, //0x000002ba movl %ecx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x04, //0x000002bd addq $4, %r14
|
||||
0x49, 0x83, 0xc0, 0x04, //0x000002c1 addq $4, %r8
|
||||
0x48, 0x83, 0xc0, 0xfc, //0x000002c5 addq $-4, %rax
|
||||
//0x000002c9 LBB0_27
|
||||
0x48, 0x83, 0xf8, 0x02, //0x000002c9 cmpq $2, %rax
|
||||
0x0f, 0x82, 0x22, 0x00, 0x00, 0x00, //0x000002cd jb LBB0_28
|
||||
0x41, 0x0f, 0xb7, 0x0e, //0x000002d3 movzwl (%r14), %ecx
|
||||
0x66, 0x41, 0x89, 0x08, //0x000002d7 movw %cx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x02, //0x000002db addq $2, %r14
|
||||
0x49, 0x83, 0xc0, 0x02, //0x000002df addq $2, %r8
|
||||
0x48, 0x83, 0xc0, 0xfe, //0x000002e3 addq $-2, %rax
|
||||
0x48, 0x85, 0xc0, //0x000002e7 testq %rax, %rax
|
||||
0x0f, 0x85, 0x0e, 0x00, 0x00, 0x00, //0x000002ea jne LBB0_29
|
||||
0xe9, 0x0f, 0x00, 0x00, 0x00, //0x000002f0 jmp LBB0_30
|
||||
//0x000002f5 LBB0_28
|
||||
0x48, 0x85, 0xc0, //0x000002f5 testq %rax, %rax
|
||||
0x0f, 0x84, 0x06, 0x00, 0x00, 0x00, //0x000002f8 je LBB0_30
|
||||
//0x000002fe LBB0_29
|
||||
0x41, 0x8a, 0x06, //0x000002fe movb (%r14), %al
|
||||
0x41, 0x88, 0x00, //0x00000301 movb %al, (%r8)
|
||||
//0x00000304 LBB0_30
|
||||
0x4d, 0x29, 0xfc, //0x00000304 subq %r15, %r12
|
||||
0x4d, 0x01, 0xec, //0x00000307 addq %r13, %r12
|
||||
0x49, 0xf7, 0xd4, //0x0000030a notq %r12
|
||||
0x49, 0x89, 0xd6, //0x0000030d movq %rdx, %r14
|
||||
0x4d, 0x85, 0xe4, //0x00000310 testq %r12, %r12
|
||||
0x0f, 0x89, 0x87, 0x00, 0x00, 0x00, //0x00000313 jns LBB0_37
|
||||
0xe9, 0x9e, 0x01, 0x00, 0x00, //0x00000319 jmp LBB0_57
|
||||
//0x0000031e LBB0_31
|
||||
0x4d, 0x89, 0xec, //0x0000031e movq %r13, %r12
|
||||
0x4c, 0x89, 0xf0, //0x00000321 movq %r14, %rax
|
||||
0x48, 0x83, 0xf8, 0x04, //0x00000324 cmpq $4, %rax
|
||||
0x0f, 0x8c, 0x13, 0x00, 0x00, 0x00, //0x00000328 jl LBB0_33
|
||||
//0x0000032e LBB0_32
|
||||
0x41, 0x8b, 0x0c, 0x24, //0x0000032e movl (%r12), %ecx
|
||||
0x41, 0x89, 0x08, //0x00000332 movl %ecx, (%r8)
|
||||
0x49, 0x83, 0xc4, 0x04, //0x00000335 addq $4, %r12
|
||||
0x49, 0x83, 0xc0, 0x04, //0x00000339 addq $4, %r8
|
||||
0x48, 0x83, 0xc0, 0xfc, //0x0000033d addq $-4, %rax
|
||||
//0x00000341 LBB0_33
|
||||
0x48, 0x83, 0xf8, 0x02, //0x00000341 cmpq $2, %rax
|
||||
0x0f, 0x82, 0x23, 0x00, 0x00, 0x00, //0x00000345 jb LBB0_34
|
||||
0x41, 0x0f, 0xb7, 0x0c, 0x24, //0x0000034b movzwl (%r12), %ecx
|
||||
0x66, 0x41, 0x89, 0x08, //0x00000350 movw %cx, (%r8)
|
||||
0x49, 0x83, 0xc4, 0x02, //0x00000354 addq $2, %r12
|
||||
0x49, 0x83, 0xc0, 0x02, //0x00000358 addq $2, %r8
|
||||
0x48, 0x83, 0xc0, 0xfe, //0x0000035c addq $-2, %rax
|
||||
0x48, 0x85, 0xc0, //0x00000360 testq %rax, %rax
|
||||
0x0f, 0x85, 0x0e, 0x00, 0x00, 0x00, //0x00000363 jne LBB0_35
|
||||
0xe9, 0x10, 0x00, 0x00, 0x00, //0x00000369 jmp LBB0_36
|
||||
//0x0000036e LBB0_34
|
||||
0x48, 0x85, 0xc0, //0x0000036e testq %rax, %rax
|
||||
0x0f, 0x84, 0x07, 0x00, 0x00, 0x00, //0x00000371 je LBB0_36
|
||||
//0x00000377 LBB0_35
|
||||
0x41, 0x8a, 0x04, 0x24, //0x00000377 movb (%r12), %al
|
||||
0x41, 0x88, 0x00, //0x0000037b movb %al, (%r8)
|
||||
//0x0000037e LBB0_36
|
||||
0x4d, 0x29, 0xfd, //0x0000037e subq %r15, %r13
|
||||
0x4d, 0x01, 0xf5, //0x00000381 addq %r14, %r13
|
||||
0x4d, 0x89, 0xec, //0x00000384 movq %r13, %r12
|
||||
0x49, 0x89, 0xd6, //0x00000387 movq %rdx, %r14
|
||||
0x4d, 0x85, 0xe4, //0x0000038a testq %r12, %r12
|
||||
0x0f, 0x88, 0x29, 0x01, 0x00, 0x00, //0x0000038d js LBB0_57
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000393 .p2align 4, 0x90
|
||||
//0x000003a0 LBB0_37
|
||||
0x4d, 0x01, 0xe7, //0x000003a0 addq %r12, %r15
|
||||
0x4d, 0x01, 0xe2, //0x000003a3 addq %r12, %r10
|
||||
0x4c, 0x29, 0xe6, //0x000003a6 subq %r12, %rsi
|
||||
0x0f, 0x8e, 0x2d, 0x01, 0x00, 0x00, //0x000003a9 jle LBB0_58
|
||||
0x4d, 0x29, 0xe1, //0x000003af subq %r12, %r9
|
||||
0x41, 0x8a, 0x0f, //0x000003b2 movb (%r15), %cl
|
||||
0x80, 0xf9, 0xe2, //0x000003b5 cmpb $-30, %cl
|
||||
0x0f, 0x84, 0xb1, 0x00, 0x00, 0x00, //0x000003b8 je LBB0_51
|
||||
0x4c, 0x89, 0xf8, //0x000003be movq %r15, %rax
|
||||
//0x000003c1 LBB0_40
|
||||
0x0f, 0xb6, 0xd1, //0x000003c1 movzbl %cl, %edx
|
||||
0x48, 0xc1, 0xe2, 0x04, //0x000003c4 shlq $4, %rdx
|
||||
0x4a, 0x8b, 0x3c, 0x1a, //0x000003c8 movq (%rdx,%r11), %rdi
|
||||
0x48, 0x63, 0xdf, //0x000003cc movslq %edi, %rbx
|
||||
0x49, 0x29, 0xd9, //0x000003cf subq %rbx, %r9
|
||||
0x0f, 0x8c, 0x1b, 0x01, 0x00, 0x00, //0x000003d2 jl LBB0_60
|
||||
0x48, 0xc1, 0xe7, 0x20, //0x000003d8 shlq $32, %rdi
|
||||
0x4e, 0x8d, 0x7c, 0x1a, 0x08, //0x000003dc leaq $8(%rdx,%r11), %r15
|
||||
0x48, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, //0x000003e1 movabsq $12884901889, %rcx
|
||||
0x48, 0x39, 0xcf, //0x000003eb cmpq %rcx, %rdi
|
||||
0x0f, 0x8c, 0x2c, 0x00, 0x00, 0x00, //0x000003ee jl LBB0_43
|
||||
0x41, 0x8b, 0x0f, //0x000003f4 movl (%r15), %ecx
|
||||
0x41, 0x89, 0x0a, //0x000003f7 movl %ecx, (%r10)
|
||||
0x4e, 0x8d, 0x7c, 0x1a, 0x0c, //0x000003fa leaq $12(%rdx,%r11), %r15
|
||||
0x4d, 0x8d, 0x42, 0x04, //0x000003ff leaq $4(%r10), %r8
|
||||
0x48, 0x8d, 0x7b, 0xfc, //0x00000403 leaq $-4(%rbx), %rdi
|
||||
0x48, 0x83, 0xff, 0x02, //0x00000407 cmpq $2, %rdi
|
||||
0x0f, 0x83, 0x1f, 0x00, 0x00, 0x00, //0x0000040b jae LBB0_44
|
||||
0xe9, 0x2e, 0x00, 0x00, 0x00, //0x00000411 jmp LBB0_45
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000416 .p2align 4, 0x90
|
||||
//0x00000420 LBB0_43
|
||||
0x4d, 0x89, 0xd0, //0x00000420 movq %r10, %r8
|
||||
0x48, 0x89, 0xdf, //0x00000423 movq %rbx, %rdi
|
||||
0x48, 0x83, 0xff, 0x02, //0x00000426 cmpq $2, %rdi
|
||||
0x0f, 0x82, 0x14, 0x00, 0x00, 0x00, //0x0000042a jb LBB0_45
|
||||
//0x00000430 LBB0_44
|
||||
0x41, 0x0f, 0xb7, 0x17, //0x00000430 movzwl (%r15), %edx
|
||||
0x66, 0x41, 0x89, 0x10, //0x00000434 movw %dx, (%r8)
|
||||
0x49, 0x83, 0xc7, 0x02, //0x00000438 addq $2, %r15
|
||||
0x49, 0x83, 0xc0, 0x02, //0x0000043c addq $2, %r8
|
||||
0x48, 0x83, 0xc7, 0xfe, //0x00000440 addq $-2, %rdi
|
||||
//0x00000444 LBB0_45
|
||||
0x48, 0x85, 0xff, //0x00000444 testq %rdi, %rdi
|
||||
0x0f, 0x84, 0x06, 0x00, 0x00, 0x00, //0x00000447 je LBB0_47
|
||||
0x41, 0x8a, 0x0f, //0x0000044d movb (%r15), %cl
|
||||
0x41, 0x88, 0x08, //0x00000450 movb %cl, (%r8)
|
||||
//0x00000453 LBB0_47
|
||||
0x49, 0x01, 0xda, //0x00000453 addq %rbx, %r10
|
||||
//0x00000456 LBB0_48
|
||||
0x48, 0xff, 0xc0, //0x00000456 incq %rax
|
||||
0x49, 0x89, 0xc7, //0x00000459 movq %rax, %r15
|
||||
0x48, 0x83, 0xfe, 0x01, //0x0000045c cmpq $1, %rsi
|
||||
0x48, 0x8d, 0x76, 0xff, //0x00000460 leaq $-1(%rsi), %rsi
|
||||
0x0f, 0x8f, 0x46, 0xfc, 0xff, 0xff, //0x00000464 jg LBB0_2
|
||||
0xe9, 0x70, 0x00, 0x00, 0x00, //0x0000046a jmp LBB0_59
|
||||
//0x0000046f LBB0_51
|
||||
0x48, 0x83, 0xfe, 0x03, //0x0000046f cmpq $3, %rsi
|
||||
0x0f, 0x8c, 0x28, 0x00, 0x00, 0x00, //0x00000473 jl LBB0_55
|
||||
0x41, 0x80, 0x7f, 0x01, 0x80, //0x00000479 cmpb $-128, $1(%r15)
|
||||
0x0f, 0x85, 0x1d, 0x00, 0x00, 0x00, //0x0000047e jne LBB0_55
|
||||
0x41, 0x8a, 0x4f, 0x02, //0x00000484 movb $2(%r15), %cl
|
||||
0x89, 0xc8, //0x00000488 movl %ecx, %eax
|
||||
0x24, 0xfe, //0x0000048a andb $-2, %al
|
||||
0x3c, 0xa8, //0x0000048c cmpb $-88, %al
|
||||
0x0f, 0x85, 0x0d, 0x00, 0x00, 0x00, //0x0000048e jne LBB0_55
|
||||
0x49, 0x8d, 0x47, 0x02, //0x00000494 leaq $2(%r15), %rax
|
||||
0x48, 0x83, 0xc6, 0xfe, //0x00000498 addq $-2, %rsi
|
||||
0xe9, 0x20, 0xff, 0xff, 0xff, //0x0000049c jmp LBB0_40
|
||||
//0x000004a1 LBB0_55
|
||||
0x4d, 0x85, 0xc9, //0x000004a1 testq %r9, %r9
|
||||
0x0f, 0x8e, 0x54, 0x00, 0x00, 0x00, //0x000004a4 jle LBB0_61
|
||||
0x41, 0xc6, 0x02, 0xe2, //0x000004aa movb $-30, (%r10)
|
||||
0x49, 0xff, 0xc2, //0x000004ae incq %r10
|
||||
0x49, 0xff, 0xc9, //0x000004b1 decq %r9
|
||||
0x4c, 0x89, 0xf8, //0x000004b4 movq %r15, %rax
|
||||
0xe9, 0x9a, 0xff, 0xff, 0xff, //0x000004b7 jmp LBB0_48
|
||||
//0x000004bc LBB0_57
|
||||
0x4c, 0x2b, 0x55, 0xc8, //0x000004bc subq $-56(%rbp), %r10
|
||||
0x49, 0xf7, 0xd4, //0x000004c0 notq %r12
|
||||
0x4d, 0x01, 0xe2, //0x000004c3 addq %r12, %r10
|
||||
0x48, 0x8b, 0x45, 0xc0, //0x000004c6 movq $-64(%rbp), %rax
|
||||
0x4c, 0x89, 0x10, //0x000004ca movq %r10, (%rax)
|
||||
0x4c, 0x2b, 0x7d, 0xd0, //0x000004cd subq $-48(%rbp), %r15
|
||||
0x4d, 0x01, 0xe7, //0x000004d1 addq %r12, %r15
|
||||
0x49, 0xf7, 0xd7, //0x000004d4 notq %r15
|
||||
0xe9, 0x29, 0x00, 0x00, 0x00, //0x000004d7 jmp LBB0_62
|
||||
//0x000004dc LBB0_58
|
||||
0x4c, 0x89, 0xf8, //0x000004dc movq %r15, %rax
|
||||
//0x000004df LBB0_59
|
||||
0x4c, 0x2b, 0x55, 0xc8, //0x000004df subq $-56(%rbp), %r10
|
||||
0x48, 0x8b, 0x4d, 0xc0, //0x000004e3 movq $-64(%rbp), %rcx
|
||||
0x4c, 0x89, 0x11, //0x000004e7 movq %r10, (%rcx)
|
||||
0x48, 0x2b, 0x45, 0xd0, //0x000004ea subq $-48(%rbp), %rax
|
||||
0xe9, 0x15, 0x00, 0x00, 0x00, //0x000004ee jmp LBB0_63
|
||||
//0x000004f3 LBB0_60
|
||||
0x4c, 0x2b, 0x55, 0xc8, //0x000004f3 subq $-56(%rbp), %r10
|
||||
0x48, 0x8b, 0x45, 0xc0, //0x000004f7 movq $-64(%rbp), %rax
|
||||
0x4c, 0x89, 0x10, //0x000004fb movq %r10, (%rax)
|
||||
//0x000004fe LBB0_61
|
||||
0x49, 0xf7, 0xd7, //0x000004fe notq %r15
|
||||
0x4c, 0x03, 0x7d, 0xd0, //0x00000501 addq $-48(%rbp), %r15
|
||||
//0x00000505 LBB0_62
|
||||
0x4c, 0x89, 0xf8, //0x00000505 movq %r15, %rax
|
||||
//0x00000508 LBB0_63
|
||||
0x48, 0x83, 0xc4, 0x18, //0x00000508 addq $24, %rsp
|
||||
0x5b, //0x0000050c popq %rbx
|
||||
0x41, 0x5c, //0x0000050d popq %r12
|
||||
0x41, 0x5d, //0x0000050f popq %r13
|
||||
0x41, 0x5e, //0x00000511 popq %r14
|
||||
0x41, 0x5f, //0x00000513 popq %r15
|
||||
0x5d, //0x00000515 popq %rbp
|
||||
0xc3, //0x00000516 retq
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000517 .p2align 4, 0x00
|
||||
//0x00000520 __HtmlQuoteTab
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000520 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000530 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000540 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000550 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000560 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000570 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000580 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000590 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000005f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000600 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000610 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000620 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000630 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000640 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000650 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000660 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000670 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000680 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000690 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000006f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000700 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000710 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000720 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000730 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000740 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000750 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000760 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000770 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000780 .quad 6
|
||||
0x5c, 0x75, 0x30, 0x30, 0x32, 0x36, 0x00, 0x00, //0x00000788 QUAD $0x000036323030755c // .asciz 8, '\\u0026\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000790 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000007f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000800 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000810 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000820 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000830 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000840 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000850 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000860 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000870 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000880 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000890 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008e0 .quad 6
|
||||
0x5c, 0x75, 0x30, 0x30, 0x33, 0x63, 0x00, 0x00, //0x000008e8 QUAD $0x000063333030755c // .asciz 8, '\\u003c\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000008f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000900 .quad 6
|
||||
0x5c, 0x75, 0x30, 0x30, 0x33, 0x65, 0x00, 0x00, //0x00000908 QUAD $0x000065333030755c // .asciz 8, '\\u003e\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000910 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000920 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000930 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000940 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000950 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000960 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000970 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000980 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000990 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000a90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000aa0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ab0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ac0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ad0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ae0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000af0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000b90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ba0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bb0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000be0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000bf0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000c90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ca0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cb0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ce0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000cf0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000d90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000da0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000db0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000dc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000dd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000de0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000df0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000e90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ea0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000eb0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ec0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ed0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ee0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ef0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f00 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f10 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f20 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f30 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f40 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f50 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f60 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f70 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f80 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000f90 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fa0 .quad 6
|
||||
0x5c, 0x75, 0x32, 0x30, 0x32, 0x38, 0x00, 0x00, //0x00000fa8 QUAD $0x000038323032755c // .asciz 8, '\\u2028\x00\x00'
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fb0 .quad 6
|
||||
0x5c, 0x75, 0x32, 0x30, 0x32, 0x39, 0x00, 0x00, //0x00000fb8 QUAD $0x000039323032755c // .asciz 8, '\\u2029\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fc0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fd0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000fe0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00000ff0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001000 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001010 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001020 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001030 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001040 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001050 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001060 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001070 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001080 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001090 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000010f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001100 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001110 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001120 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001130 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001140 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001150 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001160 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001170 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001180 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001190 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000011f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001200 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001210 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001220 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001230 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001240 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001250 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001260 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001270 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001280 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001290 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000012f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001300 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001310 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001320 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001330 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001340 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001350 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001360 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001370 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001380 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001390 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000013f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001400 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001410 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001420 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001430 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001440 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001450 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001460 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001470 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001480 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001490 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014a0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014b0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014c0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014d0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014e0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000014f0 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001500 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x00001510 QUAD $0x0000000000000000; QUAD $0x0000000000000000 // .space 16, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
}
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_i64toa func(out unsafe.Pointer, val int64) (ret int)
|
||||
|
||||
var S_i64toa uintptr
|
||||
|
||||
//go:nosplit
|
||||
func i64toa(out *byte, val int64) (ret int) {
|
||||
return F_i64toa(rt.NoEscape(unsafe.Pointer(out)), val)
|
||||
}
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__i64toa = 64
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__i64toa = 8
|
||||
)
|
||||
|
||||
const (
|
||||
_size__i64toa = 2272
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__i64toa = [][2]uint32{
|
||||
{1, 0},
|
||||
{170, 8},
|
||||
{171, 0},
|
||||
{505, 8},
|
||||
{506, 0},
|
||||
{637, 8},
|
||||
{638, 0},
|
||||
{1101, 8},
|
||||
{1102, 0},
|
||||
{1238, 8},
|
||||
{1239, 0},
|
||||
{1540, 8},
|
||||
{1541, 0},
|
||||
{1901, 8},
|
||||
{1902, 0},
|
||||
{2268, 8},
|
||||
{2272, 0},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_i64toa = []loader.CFunc{
|
||||
{"_i64toa_entry", 0, _entry__i64toa, 0, nil},
|
||||
{"_i64toa", _entry__i64toa, _size__i64toa, _stack__i64toa, _pcsp__i64toa},
|
||||
}
|
||||
+639
@@ -0,0 +1,639 @@
|
||||
// +build amd64
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
var _text_i64toa = []byte{
|
||||
// .p2align 4, 0x00
|
||||
// LCPI0_0
|
||||
0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, // .quad 3518437209
|
||||
0x59, 0x17, 0xb7, 0xd1, 0x00, 0x00, 0x00, 0x00, //0x00000008 .quad 3518437209
|
||||
//0x00000010 LCPI0_3
|
||||
0x0a, 0x00, //0x00000010 .word 10
|
||||
0x0a, 0x00, //0x00000012 .word 10
|
||||
0x0a, 0x00, //0x00000014 .word 10
|
||||
0x0a, 0x00, //0x00000016 .word 10
|
||||
0x0a, 0x00, //0x00000018 .word 10
|
||||
0x0a, 0x00, //0x0000001a .word 10
|
||||
0x0a, 0x00, //0x0000001c .word 10
|
||||
0x0a, 0x00, //0x0000001e .word 10
|
||||
//0x00000020 LCPI0_4
|
||||
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, //0x00000020 QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000'
|
||||
//0x00000030 .p2align 3, 0x00
|
||||
//0x00000030 LCPI0_1
|
||||
0xc5, 0x20, 0x7b, 0x14, 0x34, 0x33, 0x00, 0x80, //0x00000030 .quad -9223315738079846203
|
||||
//0x00000038 LCPI0_2
|
||||
0x80, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, //0x00000038 .quad -9223336852348469120
|
||||
//0x00000040 .p2align 4, 0x90
|
||||
//0x00000040 _i64toa
|
||||
0x55, //0x00000040 pushq %rbp
|
||||
0x48, 0x89, 0xe5, //0x00000041 movq %rsp, %rbp
|
||||
0x48, 0x85, 0xf6, //0x00000044 testq %rsi, %rsi
|
||||
0x0f, 0x88, 0xaf, 0x00, 0x00, 0x00, //0x00000047 js LBB0_25
|
||||
0x48, 0x81, 0xfe, 0x0f, 0x27, 0x00, 0x00, //0x0000004d cmpq $9999, %rsi
|
||||
0x0f, 0x87, 0xf8, 0x00, 0x00, 0x00, //0x00000054 ja LBB0_9
|
||||
0x0f, 0xb7, 0xc6, //0x0000005a movzwl %si, %eax
|
||||
0xc1, 0xe8, 0x02, //0x0000005d shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000060 imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x00000066 shrl $17, %eax
|
||||
0x48, 0x8d, 0x14, 0x00, //0x00000069 leaq (%rax,%rax), %rdx
|
||||
0x6b, 0xc0, 0x64, //0x0000006d imull $100, %eax, %eax
|
||||
0x89, 0xf1, //0x00000070 movl %esi, %ecx
|
||||
0x29, 0xc1, //0x00000072 subl %eax, %ecx
|
||||
0x0f, 0xb7, 0xc1, //0x00000074 movzwl %cx, %eax
|
||||
0x48, 0x01, 0xc0, //0x00000077 addq %rax, %rax
|
||||
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x0000007a cmpl $1000, %esi
|
||||
0x0f, 0x82, 0x16, 0x00, 0x00, 0x00, //0x00000080 jb LBB0_4
|
||||
0x48, 0x8d, 0x0d, 0x93, 0x08, 0x00, 0x00, //0x00000086 leaq $2195(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x0c, 0x0a, //0x0000008d movb (%rdx,%rcx), %cl
|
||||
0x88, 0x0f, //0x00000090 movb %cl, (%rdi)
|
||||
0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000092 movl $1, %ecx
|
||||
0xe9, 0x0b, 0x00, 0x00, 0x00, //0x00000097 jmp LBB0_5
|
||||
//0x0000009c LBB0_4
|
||||
0x31, 0xc9, //0x0000009c xorl %ecx, %ecx
|
||||
0x83, 0xfe, 0x64, //0x0000009e cmpl $100, %esi
|
||||
0x0f, 0x82, 0x45, 0x00, 0x00, 0x00, //0x000000a1 jb LBB0_6
|
||||
//0x000000a7 LBB0_5
|
||||
0x0f, 0xb7, 0xd2, //0x000000a7 movzwl %dx, %edx
|
||||
0x48, 0x83, 0xca, 0x01, //0x000000aa orq $1, %rdx
|
||||
0x48, 0x8d, 0x35, 0x6b, 0x08, 0x00, 0x00, //0x000000ae leaq $2155(%rip), %rsi /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x32, //0x000000b5 movb (%rdx,%rsi), %dl
|
||||
0x89, 0xce, //0x000000b8 movl %ecx, %esi
|
||||
0xff, 0xc1, //0x000000ba incl %ecx
|
||||
0x88, 0x14, 0x37, //0x000000bc movb %dl, (%rdi,%rsi)
|
||||
//0x000000bf LBB0_7
|
||||
0x48, 0x8d, 0x15, 0x5a, 0x08, 0x00, 0x00, //0x000000bf leaq $2138(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x10, //0x000000c6 movb (%rax,%rdx), %dl
|
||||
0x89, 0xce, //0x000000c9 movl %ecx, %esi
|
||||
0xff, 0xc1, //0x000000cb incl %ecx
|
||||
0x88, 0x14, 0x37, //0x000000cd movb %dl, (%rdi,%rsi)
|
||||
//0x000000d0 LBB0_8
|
||||
0x0f, 0xb7, 0xc0, //0x000000d0 movzwl %ax, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x000000d3 orq $1, %rax
|
||||
0x48, 0x8d, 0x15, 0x42, 0x08, 0x00, 0x00, //0x000000d7 leaq $2114(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x8a, 0x04, 0x10, //0x000000de movb (%rax,%rdx), %al
|
||||
0x89, 0xca, //0x000000e1 movl %ecx, %edx
|
||||
0xff, 0xc1, //0x000000e3 incl %ecx
|
||||
0x88, 0x04, 0x17, //0x000000e5 movb %al, (%rdi,%rdx)
|
||||
0x89, 0xc8, //0x000000e8 movl %ecx, %eax
|
||||
0x5d, //0x000000ea popq %rbp
|
||||
0xc3, //0x000000eb retq
|
||||
//0x000000ec LBB0_6
|
||||
0x31, 0xc9, //0x000000ec xorl %ecx, %ecx
|
||||
0x83, 0xfe, 0x0a, //0x000000ee cmpl $10, %esi
|
||||
0x0f, 0x83, 0xc8, 0xff, 0xff, 0xff, //0x000000f1 jae LBB0_7
|
||||
0xe9, 0xd4, 0xff, 0xff, 0xff, //0x000000f7 jmp LBB0_8
|
||||
//0x000000fc LBB0_25
|
||||
0xc6, 0x07, 0x2d, //0x000000fc movb $45, (%rdi)
|
||||
0x48, 0xf7, 0xde, //0x000000ff negq %rsi
|
||||
0x48, 0x81, 0xfe, 0x0f, 0x27, 0x00, 0x00, //0x00000102 cmpq $9999, %rsi
|
||||
0x0f, 0x87, 0xd3, 0x01, 0x00, 0x00, //0x00000109 ja LBB0_33
|
||||
0x0f, 0xb7, 0xc6, //0x0000010f movzwl %si, %eax
|
||||
0xc1, 0xe8, 0x02, //0x00000112 shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000115 imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x0000011b shrl $17, %eax
|
||||
0x48, 0x8d, 0x14, 0x00, //0x0000011e leaq (%rax,%rax), %rdx
|
||||
0x6b, 0xc0, 0x64, //0x00000122 imull $100, %eax, %eax
|
||||
0x89, 0xf1, //0x00000125 movl %esi, %ecx
|
||||
0x29, 0xc1, //0x00000127 subl %eax, %ecx
|
||||
0x0f, 0xb7, 0xc1, //0x00000129 movzwl %cx, %eax
|
||||
0x48, 0x01, 0xc0, //0x0000012c addq %rax, %rax
|
||||
0x81, 0xfe, 0xe8, 0x03, 0x00, 0x00, //0x0000012f cmpl $1000, %esi
|
||||
0x0f, 0x82, 0xab, 0x00, 0x00, 0x00, //0x00000135 jb LBB0_28
|
||||
0x48, 0x8d, 0x0d, 0xde, 0x07, 0x00, 0x00, //0x0000013b leaq $2014(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x0c, 0x0a, //0x00000142 movb (%rdx,%rcx), %cl
|
||||
0x88, 0x4f, 0x01, //0x00000145 movb %cl, $1(%rdi)
|
||||
0xb9, 0x01, 0x00, 0x00, 0x00, //0x00000148 movl $1, %ecx
|
||||
0xe9, 0x9f, 0x00, 0x00, 0x00, //0x0000014d jmp LBB0_29
|
||||
//0x00000152 LBB0_9
|
||||
0x48, 0x81, 0xfe, 0xff, 0xe0, 0xf5, 0x05, //0x00000152 cmpq $99999999, %rsi
|
||||
0x0f, 0x87, 0x18, 0x02, 0x00, 0x00, //0x00000159 ja LBB0_17
|
||||
0x89, 0xf0, //0x0000015f movl %esi, %eax
|
||||
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x00000161 movl $3518437209, %edx
|
||||
0x48, 0x0f, 0xaf, 0xd0, //0x00000166 imulq %rax, %rdx
|
||||
0x48, 0xc1, 0xea, 0x2d, //0x0000016a shrq $45, %rdx
|
||||
0x44, 0x69, 0xc2, 0x10, 0x27, 0x00, 0x00, //0x0000016e imull $10000, %edx, %r8d
|
||||
0x89, 0xf1, //0x00000175 movl %esi, %ecx
|
||||
0x44, 0x29, 0xc1, //0x00000177 subl %r8d, %ecx
|
||||
0x4c, 0x69, 0xd0, 0x83, 0xde, 0x1b, 0x43, //0x0000017a imulq $1125899907, %rax, %r10
|
||||
0x49, 0xc1, 0xea, 0x31, //0x00000181 shrq $49, %r10
|
||||
0x41, 0x83, 0xe2, 0xfe, //0x00000185 andl $-2, %r10d
|
||||
0x0f, 0xb7, 0xc2, //0x00000189 movzwl %dx, %eax
|
||||
0xc1, 0xe8, 0x02, //0x0000018c shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000018f imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x00000195 shrl $17, %eax
|
||||
0x6b, 0xc0, 0x64, //0x00000198 imull $100, %eax, %eax
|
||||
0x29, 0xc2, //0x0000019b subl %eax, %edx
|
||||
0x44, 0x0f, 0xb7, 0xca, //0x0000019d movzwl %dx, %r9d
|
||||
0x4d, 0x01, 0xc9, //0x000001a1 addq %r9, %r9
|
||||
0x0f, 0xb7, 0xc1, //0x000001a4 movzwl %cx, %eax
|
||||
0xc1, 0xe8, 0x02, //0x000001a7 shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x000001aa imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x000001b0 shrl $17, %eax
|
||||
0x4c, 0x8d, 0x04, 0x00, //0x000001b3 leaq (%rax,%rax), %r8
|
||||
0x6b, 0xc0, 0x64, //0x000001b7 imull $100, %eax, %eax
|
||||
0x29, 0xc1, //0x000001ba subl %eax, %ecx
|
||||
0x44, 0x0f, 0xb7, 0xd9, //0x000001bc movzwl %cx, %r11d
|
||||
0x4d, 0x01, 0xdb, //0x000001c0 addq %r11, %r11
|
||||
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x000001c3 cmpl $10000000, %esi
|
||||
0x0f, 0x82, 0x6c, 0x00, 0x00, 0x00, //0x000001c9 jb LBB0_12
|
||||
0x48, 0x8d, 0x05, 0x4a, 0x07, 0x00, 0x00, //0x000001cf leaq $1866(%rip), %rax /* _Digits+0(%rip) */
|
||||
0x41, 0x8a, 0x04, 0x02, //0x000001d6 movb (%r10,%rax), %al
|
||||
0x88, 0x07, //0x000001da movb %al, (%rdi)
|
||||
0xb9, 0x01, 0x00, 0x00, 0x00, //0x000001dc movl $1, %ecx
|
||||
0xe9, 0x63, 0x00, 0x00, 0x00, //0x000001e1 jmp LBB0_13
|
||||
//0x000001e6 LBB0_28
|
||||
0x31, 0xc9, //0x000001e6 xorl %ecx, %ecx
|
||||
0x83, 0xfe, 0x64, //0x000001e8 cmpl $100, %esi
|
||||
0x0f, 0x82, 0xce, 0x00, 0x00, 0x00, //0x000001eb jb LBB0_30
|
||||
//0x000001f1 LBB0_29
|
||||
0x0f, 0xb7, 0xd2, //0x000001f1 movzwl %dx, %edx
|
||||
0x48, 0x83, 0xca, 0x01, //0x000001f4 orq $1, %rdx
|
||||
0x48, 0x8d, 0x35, 0x21, 0x07, 0x00, 0x00, //0x000001f8 leaq $1825(%rip), %rsi /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x32, //0x000001ff movb (%rdx,%rsi), %dl
|
||||
0x89, 0xce, //0x00000202 movl %ecx, %esi
|
||||
0xff, 0xc1, //0x00000204 incl %ecx
|
||||
0x88, 0x54, 0x37, 0x01, //0x00000206 movb %dl, $1(%rdi,%rsi)
|
||||
//0x0000020a LBB0_31
|
||||
0x48, 0x8d, 0x15, 0x0f, 0x07, 0x00, 0x00, //0x0000020a leaq $1807(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x10, //0x00000211 movb (%rax,%rdx), %dl
|
||||
0x89, 0xce, //0x00000214 movl %ecx, %esi
|
||||
0xff, 0xc1, //0x00000216 incl %ecx
|
||||
0x88, 0x54, 0x37, 0x01, //0x00000218 movb %dl, $1(%rdi,%rsi)
|
||||
//0x0000021c LBB0_32
|
||||
0x0f, 0xb7, 0xc0, //0x0000021c movzwl %ax, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x0000021f orq $1, %rax
|
||||
0x48, 0x8d, 0x15, 0xf6, 0x06, 0x00, 0x00, //0x00000223 leaq $1782(%rip), %rdx /* _Digits+0(%rip) */
|
||||
0x8a, 0x04, 0x10, //0x0000022a movb (%rax,%rdx), %al
|
||||
0x89, 0xca, //0x0000022d movl %ecx, %edx
|
||||
0xff, 0xc1, //0x0000022f incl %ecx
|
||||
0x88, 0x44, 0x17, 0x01, //0x00000231 movb %al, $1(%rdi,%rdx)
|
||||
0xff, 0xc1, //0x00000235 incl %ecx
|
||||
0x89, 0xc8, //0x00000237 movl %ecx, %eax
|
||||
0x5d, //0x00000239 popq %rbp
|
||||
0xc3, //0x0000023a retq
|
||||
//0x0000023b LBB0_12
|
||||
0x31, 0xc9, //0x0000023b xorl %ecx, %ecx
|
||||
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x0000023d cmpl $1000000, %esi
|
||||
0x0f, 0x82, 0x86, 0x00, 0x00, 0x00, //0x00000243 jb LBB0_14
|
||||
//0x00000249 LBB0_13
|
||||
0x44, 0x89, 0xd0, //0x00000249 movl %r10d, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x0000024c orq $1, %rax
|
||||
0x48, 0x8d, 0x35, 0xc9, 0x06, 0x00, 0x00, //0x00000250 leaq $1737(%rip), %rsi /* _Digits+0(%rip) */
|
||||
0x8a, 0x04, 0x30, //0x00000257 movb (%rax,%rsi), %al
|
||||
0x89, 0xce, //0x0000025a movl %ecx, %esi
|
||||
0xff, 0xc1, //0x0000025c incl %ecx
|
||||
0x88, 0x04, 0x37, //0x0000025e movb %al, (%rdi,%rsi)
|
||||
//0x00000261 LBB0_15
|
||||
0x48, 0x8d, 0x05, 0xb8, 0x06, 0x00, 0x00, //0x00000261 leaq $1720(%rip), %rax /* _Digits+0(%rip) */
|
||||
0x41, 0x8a, 0x04, 0x01, //0x00000268 movb (%r9,%rax), %al
|
||||
0x89, 0xce, //0x0000026c movl %ecx, %esi
|
||||
0xff, 0xc1, //0x0000026e incl %ecx
|
||||
0x88, 0x04, 0x37, //0x00000270 movb %al, (%rdi,%rsi)
|
||||
//0x00000273 LBB0_16
|
||||
0x41, 0x0f, 0xb7, 0xc1, //0x00000273 movzwl %r9w, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x00000277 orq $1, %rax
|
||||
0x48, 0x8d, 0x35, 0x9e, 0x06, 0x00, 0x00, //0x0000027b leaq $1694(%rip), %rsi /* _Digits+0(%rip) */
|
||||
0x8a, 0x04, 0x30, //0x00000282 movb (%rax,%rsi), %al
|
||||
0x89, 0xca, //0x00000285 movl %ecx, %edx
|
||||
0x88, 0x04, 0x3a, //0x00000287 movb %al, (%rdx,%rdi)
|
||||
0x41, 0x8a, 0x04, 0x30, //0x0000028a movb (%r8,%rsi), %al
|
||||
0x88, 0x44, 0x3a, 0x01, //0x0000028e movb %al, $1(%rdx,%rdi)
|
||||
0x41, 0x0f, 0xb7, 0xc0, //0x00000292 movzwl %r8w, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x00000296 orq $1, %rax
|
||||
0x8a, 0x04, 0x30, //0x0000029a movb (%rax,%rsi), %al
|
||||
0x88, 0x44, 0x3a, 0x02, //0x0000029d movb %al, $2(%rdx,%rdi)
|
||||
0x41, 0x8a, 0x04, 0x33, //0x000002a1 movb (%r11,%rsi), %al
|
||||
0x88, 0x44, 0x3a, 0x03, //0x000002a5 movb %al, $3(%rdx,%rdi)
|
||||
0x41, 0x0f, 0xb7, 0xc3, //0x000002a9 movzwl %r11w, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x000002ad orq $1, %rax
|
||||
0x8a, 0x04, 0x30, //0x000002b1 movb (%rax,%rsi), %al
|
||||
0x83, 0xc1, 0x05, //0x000002b4 addl $5, %ecx
|
||||
0x88, 0x44, 0x3a, 0x04, //0x000002b7 movb %al, $4(%rdx,%rdi)
|
||||
0x89, 0xc8, //0x000002bb movl %ecx, %eax
|
||||
0x5d, //0x000002bd popq %rbp
|
||||
0xc3, //0x000002be retq
|
||||
//0x000002bf LBB0_30
|
||||
0x31, 0xc9, //0x000002bf xorl %ecx, %ecx
|
||||
0x83, 0xfe, 0x0a, //0x000002c1 cmpl $10, %esi
|
||||
0x0f, 0x83, 0x40, 0xff, 0xff, 0xff, //0x000002c4 jae LBB0_31
|
||||
0xe9, 0x4d, 0xff, 0xff, 0xff, //0x000002ca jmp LBB0_32
|
||||
//0x000002cf LBB0_14
|
||||
0x31, 0xc9, //0x000002cf xorl %ecx, %ecx
|
||||
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x000002d1 cmpl $100000, %esi
|
||||
0x0f, 0x83, 0x84, 0xff, 0xff, 0xff, //0x000002d7 jae LBB0_15
|
||||
0xe9, 0x91, 0xff, 0xff, 0xff, //0x000002dd jmp LBB0_16
|
||||
//0x000002e2 LBB0_33
|
||||
0x48, 0x81, 0xfe, 0xff, 0xe0, 0xf5, 0x05, //0x000002e2 cmpq $99999999, %rsi
|
||||
0x0f, 0x87, 0x3c, 0x02, 0x00, 0x00, //0x000002e9 ja LBB0_41
|
||||
0x89, 0xf0, //0x000002ef movl %esi, %eax
|
||||
0xba, 0x59, 0x17, 0xb7, 0xd1, //0x000002f1 movl $3518437209, %edx
|
||||
0x48, 0x0f, 0xaf, 0xd0, //0x000002f6 imulq %rax, %rdx
|
||||
0x48, 0xc1, 0xea, 0x2d, //0x000002fa shrq $45, %rdx
|
||||
0x44, 0x69, 0xc2, 0x10, 0x27, 0x00, 0x00, //0x000002fe imull $10000, %edx, %r8d
|
||||
0x89, 0xf1, //0x00000305 movl %esi, %ecx
|
||||
0x44, 0x29, 0xc1, //0x00000307 subl %r8d, %ecx
|
||||
0x4c, 0x69, 0xd0, 0x83, 0xde, 0x1b, 0x43, //0x0000030a imulq $1125899907, %rax, %r10
|
||||
0x49, 0xc1, 0xea, 0x31, //0x00000311 shrq $49, %r10
|
||||
0x41, 0x83, 0xe2, 0xfe, //0x00000315 andl $-2, %r10d
|
||||
0x0f, 0xb7, 0xc2, //0x00000319 movzwl %dx, %eax
|
||||
0xc1, 0xe8, 0x02, //0x0000031c shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000031f imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x00000325 shrl $17, %eax
|
||||
0x6b, 0xc0, 0x64, //0x00000328 imull $100, %eax, %eax
|
||||
0x29, 0xc2, //0x0000032b subl %eax, %edx
|
||||
0x44, 0x0f, 0xb7, 0xca, //0x0000032d movzwl %dx, %r9d
|
||||
0x4d, 0x01, 0xc9, //0x00000331 addq %r9, %r9
|
||||
0x0f, 0xb7, 0xc1, //0x00000334 movzwl %cx, %eax
|
||||
0xc1, 0xe8, 0x02, //0x00000337 shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x0000033a imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x00000340 shrl $17, %eax
|
||||
0x4c, 0x8d, 0x04, 0x00, //0x00000343 leaq (%rax,%rax), %r8
|
||||
0x6b, 0xc0, 0x64, //0x00000347 imull $100, %eax, %eax
|
||||
0x29, 0xc1, //0x0000034a subl %eax, %ecx
|
||||
0x44, 0x0f, 0xb7, 0xd9, //0x0000034c movzwl %cx, %r11d
|
||||
0x4d, 0x01, 0xdb, //0x00000350 addq %r11, %r11
|
||||
0x81, 0xfe, 0x80, 0x96, 0x98, 0x00, //0x00000353 cmpl $10000000, %esi
|
||||
0x0f, 0x82, 0x30, 0x01, 0x00, 0x00, //0x00000359 jb LBB0_36
|
||||
0x48, 0x8d, 0x05, 0xba, 0x05, 0x00, 0x00, //0x0000035f leaq $1466(%rip), %rax /* _Digits+0(%rip) */
|
||||
0x41, 0x8a, 0x04, 0x02, //0x00000366 movb (%r10,%rax), %al
|
||||
0x88, 0x47, 0x01, //0x0000036a movb %al, $1(%rdi)
|
||||
0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000036d movl $1, %ecx
|
||||
0xe9, 0x26, 0x01, 0x00, 0x00, //0x00000372 jmp LBB0_37
|
||||
//0x00000377 LBB0_17
|
||||
0x48, 0xb9, 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x00000377 movabsq $10000000000000000, %rcx
|
||||
0x48, 0x39, 0xce, //0x00000381 cmpq %rcx, %rsi
|
||||
0x0f, 0x83, 0xbc, 0x02, 0x00, 0x00, //0x00000384 jae LBB0_19
|
||||
0x48, 0xb9, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x0000038a movabsq $-6067343680855748867, %rcx
|
||||
0x48, 0x89, 0xf0, //0x00000394 movq %rsi, %rax
|
||||
0x48, 0xf7, 0xe1, //0x00000397 mulq %rcx
|
||||
0x48, 0xc1, 0xea, 0x1a, //0x0000039a shrq $26, %rdx
|
||||
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x0000039e imull $100000000, %edx, %eax
|
||||
0x29, 0xc6, //0x000003a4 subl %eax, %esi
|
||||
0xc5, 0xf9, 0x6e, 0xc2, //0x000003a6 vmovd %edx, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0x4e, 0xfc, 0xff, 0xff, //0x000003aa vmovdqu $-946(%rip), %xmm1 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0xf9, 0xf4, 0xd1, //0x000003b2 vpmuludq %xmm1, %xmm0, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x000003b6 vpsrlq $45, %xmm2, %xmm2
|
||||
0xb8, 0x10, 0x27, 0x00, 0x00, //0x000003bb movl $10000, %eax
|
||||
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x000003c0 vmovq %rax, %xmm3
|
||||
0xc5, 0xe9, 0xf4, 0xe3, //0x000003c5 vpmuludq %xmm3, %xmm2, %xmm4
|
||||
0xc5, 0xf9, 0xfa, 0xc4, //0x000003c9 vpsubd %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xe9, 0x61, 0xc0, //0x000003cd vpunpcklwd %xmm0, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x000003d1 vpsllq $2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x000003d6 vpshuflw $80, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x000003db vpshufd $80, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x15, 0x48, 0xfc, 0xff, 0xff, //0x000003e0 vmovddup $-952(%rip), %xmm2 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc2, //0x000003e8 vpmulhuw %xmm2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x25, 0x44, 0xfc, 0xff, 0xff, //0x000003ec vmovddup $-956(%rip), %xmm4 /* LCPI0_2+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc4, //0x000003f4 vpmulhuw %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x2d, 0x10, 0xfc, 0xff, 0xff, //0x000003f8 vmovdqu $-1008(%rip), %xmm5 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xf9, 0xd5, 0xf5, //0x00000400 vpmullw %xmm5, %xmm0, %xmm6
|
||||
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x00000404 vpsllq $16, %xmm6, %xmm6
|
||||
0xc5, 0xf9, 0xf9, 0xc6, //0x00000409 vpsubw %xmm6, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0x6e, 0xf6, //0x0000040d vmovd %esi, %xmm6
|
||||
0xc5, 0xc9, 0xf4, 0xc9, //0x00000411 vpmuludq %xmm1, %xmm6, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x00000415 vpsrlq $45, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xf4, 0xdb, //0x0000041a vpmuludq %xmm3, %xmm1, %xmm3
|
||||
0xc5, 0xc9, 0xfa, 0xdb, //0x0000041e vpsubd %xmm3, %xmm6, %xmm3
|
||||
0xc5, 0xf1, 0x61, 0xcb, //0x00000422 vpunpcklwd %xmm3, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x00000426 vpsllq $2, %xmm1, %xmm1
|
||||
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x0000042b vpshuflw $80, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x00000430 vpshufd $80, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xca, //0x00000435 vpmulhuw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xcc, //0x00000439 vpmulhuw %xmm4, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xd5, 0xd5, //0x0000043d vpmullw %xmm5, %xmm1, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x00000441 vpsllq $16, %xmm2, %xmm2
|
||||
0xc5, 0xf1, 0xf9, 0xca, //0x00000446 vpsubw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x67, 0xc1, //0x0000044a vpackuswb %xmm1, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0xfc, 0x0d, 0xca, 0xfb, 0xff, 0xff, //0x0000044e vpaddb $-1078(%rip), %xmm0, %xmm1 /* LCPI0_4+0(%rip) */
|
||||
0xc5, 0xe9, 0xef, 0xd2, //0x00000456 vpxor %xmm2, %xmm2, %xmm2
|
||||
0xc5, 0xf9, 0x74, 0xc2, //0x0000045a vpcmpeqb %xmm2, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc0, //0x0000045e vpmovmskb %xmm0, %eax
|
||||
0x0d, 0x00, 0x80, 0x00, 0x00, //0x00000462 orl $32768, %eax
|
||||
0x35, 0xff, 0x7f, 0xff, 0xff, //0x00000467 xorl $-32769, %eax
|
||||
0x0f, 0xbc, 0xc0, //0x0000046c bsfl %eax, %eax
|
||||
0xb9, 0x10, 0x00, 0x00, 0x00, //0x0000046f movl $16, %ecx
|
||||
0x29, 0xc1, //0x00000474 subl %eax, %ecx
|
||||
0x48, 0xc1, 0xe0, 0x04, //0x00000476 shlq $4, %rax
|
||||
0x48, 0x8d, 0x15, 0x6f, 0x05, 0x00, 0x00, //0x0000047a leaq $1391(%rip), %rdx /* _VecShiftShuffles+0(%rip) */
|
||||
0xc4, 0xe2, 0x71, 0x00, 0x04, 0x10, //0x00000481 vpshufb (%rax,%rdx), %xmm1, %xmm0
|
||||
0xc5, 0xfa, 0x7f, 0x07, //0x00000487 vmovdqu %xmm0, (%rdi)
|
||||
0x89, 0xc8, //0x0000048b movl %ecx, %eax
|
||||
0x5d, //0x0000048d popq %rbp
|
||||
0xc3, //0x0000048e retq
|
||||
//0x0000048f LBB0_36
|
||||
0x31, 0xc9, //0x0000048f xorl %ecx, %ecx
|
||||
0x81, 0xfe, 0x40, 0x42, 0x0f, 0x00, //0x00000491 cmpl $1000000, %esi
|
||||
0x0f, 0x82, 0x7b, 0x00, 0x00, 0x00, //0x00000497 jb LBB0_38
|
||||
//0x0000049d LBB0_37
|
||||
0x44, 0x89, 0xd0, //0x0000049d movl %r10d, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x000004a0 orq $1, %rax
|
||||
0x48, 0x8d, 0x35, 0x75, 0x04, 0x00, 0x00, //0x000004a4 leaq $1141(%rip), %rsi /* _Digits+0(%rip) */
|
||||
0x8a, 0x04, 0x30, //0x000004ab movb (%rax,%rsi), %al
|
||||
0x89, 0xce, //0x000004ae movl %ecx, %esi
|
||||
0xff, 0xc1, //0x000004b0 incl %ecx
|
||||
0x88, 0x44, 0x37, 0x01, //0x000004b2 movb %al, $1(%rdi,%rsi)
|
||||
//0x000004b6 LBB0_39
|
||||
0x48, 0x8d, 0x05, 0x63, 0x04, 0x00, 0x00, //0x000004b6 leaq $1123(%rip), %rax /* _Digits+0(%rip) */
|
||||
0x41, 0x8a, 0x04, 0x01, //0x000004bd movb (%r9,%rax), %al
|
||||
0x89, 0xce, //0x000004c1 movl %ecx, %esi
|
||||
0xff, 0xc1, //0x000004c3 incl %ecx
|
||||
0x88, 0x44, 0x37, 0x01, //0x000004c5 movb %al, $1(%rdi,%rsi)
|
||||
//0x000004c9 LBB0_40
|
||||
0x41, 0x0f, 0xb7, 0xc1, //0x000004c9 movzwl %r9w, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x000004cd orq $1, %rax
|
||||
0x48, 0x8d, 0x35, 0x48, 0x04, 0x00, 0x00, //0x000004d1 leaq $1096(%rip), %rsi /* _Digits+0(%rip) */
|
||||
0x8a, 0x04, 0x30, //0x000004d8 movb (%rax,%rsi), %al
|
||||
0x89, 0xca, //0x000004db movl %ecx, %edx
|
||||
0x88, 0x44, 0x17, 0x01, //0x000004dd movb %al, $1(%rdi,%rdx)
|
||||
0x41, 0x8a, 0x04, 0x30, //0x000004e1 movb (%r8,%rsi), %al
|
||||
0x88, 0x44, 0x17, 0x02, //0x000004e5 movb %al, $2(%rdi,%rdx)
|
||||
0x41, 0x0f, 0xb7, 0xc0, //0x000004e9 movzwl %r8w, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x000004ed orq $1, %rax
|
||||
0x8a, 0x04, 0x30, //0x000004f1 movb (%rax,%rsi), %al
|
||||
0x88, 0x44, 0x17, 0x03, //0x000004f4 movb %al, $3(%rdi,%rdx)
|
||||
0x41, 0x8a, 0x04, 0x33, //0x000004f8 movb (%r11,%rsi), %al
|
||||
0x88, 0x44, 0x17, 0x04, //0x000004fc movb %al, $4(%rdi,%rdx)
|
||||
0x41, 0x0f, 0xb7, 0xc3, //0x00000500 movzwl %r11w, %eax
|
||||
0x48, 0x83, 0xc8, 0x01, //0x00000504 orq $1, %rax
|
||||
0x8a, 0x04, 0x30, //0x00000508 movb (%rax,%rsi), %al
|
||||
0x83, 0xc1, 0x05, //0x0000050b addl $5, %ecx
|
||||
0x88, 0x44, 0x17, 0x05, //0x0000050e movb %al, $5(%rdi,%rdx)
|
||||
0xff, 0xc1, //0x00000512 incl %ecx
|
||||
0x89, 0xc8, //0x00000514 movl %ecx, %eax
|
||||
0x5d, //0x00000516 popq %rbp
|
||||
0xc3, //0x00000517 retq
|
||||
//0x00000518 LBB0_38
|
||||
0x31, 0xc9, //0x00000518 xorl %ecx, %ecx
|
||||
0x81, 0xfe, 0xa0, 0x86, 0x01, 0x00, //0x0000051a cmpl $100000, %esi
|
||||
0x0f, 0x83, 0x90, 0xff, 0xff, 0xff, //0x00000520 jae LBB0_39
|
||||
0xe9, 0x9e, 0xff, 0xff, 0xff, //0x00000526 jmp LBB0_40
|
||||
//0x0000052b LBB0_41
|
||||
0x48, 0xb9, 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, //0x0000052b movabsq $10000000000000000, %rcx
|
||||
0x48, 0x39, 0xce, //0x00000535 cmpq %rcx, %rsi
|
||||
0x0f, 0x83, 0x71, 0x02, 0x00, 0x00, //0x00000538 jae LBB0_43
|
||||
0x48, 0xb9, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x0000053e movabsq $-6067343680855748867, %rcx
|
||||
0x48, 0x89, 0xf0, //0x00000548 movq %rsi, %rax
|
||||
0x48, 0xf7, 0xe1, //0x0000054b mulq %rcx
|
||||
0x48, 0xc1, 0xea, 0x1a, //0x0000054e shrq $26, %rdx
|
||||
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x00000552 imull $100000000, %edx, %eax
|
||||
0x29, 0xc6, //0x00000558 subl %eax, %esi
|
||||
0xc5, 0xf9, 0x6e, 0xc2, //0x0000055a vmovd %edx, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0x9a, 0xfa, 0xff, 0xff, //0x0000055e vmovdqu $-1382(%rip), %xmm1 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0xf9, 0xf4, 0xd1, //0x00000566 vpmuludq %xmm1, %xmm0, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x0000056a vpsrlq $45, %xmm2, %xmm2
|
||||
0xb8, 0x10, 0x27, 0x00, 0x00, //0x0000056f movl $10000, %eax
|
||||
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x00000574 vmovq %rax, %xmm3
|
||||
0xc5, 0xe9, 0xf4, 0xe3, //0x00000579 vpmuludq %xmm3, %xmm2, %xmm4
|
||||
0xc5, 0xf9, 0xfa, 0xc4, //0x0000057d vpsubd %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xe9, 0x61, 0xc0, //0x00000581 vpunpcklwd %xmm0, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000585 vpsllq $2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x0000058a vpshuflw $80, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x0000058f vpshufd $80, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x15, 0x94, 0xfa, 0xff, 0xff, //0x00000594 vmovddup $-1388(%rip), %xmm2 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc2, //0x0000059c vpmulhuw %xmm2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x25, 0x90, 0xfa, 0xff, 0xff, //0x000005a0 vmovddup $-1392(%rip), %xmm4 /* LCPI0_2+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc4, //0x000005a8 vpmulhuw %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x2d, 0x5c, 0xfa, 0xff, 0xff, //0x000005ac vmovdqu $-1444(%rip), %xmm5 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xf9, 0xd5, 0xf5, //0x000005b4 vpmullw %xmm5, %xmm0, %xmm6
|
||||
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000005b8 vpsllq $16, %xmm6, %xmm6
|
||||
0xc5, 0xf9, 0xf9, 0xc6, //0x000005bd vpsubw %xmm6, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0x6e, 0xf6, //0x000005c1 vmovd %esi, %xmm6
|
||||
0xc5, 0xc9, 0xf4, 0xc9, //0x000005c5 vpmuludq %xmm1, %xmm6, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000005c9 vpsrlq $45, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xf4, 0xdb, //0x000005ce vpmuludq %xmm3, %xmm1, %xmm3
|
||||
0xc5, 0xc9, 0xfa, 0xdb, //0x000005d2 vpsubd %xmm3, %xmm6, %xmm3
|
||||
0xc5, 0xf1, 0x61, 0xcb, //0x000005d6 vpunpcklwd %xmm3, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000005da vpsllq $2, %xmm1, %xmm1
|
||||
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000005df vpshuflw $80, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000005e4 vpshufd $80, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xca, //0x000005e9 vpmulhuw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xcc, //0x000005ed vpmulhuw %xmm4, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xd5, 0xd5, //0x000005f1 vpmullw %xmm5, %xmm1, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000005f5 vpsllq $16, %xmm2, %xmm2
|
||||
0xc5, 0xf1, 0xf9, 0xca, //0x000005fa vpsubw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x67, 0xc1, //0x000005fe vpackuswb %xmm1, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0xfc, 0x0d, 0x16, 0xfa, 0xff, 0xff, //0x00000602 vpaddb $-1514(%rip), %xmm0, %xmm1 /* LCPI0_4+0(%rip) */
|
||||
0xc5, 0xe9, 0xef, 0xd2, //0x0000060a vpxor %xmm2, %xmm2, %xmm2
|
||||
0xc5, 0xf9, 0x74, 0xc2, //0x0000060e vpcmpeqb %xmm2, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc0, //0x00000612 vpmovmskb %xmm0, %eax
|
||||
0x0d, 0x00, 0x80, 0x00, 0x00, //0x00000616 orl $32768, %eax
|
||||
0x35, 0xff, 0x7f, 0xff, 0xff, //0x0000061b xorl $-32769, %eax
|
||||
0x0f, 0xbc, 0xc0, //0x00000620 bsfl %eax, %eax
|
||||
0xb9, 0x10, 0x00, 0x00, 0x00, //0x00000623 movl $16, %ecx
|
||||
0x29, 0xc1, //0x00000628 subl %eax, %ecx
|
||||
0x48, 0xc1, 0xe0, 0x04, //0x0000062a shlq $4, %rax
|
||||
0x48, 0x8d, 0x15, 0xbb, 0x03, 0x00, 0x00, //0x0000062e leaq $955(%rip), %rdx /* _VecShiftShuffles+0(%rip) */
|
||||
0xc4, 0xe2, 0x71, 0x00, 0x04, 0x10, //0x00000635 vpshufb (%rax,%rdx), %xmm1, %xmm0
|
||||
0xc5, 0xfa, 0x7f, 0x47, 0x01, //0x0000063b vmovdqu %xmm0, $1(%rdi)
|
||||
0xff, 0xc1, //0x00000640 incl %ecx
|
||||
0x89, 0xc8, //0x00000642 movl %ecx, %eax
|
||||
0x5d, //0x00000644 popq %rbp
|
||||
0xc3, //0x00000645 retq
|
||||
//0x00000646 LBB0_19
|
||||
0x48, 0xba, 0x57, 0x78, 0x13, 0xb1, 0x2f, 0x65, 0xa5, 0x39, //0x00000646 movabsq $4153837486827862103, %rdx
|
||||
0x48, 0x89, 0xf0, //0x00000650 movq %rsi, %rax
|
||||
0x48, 0xf7, 0xe2, //0x00000653 mulq %rdx
|
||||
0x48, 0xc1, 0xea, 0x33, //0x00000656 shrq $51, %rdx
|
||||
0x48, 0x0f, 0xaf, 0xca, //0x0000065a imulq %rdx, %rcx
|
||||
0x48, 0x29, 0xce, //0x0000065e subq %rcx, %rsi
|
||||
0x83, 0xfa, 0x09, //0x00000661 cmpl $9, %edx
|
||||
0x0f, 0x87, 0x0f, 0x00, 0x00, 0x00, //0x00000664 ja LBB0_21
|
||||
0x80, 0xc2, 0x30, //0x0000066a addb $48, %dl
|
||||
0x88, 0x17, //0x0000066d movb %dl, (%rdi)
|
||||
0xb9, 0x01, 0x00, 0x00, 0x00, //0x0000066f movl $1, %ecx
|
||||
0xe9, 0x5c, 0x00, 0x00, 0x00, //0x00000674 jmp LBB0_24
|
||||
//0x00000679 LBB0_21
|
||||
0x83, 0xfa, 0x63, //0x00000679 cmpl $99, %edx
|
||||
0x0f, 0x87, 0x1f, 0x00, 0x00, 0x00, //0x0000067c ja LBB0_23
|
||||
0x89, 0xd0, //0x00000682 movl %edx, %eax
|
||||
0x48, 0x8d, 0x0d, 0x95, 0x02, 0x00, 0x00, //0x00000684 leaq $661(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x41, //0x0000068b movb (%rcx,%rax,2), %dl
|
||||
0x8a, 0x44, 0x41, 0x01, //0x0000068e movb $1(%rcx,%rax,2), %al
|
||||
0x88, 0x17, //0x00000692 movb %dl, (%rdi)
|
||||
0x88, 0x47, 0x01, //0x00000694 movb %al, $1(%rdi)
|
||||
0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000697 movl $2, %ecx
|
||||
0xe9, 0x34, 0x00, 0x00, 0x00, //0x0000069c jmp LBB0_24
|
||||
//0x000006a1 LBB0_23
|
||||
0x89, 0xd0, //0x000006a1 movl %edx, %eax
|
||||
0xc1, 0xe8, 0x02, //0x000006a3 shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x000006a6 imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x000006ac shrl $17, %eax
|
||||
0x8d, 0x48, 0x30, //0x000006af leal $48(%rax), %ecx
|
||||
0x88, 0x0f, //0x000006b2 movb %cl, (%rdi)
|
||||
0x6b, 0xc0, 0x64, //0x000006b4 imull $100, %eax, %eax
|
||||
0x29, 0xc2, //0x000006b7 subl %eax, %edx
|
||||
0x0f, 0xb7, 0xc2, //0x000006b9 movzwl %dx, %eax
|
||||
0x48, 0x8d, 0x0d, 0x5d, 0x02, 0x00, 0x00, //0x000006bc leaq $605(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x41, //0x000006c3 movb (%rcx,%rax,2), %dl
|
||||
0x8a, 0x44, 0x41, 0x01, //0x000006c6 movb $1(%rcx,%rax,2), %al
|
||||
0x88, 0x57, 0x01, //0x000006ca movb %dl, $1(%rdi)
|
||||
0x88, 0x47, 0x02, //0x000006cd movb %al, $2(%rdi)
|
||||
0xb9, 0x03, 0x00, 0x00, 0x00, //0x000006d0 movl $3, %ecx
|
||||
//0x000006d5 LBB0_24
|
||||
0x48, 0xba, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x000006d5 movabsq $-6067343680855748867, %rdx
|
||||
0x48, 0x89, 0xf0, //0x000006df movq %rsi, %rax
|
||||
0x48, 0xf7, 0xe2, //0x000006e2 mulq %rdx
|
||||
0x48, 0xc1, 0xea, 0x1a, //0x000006e5 shrq $26, %rdx
|
||||
0xc5, 0xf9, 0x6e, 0xc2, //0x000006e9 vmovd %edx, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0x0b, 0xf9, 0xff, 0xff, //0x000006ed vmovdqu $-1781(%rip), %xmm1 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0xf9, 0xf4, 0xd1, //0x000006f5 vpmuludq %xmm1, %xmm0, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x000006f9 vpsrlq $45, %xmm2, %xmm2
|
||||
0xb8, 0x10, 0x27, 0x00, 0x00, //0x000006fe movl $10000, %eax
|
||||
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x00000703 vmovq %rax, %xmm3
|
||||
0xc5, 0xe9, 0xf4, 0xe3, //0x00000708 vpmuludq %xmm3, %xmm2, %xmm4
|
||||
0xc5, 0xf9, 0xfa, 0xc4, //0x0000070c vpsubd %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xe9, 0x61, 0xc0, //0x00000710 vpunpcklwd %xmm0, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000714 vpsllq $2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x00000719 vpshuflw $80, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x0000071e vpshufd $80, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x15, 0x05, 0xf9, 0xff, 0xff, //0x00000723 vmovddup $-1787(%rip), %xmm2 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc2, //0x0000072b vpmulhuw %xmm2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x25, 0x01, 0xf9, 0xff, 0xff, //0x0000072f vmovddup $-1791(%rip), %xmm4 /* LCPI0_2+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc4, //0x00000737 vpmulhuw %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x2d, 0xcd, 0xf8, 0xff, 0xff, //0x0000073b vmovdqu $-1843(%rip), %xmm5 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xf9, 0xd5, 0xf5, //0x00000743 vpmullw %xmm5, %xmm0, %xmm6
|
||||
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x00000747 vpsllq $16, %xmm6, %xmm6
|
||||
0xc5, 0xf9, 0xf9, 0xc6, //0x0000074c vpsubw %xmm6, %xmm0, %xmm0
|
||||
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x00000750 imull $100000000, %edx, %eax
|
||||
0x29, 0xc6, //0x00000756 subl %eax, %esi
|
||||
0xc5, 0xf9, 0x6e, 0xf6, //0x00000758 vmovd %esi, %xmm6
|
||||
0xc5, 0xc9, 0xf4, 0xc9, //0x0000075c vpmuludq %xmm1, %xmm6, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x00000760 vpsrlq $45, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xf4, 0xdb, //0x00000765 vpmuludq %xmm3, %xmm1, %xmm3
|
||||
0xc5, 0xc9, 0xfa, 0xdb, //0x00000769 vpsubd %xmm3, %xmm6, %xmm3
|
||||
0xc5, 0xf1, 0x61, 0xcb, //0x0000076d vpunpcklwd %xmm3, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x00000771 vpsllq $2, %xmm1, %xmm1
|
||||
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x00000776 vpshuflw $80, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x0000077b vpshufd $80, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xca, //0x00000780 vpmulhuw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xcc, //0x00000784 vpmulhuw %xmm4, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xd5, 0xd5, //0x00000788 vpmullw %xmm5, %xmm1, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x0000078c vpsllq $16, %xmm2, %xmm2
|
||||
0xc5, 0xf1, 0xf9, 0xca, //0x00000791 vpsubw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x67, 0xc1, //0x00000795 vpackuswb %xmm1, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0xfc, 0x05, 0x7f, 0xf8, 0xff, 0xff, //0x00000799 vpaddb $-1921(%rip), %xmm0, %xmm0 /* LCPI0_4+0(%rip) */
|
||||
0x89, 0xc8, //0x000007a1 movl %ecx, %eax
|
||||
0xc5, 0xfa, 0x7f, 0x04, 0x07, //0x000007a3 vmovdqu %xmm0, (%rdi,%rax)
|
||||
0x83, 0xc9, 0x10, //0x000007a8 orl $16, %ecx
|
||||
0x89, 0xc8, //0x000007ab movl %ecx, %eax
|
||||
0x5d, //0x000007ad popq %rbp
|
||||
0xc3, //0x000007ae retq
|
||||
//0x000007af LBB0_43
|
||||
0x48, 0xba, 0x57, 0x78, 0x13, 0xb1, 0x2f, 0x65, 0xa5, 0x39, //0x000007af movabsq $4153837486827862103, %rdx
|
||||
0x48, 0x89, 0xf0, //0x000007b9 movq %rsi, %rax
|
||||
0x48, 0xf7, 0xe2, //0x000007bc mulq %rdx
|
||||
0x48, 0xc1, 0xea, 0x33, //0x000007bf shrq $51, %rdx
|
||||
0x48, 0x0f, 0xaf, 0xca, //0x000007c3 imulq %rdx, %rcx
|
||||
0x48, 0x29, 0xce, //0x000007c7 subq %rcx, %rsi
|
||||
0x83, 0xfa, 0x09, //0x000007ca cmpl $9, %edx
|
||||
0x0f, 0x87, 0x10, 0x00, 0x00, 0x00, //0x000007cd ja LBB0_45
|
||||
0x80, 0xc2, 0x30, //0x000007d3 addb $48, %dl
|
||||
0x88, 0x57, 0x01, //0x000007d6 movb %dl, $1(%rdi)
|
||||
0xb9, 0x01, 0x00, 0x00, 0x00, //0x000007d9 movl $1, %ecx
|
||||
0xe9, 0x5e, 0x00, 0x00, 0x00, //0x000007de jmp LBB0_48
|
||||
//0x000007e3 LBB0_45
|
||||
0x83, 0xfa, 0x63, //0x000007e3 cmpl $99, %edx
|
||||
0x0f, 0x87, 0x20, 0x00, 0x00, 0x00, //0x000007e6 ja LBB0_47
|
||||
0x89, 0xd0, //0x000007ec movl %edx, %eax
|
||||
0x48, 0x8d, 0x0d, 0x2b, 0x01, 0x00, 0x00, //0x000007ee leaq $299(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x41, //0x000007f5 movb (%rcx,%rax,2), %dl
|
||||
0x8a, 0x44, 0x41, 0x01, //0x000007f8 movb $1(%rcx,%rax,2), %al
|
||||
0x88, 0x57, 0x01, //0x000007fc movb %dl, $1(%rdi)
|
||||
0x88, 0x47, 0x02, //0x000007ff movb %al, $2(%rdi)
|
||||
0xb9, 0x02, 0x00, 0x00, 0x00, //0x00000802 movl $2, %ecx
|
||||
0xe9, 0x35, 0x00, 0x00, 0x00, //0x00000807 jmp LBB0_48
|
||||
//0x0000080c LBB0_47
|
||||
0x89, 0xd0, //0x0000080c movl %edx, %eax
|
||||
0xc1, 0xe8, 0x02, //0x0000080e shrl $2, %eax
|
||||
0x69, 0xc0, 0x7b, 0x14, 0x00, 0x00, //0x00000811 imull $5243, %eax, %eax
|
||||
0xc1, 0xe8, 0x11, //0x00000817 shrl $17, %eax
|
||||
0x8d, 0x48, 0x30, //0x0000081a leal $48(%rax), %ecx
|
||||
0x88, 0x4f, 0x01, //0x0000081d movb %cl, $1(%rdi)
|
||||
0x6b, 0xc0, 0x64, //0x00000820 imull $100, %eax, %eax
|
||||
0x29, 0xc2, //0x00000823 subl %eax, %edx
|
||||
0x0f, 0xb7, 0xc2, //0x00000825 movzwl %dx, %eax
|
||||
0x48, 0x8d, 0x0d, 0xf1, 0x00, 0x00, 0x00, //0x00000828 leaq $241(%rip), %rcx /* _Digits+0(%rip) */
|
||||
0x8a, 0x14, 0x41, //0x0000082f movb (%rcx,%rax,2), %dl
|
||||
0x8a, 0x44, 0x41, 0x01, //0x00000832 movb $1(%rcx,%rax,2), %al
|
||||
0x88, 0x57, 0x02, //0x00000836 movb %dl, $2(%rdi)
|
||||
0x88, 0x47, 0x03, //0x00000839 movb %al, $3(%rdi)
|
||||
0xb9, 0x03, 0x00, 0x00, 0x00, //0x0000083c movl $3, %ecx
|
||||
//0x00000841 LBB0_48
|
||||
0x48, 0xba, 0xfd, 0xce, 0x61, 0x84, 0x11, 0x77, 0xcc, 0xab, //0x00000841 movabsq $-6067343680855748867, %rdx
|
||||
0x48, 0x89, 0xf0, //0x0000084b movq %rsi, %rax
|
||||
0x48, 0xf7, 0xe2, //0x0000084e mulq %rdx
|
||||
0x48, 0xc1, 0xea, 0x1a, //0x00000851 shrq $26, %rdx
|
||||
0xc5, 0xf9, 0x6e, 0xc2, //0x00000855 vmovd %edx, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0x9f, 0xf7, 0xff, 0xff, //0x00000859 vmovdqu $-2145(%rip), %xmm1 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0xf9, 0xf4, 0xd1, //0x00000861 vpmuludq %xmm1, %xmm0, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xd2, 0x2d, //0x00000865 vpsrlq $45, %xmm2, %xmm2
|
||||
0xb8, 0x10, 0x27, 0x00, 0x00, //0x0000086a movl $10000, %eax
|
||||
0xc4, 0xe1, 0xf9, 0x6e, 0xd8, //0x0000086f vmovq %rax, %xmm3
|
||||
0xc5, 0xe9, 0xf4, 0xe3, //0x00000874 vpmuludq %xmm3, %xmm2, %xmm4
|
||||
0xc5, 0xf9, 0xfa, 0xc4, //0x00000878 vpsubd %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xe9, 0x61, 0xc0, //0x0000087c vpunpcklwd %xmm0, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0x73, 0xf0, 0x02, //0x00000880 vpsllq $2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x70, 0xc0, 0x50, //0x00000885 vpshuflw $80, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0x70, 0xc0, 0x50, //0x0000088a vpshufd $80, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x15, 0x99, 0xf7, 0xff, 0xff, //0x0000088f vmovddup $-2151(%rip), %xmm2 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc2, //0x00000897 vpmulhuw %xmm2, %xmm0, %xmm0
|
||||
0xc5, 0xfb, 0x12, 0x25, 0x95, 0xf7, 0xff, 0xff, //0x0000089b vmovddup $-2155(%rip), %xmm4 /* LCPI0_2+0(%rip) */
|
||||
0xc5, 0xf9, 0xe4, 0xc4, //0x000008a3 vpmulhuw %xmm4, %xmm0, %xmm0
|
||||
0xc5, 0xfa, 0x6f, 0x2d, 0x61, 0xf7, 0xff, 0xff, //0x000008a7 vmovdqu $-2207(%rip), %xmm5 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xf9, 0xd5, 0xf5, //0x000008af vpmullw %xmm5, %xmm0, %xmm6
|
||||
0xc5, 0xc9, 0x73, 0xf6, 0x10, //0x000008b3 vpsllq $16, %xmm6, %xmm6
|
||||
0xc5, 0xf9, 0xf9, 0xc6, //0x000008b8 vpsubw %xmm6, %xmm0, %xmm0
|
||||
0x69, 0xc2, 0x00, 0xe1, 0xf5, 0x05, //0x000008bc imull $100000000, %edx, %eax
|
||||
0x29, 0xc6, //0x000008c2 subl %eax, %esi
|
||||
0xc5, 0xf9, 0x6e, 0xf6, //0x000008c4 vmovd %esi, %xmm6
|
||||
0xc5, 0xc9, 0xf4, 0xc9, //0x000008c8 vpmuludq %xmm1, %xmm6, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xd1, 0x2d, //0x000008cc vpsrlq $45, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xf4, 0xdb, //0x000008d1 vpmuludq %xmm3, %xmm1, %xmm3
|
||||
0xc5, 0xc9, 0xfa, 0xdb, //0x000008d5 vpsubd %xmm3, %xmm6, %xmm3
|
||||
0xc5, 0xf1, 0x61, 0xcb, //0x000008d9 vpunpcklwd %xmm3, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0x73, 0xf1, 0x02, //0x000008dd vpsllq $2, %xmm1, %xmm1
|
||||
0xc5, 0xfb, 0x70, 0xc9, 0x50, //0x000008e2 vpshuflw $80, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x70, 0xc9, 0x50, //0x000008e7 vpshufd $80, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xca, //0x000008ec vpmulhuw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xe4, 0xcc, //0x000008f0 vpmulhuw %xmm4, %xmm1, %xmm1
|
||||
0xc5, 0xf1, 0xd5, 0xd5, //0x000008f4 vpmullw %xmm5, %xmm1, %xmm2
|
||||
0xc5, 0xe9, 0x73, 0xf2, 0x10, //0x000008f8 vpsllq $16, %xmm2, %xmm2
|
||||
0xc5, 0xf1, 0xf9, 0xca, //0x000008fd vpsubw %xmm2, %xmm1, %xmm1
|
||||
0xc5, 0xf9, 0x67, 0xc1, //0x00000901 vpackuswb %xmm1, %xmm0, %xmm0
|
||||
0xc5, 0xf9, 0xfc, 0x05, 0x13, 0xf7, 0xff, 0xff, //0x00000905 vpaddb $-2285(%rip), %xmm0, %xmm0 /* LCPI0_4+0(%rip) */
|
||||
0x89, 0xc8, //0x0000090d movl %ecx, %eax
|
||||
0xc5, 0xfa, 0x7f, 0x44, 0x07, 0x01, //0x0000090f vmovdqu %xmm0, $1(%rdi,%rax)
|
||||
0x83, 0xc9, 0x10, //0x00000915 orl $16, %ecx
|
||||
0xff, 0xc1, //0x00000918 incl %ecx
|
||||
0x89, 0xc8, //0x0000091a movl %ecx, %eax
|
||||
0x5d, //0x0000091c popq %rbp
|
||||
0xc3, //0x0000091d retq
|
||||
0x00, 0x00, //0x0000091e .p2align 4, 0x00
|
||||
//0x00000920 _Digits
|
||||
0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x30, 0x33, 0x30, 0x34, 0x30, 0x35, 0x30, 0x36, 0x30, 0x37, //0x00000920 QUAD $0x3330323031303030; QUAD $0x3730363035303430 // .ascii 16, '0001020304050607'
|
||||
0x30, 0x38, 0x30, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, //0x00000930 QUAD $0x3131303139303830; QUAD $0x3531343133313231 // .ascii 16, '0809101112131415'
|
||||
0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, //0x00000940 QUAD $0x3931383137313631; QUAD $0x3332323231323032 // .ascii 16, '1617181920212223'
|
||||
0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, //0x00000950 QUAD $0x3732363235323432; QUAD $0x3133303339323832 // .ascii 16, '2425262728293031'
|
||||
0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, //0x00000960 QUAD $0x3533343333333233; QUAD $0x3933383337333633 // .ascii 16, '3233343536373839'
|
||||
0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, //0x00000970 QUAD $0x3334323431343034; QUAD $0x3734363435343434 // .ascii 16, '4041424344454647'
|
||||
0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x35, 0x31, 0x35, 0x32, 0x35, 0x33, 0x35, 0x34, 0x35, 0x35, //0x00000980 QUAD $0x3135303539343834; QUAD $0x3535343533353235 // .ascii 16, '4849505152535455'
|
||||
0x35, 0x36, 0x35, 0x37, 0x35, 0x38, 0x35, 0x39, 0x36, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x33, //0x00000990 QUAD $0x3935383537353635; QUAD $0x3336323631363036 // .ascii 16, '5657585960616263'
|
||||
0x36, 0x34, 0x36, 0x35, 0x36, 0x36, 0x36, 0x37, 0x36, 0x38, 0x36, 0x39, 0x37, 0x30, 0x37, 0x31, //0x000009a0 QUAD $0x3736363635363436; QUAD $0x3137303739363836 // .ascii 16, '6465666768697071'
|
||||
0x37, 0x32, 0x37, 0x33, 0x37, 0x34, 0x37, 0x35, 0x37, 0x36, 0x37, 0x37, 0x37, 0x38, 0x37, 0x39, //0x000009b0 QUAD $0x3537343733373237; QUAD $0x3937383737373637 // .ascii 16, '7273747576777879'
|
||||
0x38, 0x30, 0x38, 0x31, 0x38, 0x32, 0x38, 0x33, 0x38, 0x34, 0x38, 0x35, 0x38, 0x36, 0x38, 0x37, //0x000009c0 QUAD $0x3338323831383038; QUAD $0x3738363835383438 // .ascii 16, '8081828384858687'
|
||||
0x38, 0x38, 0x38, 0x39, 0x39, 0x30, 0x39, 0x31, 0x39, 0x32, 0x39, 0x33, 0x39, 0x34, 0x39, 0x35, //0x000009d0 QUAD $0x3139303939383838; QUAD $0x3539343933393239 // .ascii 16, '8889909192939495'
|
||||
0x39, 0x36, 0x39, 0x37, 0x39, 0x38, 0x39, 0x39, //0x000009e0 QUAD $0x3939383937393639 // .ascii 8, '96979899'
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x000009e8 .p2align 4, 0x00
|
||||
//0x000009f0 _VecShiftShuffles
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, //0x000009f0 QUAD $0x0706050403020100; QUAD $0x0f0e0d0c0b0a0908 // .ascii 16, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, //0x00000a00 QUAD $0x0807060504030201; QUAD $0xff0f0e0d0c0b0a09 // .ascii 16, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
|
||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, //0x00000a10 QUAD $0x0908070605040302; QUAD $0xffff0f0e0d0c0b0a // .ascii 16, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
|
||||
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, //0x00000a20 QUAD $0x0a09080706050403; QUAD $0xffffff0f0e0d0c0b // .ascii 16, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
|
||||
0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, //0x00000a30 QUAD $0x0b0a090807060504; QUAD $0xffffffff0f0e0d0c // .ascii 16, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
|
||||
0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a40 QUAD $0x0c0b0a0908070605; QUAD $0xffffffffff0f0e0d // .ascii 16, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff'
|
||||
0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a50 QUAD $0x0d0c0b0a09080706; QUAD $0xffffffffffff0f0e // .ascii 16, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff'
|
||||
0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a60 QUAD $0x0e0d0c0b0a090807; QUAD $0xffffffffffffff0f // .ascii 16, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff'
|
||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //0x00000a70 QUAD $0x0f0e0d0c0b0a0908; QUAD $0xffffffffffffffff // .ascii 16, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
|
||||
}
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_lspace func(sp unsafe.Pointer, nb int, off int) (ret int)
|
||||
|
||||
var S_lspace uintptr
|
||||
|
||||
//go:nosplit
|
||||
func lspace(sp *byte, nb int, off int) (ret int) {
|
||||
return F_lspace(rt.NoEscape(unsafe.Pointer(sp)), nb, off)
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__lspace = 0
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__lspace = 8
|
||||
)
|
||||
|
||||
const (
|
||||
_size__lspace = 113
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__lspace = [][2]uint32{
|
||||
{1, 0},
|
||||
{89, 8},
|
||||
{90, 0},
|
||||
{103, 8},
|
||||
{104, 0},
|
||||
{111, 8},
|
||||
{113, 0},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_lspace = []loader.CFunc{
|
||||
{"_lspace_entry", 0, _entry__lspace, 0, nil},
|
||||
{"_lspace", _entry__lspace, _size__lspace, _stack__lspace, _pcsp__lspace},
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
// +build amd64
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
var _text_lspace = []byte{
|
||||
// .p2align 4, 0x90
|
||||
// _lspace
|
||||
0x55, // pushq %rbp
|
||||
0x48, 0x89, 0xe5, //0x00000001 movq %rsp, %rbp
|
||||
0x48, 0x39, 0xd6, //0x00000004 cmpq %rdx, %rsi
|
||||
0x0f, 0x84, 0x4e, 0x00, 0x00, 0x00, //0x00000007 je LBB0_1
|
||||
0x4c, 0x8d, 0x04, 0x37, //0x0000000d leaq (%rdi,%rsi), %r8
|
||||
0x48, 0x8d, 0x44, 0x3a, 0x01, //0x00000011 leaq $1(%rdx,%rdi), %rax
|
||||
0x48, 0x29, 0xf2, //0x00000016 subq %rsi, %rdx
|
||||
0x48, 0xbe, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000019 movabsq $4294977024, %rsi
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000023 .p2align 4, 0x90
|
||||
//0x00000030 LBB0_3
|
||||
0x0f, 0xbe, 0x48, 0xff, //0x00000030 movsbl $-1(%rax), %ecx
|
||||
0x83, 0xf9, 0x20, //0x00000034 cmpl $32, %ecx
|
||||
0x0f, 0x87, 0x2c, 0x00, 0x00, 0x00, //0x00000037 ja LBB0_5
|
||||
0x48, 0x0f, 0xa3, 0xce, //0x0000003d btq %rcx, %rsi
|
||||
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00000041 jae LBB0_5
|
||||
0x48, 0xff, 0xc0, //0x00000047 incq %rax
|
||||
0x48, 0xff, 0xc2, //0x0000004a incq %rdx
|
||||
0x0f, 0x85, 0xdd, 0xff, 0xff, 0xff, //0x0000004d jne LBB0_3
|
||||
0x49, 0x29, 0xf8, //0x00000053 subq %rdi, %r8
|
||||
0x4c, 0x89, 0xc0, //0x00000056 movq %r8, %rax
|
||||
0x5d, //0x00000059 popq %rbp
|
||||
0xc3, //0x0000005a retq
|
||||
//0x0000005b LBB0_1
|
||||
0x48, 0x01, 0xfa, //0x0000005b addq %rdi, %rdx
|
||||
0x49, 0x89, 0xd0, //0x0000005e movq %rdx, %r8
|
||||
0x49, 0x29, 0xf8, //0x00000061 subq %rdi, %r8
|
||||
0x4c, 0x89, 0xc0, //0x00000064 movq %r8, %rax
|
||||
0x5d, //0x00000067 popq %rbp
|
||||
0xc3, //0x00000068 retq
|
||||
//0x00000069 LBB0_5
|
||||
0x48, 0xf7, 0xd7, //0x00000069 notq %rdi
|
||||
0x48, 0x01, 0xf8, //0x0000006c addq %rdi, %rax
|
||||
0x5d, //0x0000006f popq %rbp
|
||||
0xc3, //0x00000070 retq
|
||||
}
|
||||
|
||||
-191
@@ -1,191 +0,0 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var (
|
||||
__i64toa func(out unsafe.Pointer, val int64) (ret int)
|
||||
|
||||
__u64toa func(out unsafe.Pointer, val uint64) (ret int)
|
||||
|
||||
__f64toa func(out unsafe.Pointer, val float64) (ret int)
|
||||
|
||||
__f32toa func(out unsafe.Pointer, val float32) (ret int)
|
||||
|
||||
__lspace func(sp unsafe.Pointer, nb int, off int) (ret int)
|
||||
|
||||
__quote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
__html_escape func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer) (ret int)
|
||||
|
||||
__unquote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, ep unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
__value func(s unsafe.Pointer, n int, p int, v unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
__vstring func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer, flags uint64)
|
||||
|
||||
__vnumber func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer)
|
||||
|
||||
__vsigned func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer)
|
||||
|
||||
__vunsigned func(s unsafe.Pointer, p unsafe.Pointer, v unsafe.Pointer)
|
||||
|
||||
__skip_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
__skip_one_fast func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
|
||||
|
||||
__skip_array func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
__skip_object func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
__skip_number func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
|
||||
|
||||
__validate_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer) (ret int)
|
||||
|
||||
__get_by_path func(s unsafe.Pointer, p unsafe.Pointer, path unsafe.Pointer, m unsafe.Pointer) (ret int)
|
||||
|
||||
__validate_utf8 func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer) (ret int)
|
||||
|
||||
__validate_utf8_fast func(s unsafe.Pointer) (ret int)
|
||||
|
||||
__fsm_exec func(m unsafe.Pointer, s unsafe.Pointer, p unsafe.Pointer, flags uint64) (ret int)
|
||||
)
|
||||
|
||||
//go:nosplit
|
||||
func i64toa(out *byte, val int64) (ret int) {
|
||||
return __i64toa(rt.NoEscape(unsafe.Pointer(out)), val)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func u64toa(out *byte, val uint64) (ret int) {
|
||||
return __u64toa(rt.NoEscape(unsafe.Pointer(out)), val)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func f64toa(out *byte, val float64) (ret int) {
|
||||
return __f64toa(rt.NoEscape(unsafe.Pointer(out)), val)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func f32toa(out *byte, val float32) (ret int) {
|
||||
return __f32toa(rt.NoEscape(unsafe.Pointer(out)), val)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func lspace(sp unsafe.Pointer, nb int, off int) (ret int) {
|
||||
return __lspace(rt.NoEscape(sp), nb, off)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func quote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int, flags uint64) (ret int) {
|
||||
return __quote(rt.NoEscape(unsafe.Pointer(sp)), nb, rt.NoEscape(unsafe.Pointer(dp)), rt.NoEscape(unsafe.Pointer(dn)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func html_escape(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int) (ret int) {
|
||||
return __html_escape(rt.NoEscape(unsafe.Pointer(sp)), nb, rt.NoEscape(unsafe.Pointer(dp)), rt.NoEscape(unsafe.Pointer(dn)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func unquote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, ep *int, flags uint64) (ret int) {
|
||||
return __unquote(rt.NoEscape(unsafe.Pointer(sp)), nb, rt.NoEscape(unsafe.Pointer(dp)), rt.NoEscape(unsafe.Pointer(ep)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func value(s unsafe.Pointer, n int, p int, v *types.JsonState, flags uint64) (ret int) {
|
||||
return __value(rt.NoEscape(unsafe.Pointer(s)), n, p, rt.NoEscape(unsafe.Pointer(v)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func vstring(s *string, p *int, v *types.JsonState, flags uint64) {
|
||||
__vstring(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func vnumber(s *string, p *int, v *types.JsonState) {
|
||||
__vnumber(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func vsigned(s *string, p *int, v *types.JsonState) {
|
||||
__vsigned(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func vunsigned(s *string, p *int, v *types.JsonState) {
|
||||
__vunsigned(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(v)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func skip_one(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
|
||||
return __skip_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func skip_one_fast(s *string, p *int) (ret int) {
|
||||
return __skip_one_fast(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func skip_array(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
|
||||
return __skip_array(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func skip_object(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
|
||||
return __skip_object(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func skip_number(s *string, p *int) (ret int) {
|
||||
return __skip_number(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func validate_one(s *string, p *int, m *types.StateMachine) (ret int) {
|
||||
return __validate_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func get_by_path(s *string, p *int, path *[]interface{}, m *types.StateMachine) (ret int) {
|
||||
return __get_by_path(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(path)), rt.NoEscape(unsafe.Pointer(m)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func validate_utf8(s *string, p *int, m *types.StateMachine) (ret int) {
|
||||
return __validate_utf8(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func validate_utf8_fast(s *string) (ret int) {
|
||||
return __validate_utf8_fast(rt.NoEscape(unsafe.Pointer(s)))
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func fsm_exec(m *types.StateMachine, s *string, p *int, flags uint64) (ret int) {
|
||||
return __fsm_exec(rt.NoEscape(unsafe.Pointer(m)), rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), flags)
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
|
||||
func Use() {
|
||||
loader.WrapGoC(_text_f64toa, _cfunc_f64toa, []loader.GoC{{"_f64toa", &S_f64toa, &F_f64toa}}, "avx", "avx/f64toa.c")
|
||||
loader.WrapGoC(_text_f32toa, _cfunc_f32toa, []loader.GoC{{"_f32toa", &S_f32toa, &F_f32toa}}, "avx", "avx/f32toa.c")
|
||||
loader.WrapGoC(_text_get_by_path, _cfunc_get_by_path, []loader.GoC{{"_get_by_path", &S_get_by_path, &F_get_by_path}}, "avx", "avx/get_by_path.c")
|
||||
loader.WrapGoC(_text_html_escape, _cfunc_html_escape, []loader.GoC{{"_html_escape", &S_html_escape, &F_html_escape}}, "avx", "avx/html_escape.c")
|
||||
loader.WrapGoC(_text_i64toa, _cfunc_i64toa, []loader.GoC{{"_i64toa", &S_i64toa, &F_i64toa}}, "avx", "avx/i64toa.c")
|
||||
loader.WrapGoC(_text_lspace, _cfunc_lspace, []loader.GoC{{"_lspace", &S_lspace, &F_lspace}}, "avx", "avx/lspace.c")
|
||||
loader.WrapGoC(_text_quote, _cfunc_quote, []loader.GoC{{"_quote", &S_quote, &F_quote}}, "avx", "avx/quote.c")
|
||||
loader.WrapGoC(_text_skip_array, _cfunc_skip_array, []loader.GoC{{"_skip_array", &S_skip_array, &F_skip_array}}, "avx", "avx/skip_array.c")
|
||||
loader.WrapGoC(_text_skip_number, _cfunc_skip_number, []loader.GoC{{"_skip_number", &S_skip_number, &F_skip_number}}, "avx", "avx/skip_number.c")
|
||||
loader.WrapGoC(_text_skip_one, _cfunc_skip_one, []loader.GoC{{"_skip_one", &S_skip_one, &F_skip_one}}, "avx", "avx/skip_one.c")
|
||||
loader.WrapGoC(_text_skip_object, _cfunc_skip_object, []loader.GoC{{"_skip_object", &S_skip_object, &F_skip_object}}, "avx", "avx/skip_object.c")
|
||||
loader.WrapGoC(_text_skip_one_fast, _cfunc_skip_one_fast, []loader.GoC{{"_skip_one_fast", &S_skip_one_fast, &F_skip_one_fast}}, "avx", "avx/skip_one_fast.c")
|
||||
loader.WrapGoC(_text_u64toa, _cfunc_u64toa, []loader.GoC{{"_u64toa", &S_u64toa, &F_u64toa}}, "avx", "avx/u64toa.c")
|
||||
loader.WrapGoC(_text_unquote, _cfunc_unquote, []loader.GoC{{"_unquote", &S_unquote, &F_unquote}}, "avx", "avx/unquote.c")
|
||||
loader.WrapGoC(_text_validate_one, _cfunc_validate_one, []loader.GoC{{"_validate_one", &S_validate_one, &F_validate_one}}, "avx", "avx/validate_one.c")
|
||||
loader.WrapGoC(_text_validate_utf8, _cfunc_validate_utf8, []loader.GoC{{"_validate_utf8", &S_validate_utf8, &F_validate_utf8}}, "avx", "avx/validate_utf8.c")
|
||||
loader.WrapGoC(_text_validate_utf8_fast, _cfunc_validate_utf8_fast, []loader.GoC{{"_validate_utf8_fast", &S_validate_utf8_fast, &F_validate_utf8_fast}}, "avx", "avx/validate_utf8_fast.c")
|
||||
loader.WrapGoC(_text_vnumber, _cfunc_vnumber, []loader.GoC{{"_vnumber", &S_vnumber, &F_vnumber}}, "avx", "avx/vnumber.c")
|
||||
loader.WrapGoC(_text_vsigned, _cfunc_vsigned, []loader.GoC{{"_vsigned", &S_vsigned, &F_vsigned}}, "avx", "avx/vsigned.c")
|
||||
loader.WrapGoC(_text_vunsigned, _cfunc_vunsigned, []loader.GoC{{"_vunsigned", &S_vunsigned, &F_vunsigned}}, "avx", "avx/vunsigned.c")
|
||||
loader.WrapGoC(_text_vstring, _cfunc_vstring, []loader.GoC{{"_vstring", &S_vstring, &F_vstring}}, "avx", "avx/vstring.c")
|
||||
loader.WrapGoC(_text_value, _cfunc_value, []loader.GoC{{"_value", &S_value, &F_value}}, "avx", "avx/value.c")
|
||||
}
|
||||
-668
@@ -1,668 +0,0 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__f32toa = 31024
|
||||
_entry__f64toa = 176
|
||||
_entry__format_significand = 35808
|
||||
_entry__format_integer = 3424
|
||||
_entry__fsm_exec = 18816
|
||||
_entry__advance_string = 15056
|
||||
_entry__advance_string_default = 37344
|
||||
_entry__do_skip_number = 21376
|
||||
_entry__get_by_path = 26416
|
||||
_entry__skip_one_fast = 22880
|
||||
_entry__unescape = 38256
|
||||
_entry__unhex16_is = 9632
|
||||
_entry__html_escape = 9824
|
||||
_entry__i64toa = 3856
|
||||
_entry__u64toa = 4128
|
||||
_entry__lspace = 16
|
||||
_entry__quote = 5552
|
||||
_entry__skip_array = 18768
|
||||
_entry__skip_number = 22464
|
||||
_entry__skip_object = 21008
|
||||
_entry__skip_one = 22640
|
||||
_entry__unquote = 7296
|
||||
_entry__validate_one = 22704
|
||||
_entry__validate_utf8 = 29728
|
||||
_entry__validate_utf8_fast = 30416
|
||||
_entry__value = 13104
|
||||
_entry__vnumber = 16368
|
||||
_entry__atof_eisel_lemire64 = 11104
|
||||
_entry__atof_native = 12496
|
||||
_entry__decimal_to_f64 = 11504
|
||||
_entry__left_shift = 36288
|
||||
_entry__right_shift = 36832
|
||||
_entry__vsigned = 18016
|
||||
_entry__vstring = 14880
|
||||
_entry__vunsigned = 18384
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__f32toa = 64
|
||||
_stack__f64toa = 80
|
||||
_stack__format_significand = 24
|
||||
_stack__format_integer = 16
|
||||
_stack__fsm_exec = 160
|
||||
_stack__advance_string = 72
|
||||
_stack__advance_string_default = 56
|
||||
_stack__do_skip_number = 32
|
||||
_stack__get_by_path = 280
|
||||
_stack__skip_one_fast = 176
|
||||
_stack__unescape = 64
|
||||
_stack__unhex16_is = 8
|
||||
_stack__html_escape = 64
|
||||
_stack__i64toa = 16
|
||||
_stack__u64toa = 8
|
||||
_stack__lspace = 8
|
||||
_stack__quote = 80
|
||||
_stack__skip_array = 168
|
||||
_stack__skip_number = 88
|
||||
_stack__skip_object = 168
|
||||
_stack__skip_one = 168
|
||||
_stack__unquote = 112
|
||||
_stack__validate_one = 168
|
||||
_stack__validate_utf8 = 48
|
||||
_stack__validate_utf8_fast = 24
|
||||
_stack__value = 352
|
||||
_stack__vnumber = 264
|
||||
_stack__atof_eisel_lemire64 = 40
|
||||
_stack__atof_native = 144
|
||||
_stack__decimal_to_f64 = 88
|
||||
_stack__left_shift = 32
|
||||
_stack__right_shift = 16
|
||||
_stack__vsigned = 16
|
||||
_stack__vstring = 128
|
||||
_stack__vunsigned = 24
|
||||
)
|
||||
|
||||
const (
|
||||
_size__f32toa = 3792
|
||||
_size__f64toa = 3248
|
||||
_size__format_significand = 480
|
||||
_size__format_integer = 432
|
||||
_size__fsm_exec = 1656
|
||||
_size__advance_string = 1264
|
||||
_size__advance_string_default = 912
|
||||
_size__do_skip_number = 876
|
||||
_size__get_by_path = 3312
|
||||
_size__skip_one_fast = 3016
|
||||
_size__unescape = 704
|
||||
_size__unhex16_is = 128
|
||||
_size__html_escape = 1280
|
||||
_size__i64toa = 272
|
||||
_size__u64toa = 1376
|
||||
_size__lspace = 112
|
||||
_size__quote = 1728
|
||||
_size__skip_array = 48
|
||||
_size__skip_number = 160
|
||||
_size__skip_object = 48
|
||||
_size__skip_one = 48
|
||||
_size__unquote = 2336
|
||||
_size__validate_one = 48
|
||||
_size__validate_utf8 = 688
|
||||
_size__validate_utf8_fast = 560
|
||||
_size__value = 1268
|
||||
_size__vnumber = 1648
|
||||
_size__atof_eisel_lemire64 = 400
|
||||
_size__atof_native = 608
|
||||
_size__decimal_to_f64 = 992
|
||||
_size__left_shift = 544
|
||||
_size__right_shift = 480
|
||||
_size__vsigned = 368
|
||||
_size__vstring = 128
|
||||
_size__vunsigned = 368
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__f32toa = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{3734, 64},
|
||||
{3738, 48},
|
||||
{3739, 40},
|
||||
{3741, 32},
|
||||
{3743, 24},
|
||||
{3745, 16},
|
||||
{3747, 8},
|
||||
{3751, 0},
|
||||
{3781, 64},
|
||||
}
|
||||
_pcsp__f64toa = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{3124, 56},
|
||||
{3128, 48},
|
||||
{3129, 40},
|
||||
{3131, 32},
|
||||
{3133, 24},
|
||||
{3135, 16},
|
||||
{3137, 8},
|
||||
{3141, 0},
|
||||
{3234, 56},
|
||||
}
|
||||
_pcsp__format_significand = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{468, 24},
|
||||
{469, 16},
|
||||
{471, 8},
|
||||
{473, 0},
|
||||
}
|
||||
_pcsp__format_integer = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{412, 16},
|
||||
{413, 8},
|
||||
{414, 0},
|
||||
{423, 16},
|
||||
{424, 8},
|
||||
{426, 0},
|
||||
}
|
||||
_pcsp__fsm_exec = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1317, 88},
|
||||
{1321, 48},
|
||||
{1322, 40},
|
||||
{1324, 32},
|
||||
{1326, 24},
|
||||
{1328, 16},
|
||||
{1330, 8},
|
||||
{1331, 0},
|
||||
{1656, 88},
|
||||
}
|
||||
_pcsp__advance_string = [][2]uint32{
|
||||
{14, 0},
|
||||
{18, 8},
|
||||
{20, 16},
|
||||
{22, 24},
|
||||
{24, 32},
|
||||
{26, 40},
|
||||
{27, 48},
|
||||
{529, 72},
|
||||
{533, 48},
|
||||
{534, 40},
|
||||
{536, 32},
|
||||
{538, 24},
|
||||
{540, 16},
|
||||
{542, 8},
|
||||
{543, 0},
|
||||
{1253, 72},
|
||||
}
|
||||
_pcsp__advance_string_default = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{381, 56},
|
||||
{385, 48},
|
||||
{386, 40},
|
||||
{388, 32},
|
||||
{390, 24},
|
||||
{392, 16},
|
||||
{394, 8},
|
||||
{395, 0},
|
||||
{911, 56},
|
||||
}
|
||||
_pcsp__do_skip_number = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{739, 32},
|
||||
{740, 24},
|
||||
{742, 16},
|
||||
{744, 8},
|
||||
{745, 0},
|
||||
{876, 32},
|
||||
}
|
||||
_pcsp__get_by_path = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{3262, 104},
|
||||
{3266, 48},
|
||||
{3267, 40},
|
||||
{3269, 32},
|
||||
{3271, 24},
|
||||
{3273, 16},
|
||||
{3275, 8},
|
||||
{3276, 0},
|
||||
{3301, 104},
|
||||
}
|
||||
_pcsp__skip_one_fast = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{613, 176},
|
||||
{614, 168},
|
||||
{616, 160},
|
||||
{618, 152},
|
||||
{620, 144},
|
||||
{622, 136},
|
||||
{626, 128},
|
||||
{3016, 176},
|
||||
}
|
||||
_pcsp__unescape = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{246, 56},
|
||||
{250, 48},
|
||||
{251, 40},
|
||||
{253, 32},
|
||||
{255, 24},
|
||||
{257, 16},
|
||||
{259, 8},
|
||||
{260, 0},
|
||||
{695, 56},
|
||||
}
|
||||
_pcsp__unhex16_is = [][2]uint32{
|
||||
{1, 0},
|
||||
{35, 8},
|
||||
{36, 0},
|
||||
{62, 8},
|
||||
{63, 0},
|
||||
{97, 8},
|
||||
{98, 0},
|
||||
{121, 8},
|
||||
{123, 0},
|
||||
}
|
||||
_pcsp__html_escape = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1265, 64},
|
||||
{1269, 48},
|
||||
{1270, 40},
|
||||
{1272, 32},
|
||||
{1274, 24},
|
||||
{1276, 16},
|
||||
{1278, 8},
|
||||
{1280, 0},
|
||||
}
|
||||
_pcsp__i64toa = [][2]uint32{
|
||||
{1, 0},
|
||||
{171, 8},
|
||||
{172, 0},
|
||||
{207, 8},
|
||||
{208, 0},
|
||||
{222, 8},
|
||||
{223, 0},
|
||||
{247, 8},
|
||||
{248, 0},
|
||||
{253, 8},
|
||||
{259, 0},
|
||||
}
|
||||
_pcsp__u64toa = [][2]uint32{
|
||||
{13, 0},
|
||||
{162, 8},
|
||||
{163, 0},
|
||||
{175, 8},
|
||||
{240, 0},
|
||||
{498, 8},
|
||||
{499, 0},
|
||||
{519, 8},
|
||||
{592, 0},
|
||||
{850, 8},
|
||||
{928, 0},
|
||||
{1374, 8},
|
||||
{1376, 0},
|
||||
}
|
||||
_pcsp__lspace = [][2]uint32{
|
||||
{1, 0},
|
||||
{85, 8},
|
||||
{87, 0},
|
||||
}
|
||||
_pcsp__quote = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1669, 80},
|
||||
{1673, 48},
|
||||
{1674, 40},
|
||||
{1676, 32},
|
||||
{1678, 24},
|
||||
{1680, 16},
|
||||
{1682, 8},
|
||||
{1683, 0},
|
||||
{1718, 80},
|
||||
}
|
||||
_pcsp__skip_array = [][2]uint32{
|
||||
{1, 0},
|
||||
{28, 8},
|
||||
{34, 0},
|
||||
}
|
||||
_pcsp__skip_number = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{107, 56},
|
||||
{111, 48},
|
||||
{112, 40},
|
||||
{114, 32},
|
||||
{116, 24},
|
||||
{118, 16},
|
||||
{120, 8},
|
||||
{121, 0},
|
||||
{145, 56},
|
||||
}
|
||||
_pcsp__skip_object = [][2]uint32{
|
||||
{1, 0},
|
||||
{28, 8},
|
||||
{34, 0},
|
||||
}
|
||||
_pcsp__skip_one = [][2]uint32{
|
||||
{1, 0},
|
||||
{28, 8},
|
||||
{34, 0},
|
||||
}
|
||||
_pcsp__unquote = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1614, 104},
|
||||
{1618, 48},
|
||||
{1619, 40},
|
||||
{1621, 32},
|
||||
{1623, 24},
|
||||
{1625, 16},
|
||||
{1627, 8},
|
||||
{1628, 0},
|
||||
{2329, 104},
|
||||
}
|
||||
_pcsp__validate_one = [][2]uint32{
|
||||
{1, 0},
|
||||
{33, 8},
|
||||
{39, 0},
|
||||
}
|
||||
_pcsp__validate_utf8 = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{11, 40},
|
||||
{639, 48},
|
||||
{643, 40},
|
||||
{644, 32},
|
||||
{646, 24},
|
||||
{648, 16},
|
||||
{650, 8},
|
||||
{651, 0},
|
||||
{682, 48},
|
||||
}
|
||||
_pcsp__validate_utf8_fast = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{5, 16},
|
||||
{247, 24},
|
||||
{251, 16},
|
||||
{252, 8},
|
||||
{253, 0},
|
||||
{527, 24},
|
||||
{531, 16},
|
||||
{532, 8},
|
||||
{534, 0},
|
||||
}
|
||||
_pcsp__value = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{439, 88},
|
||||
{443, 48},
|
||||
{444, 40},
|
||||
{446, 32},
|
||||
{448, 24},
|
||||
{450, 16},
|
||||
{452, 8},
|
||||
{453, 0},
|
||||
{1268, 88},
|
||||
}
|
||||
_pcsp__vnumber = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{150, 120},
|
||||
{154, 48},
|
||||
{155, 40},
|
||||
{157, 32},
|
||||
{159, 24},
|
||||
{161, 16},
|
||||
{163, 8},
|
||||
{164, 0},
|
||||
{1638, 120},
|
||||
}
|
||||
_pcsp__atof_eisel_lemire64 = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{315, 40},
|
||||
{316, 32},
|
||||
{318, 24},
|
||||
{320, 16},
|
||||
{322, 8},
|
||||
{323, 0},
|
||||
{387, 40},
|
||||
}
|
||||
_pcsp__atof_native = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{596, 56},
|
||||
{600, 8},
|
||||
{602, 0},
|
||||
}
|
||||
_pcsp__decimal_to_f64 = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{951, 56},
|
||||
{955, 48},
|
||||
{956, 40},
|
||||
{958, 32},
|
||||
{960, 24},
|
||||
{962, 16},
|
||||
{964, 8},
|
||||
{965, 0},
|
||||
{977, 56},
|
||||
}
|
||||
_pcsp__left_shift = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{418, 32},
|
||||
{419, 24},
|
||||
{421, 16},
|
||||
{423, 8},
|
||||
{424, 0},
|
||||
{539, 32},
|
||||
}
|
||||
_pcsp__right_shift = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{452, 16},
|
||||
{453, 8},
|
||||
{454, 0},
|
||||
{462, 16},
|
||||
{463, 8},
|
||||
{464, 0},
|
||||
{472, 16},
|
||||
{473, 8},
|
||||
{475, 0},
|
||||
}
|
||||
_pcsp__vsigned = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{113, 16},
|
||||
{114, 8},
|
||||
{115, 0},
|
||||
{126, 16},
|
||||
{127, 8},
|
||||
{128, 0},
|
||||
{278, 16},
|
||||
{279, 8},
|
||||
{280, 0},
|
||||
{284, 16},
|
||||
{285, 8},
|
||||
{286, 0},
|
||||
{340, 16},
|
||||
{341, 8},
|
||||
{342, 0},
|
||||
{353, 16},
|
||||
{354, 8},
|
||||
{356, 0},
|
||||
}
|
||||
_pcsp__vstring = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{11, 40},
|
||||
{105, 56},
|
||||
{109, 40},
|
||||
{110, 32},
|
||||
{112, 24},
|
||||
{114, 16},
|
||||
{116, 8},
|
||||
{118, 0},
|
||||
}
|
||||
_pcsp__vunsigned = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{74, 24},
|
||||
{75, 16},
|
||||
{77, 8},
|
||||
{78, 0},
|
||||
{89, 24},
|
||||
{90, 16},
|
||||
{92, 8},
|
||||
{93, 0},
|
||||
{116, 24},
|
||||
{117, 16},
|
||||
{119, 8},
|
||||
{120, 0},
|
||||
{281, 24},
|
||||
{282, 16},
|
||||
{284, 8},
|
||||
{285, 0},
|
||||
{336, 24},
|
||||
{337, 16},
|
||||
{339, 8},
|
||||
{340, 0},
|
||||
{348, 24},
|
||||
{349, 16},
|
||||
{351, 8},
|
||||
{353, 0},
|
||||
}
|
||||
)
|
||||
|
||||
var Funcs = []loader.CFunc{
|
||||
{"__native_entry__", 0, 67, 0, nil},
|
||||
{"_f32toa", _entry__f32toa, _size__f32toa, _stack__f32toa, _pcsp__f32toa},
|
||||
{"_f64toa", _entry__f64toa, _size__f64toa, _stack__f64toa, _pcsp__f64toa},
|
||||
{"_format_significand", _entry__format_significand, _size__format_significand, _stack__format_significand, _pcsp__format_significand},
|
||||
{"_format_integer", _entry__format_integer, _size__format_integer, _stack__format_integer, _pcsp__format_integer},
|
||||
{"_fsm_exec", _entry__fsm_exec, _size__fsm_exec, _stack__fsm_exec, _pcsp__fsm_exec},
|
||||
{"_advance_string", _entry__advance_string, _size__advance_string, _stack__advance_string, _pcsp__advance_string},
|
||||
{"_advance_string_default", _entry__advance_string_default, _size__advance_string_default, _stack__advance_string_default, _pcsp__advance_string_default},
|
||||
{"_do_skip_number", _entry__do_skip_number, _size__do_skip_number, _stack__do_skip_number, _pcsp__do_skip_number},
|
||||
{"_get_by_path", _entry__get_by_path, _size__get_by_path, _stack__get_by_path, _pcsp__get_by_path},
|
||||
{"_skip_one_fast", _entry__skip_one_fast, _size__skip_one_fast, _stack__skip_one_fast, _pcsp__skip_one_fast},
|
||||
{"_unescape", _entry__unescape, _size__unescape, _stack__unescape, _pcsp__unescape},
|
||||
{"_unhex16_is", _entry__unhex16_is, _size__unhex16_is, _stack__unhex16_is, _pcsp__unhex16_is},
|
||||
{"_html_escape", _entry__html_escape, _size__html_escape, _stack__html_escape, _pcsp__html_escape},
|
||||
{"_i64toa", _entry__i64toa, _size__i64toa, _stack__i64toa, _pcsp__i64toa},
|
||||
{"_u64toa", _entry__u64toa, _size__u64toa, _stack__u64toa, _pcsp__u64toa},
|
||||
{"_lspace", _entry__lspace, _size__lspace, _stack__lspace, _pcsp__lspace},
|
||||
{"_quote", _entry__quote, _size__quote, _stack__quote, _pcsp__quote},
|
||||
{"_skip_array", _entry__skip_array, _size__skip_array, _stack__skip_array, _pcsp__skip_array},
|
||||
{"_skip_number", _entry__skip_number, _size__skip_number, _stack__skip_number, _pcsp__skip_number},
|
||||
{"_skip_object", _entry__skip_object, _size__skip_object, _stack__skip_object, _pcsp__skip_object},
|
||||
{"_skip_one", _entry__skip_one, _size__skip_one, _stack__skip_one, _pcsp__skip_one},
|
||||
{"_unquote", _entry__unquote, _size__unquote, _stack__unquote, _pcsp__unquote},
|
||||
{"_validate_one", _entry__validate_one, _size__validate_one, _stack__validate_one, _pcsp__validate_one},
|
||||
{"_validate_utf8", _entry__validate_utf8, _size__validate_utf8, _stack__validate_utf8, _pcsp__validate_utf8},
|
||||
{"_validate_utf8_fast", _entry__validate_utf8_fast, _size__validate_utf8_fast, _stack__validate_utf8_fast, _pcsp__validate_utf8_fast},
|
||||
{"_value", _entry__value, _size__value, _stack__value, _pcsp__value},
|
||||
{"_vnumber", _entry__vnumber, _size__vnumber, _stack__vnumber, _pcsp__vnumber},
|
||||
{"_atof_eisel_lemire64", _entry__atof_eisel_lemire64, _size__atof_eisel_lemire64, _stack__atof_eisel_lemire64, _pcsp__atof_eisel_lemire64},
|
||||
{"_atof_native", _entry__atof_native, _size__atof_native, _stack__atof_native, _pcsp__atof_native},
|
||||
{"_decimal_to_f64", _entry__decimal_to_f64, _size__decimal_to_f64, _stack__decimal_to_f64, _pcsp__decimal_to_f64},
|
||||
{"_left_shift", _entry__left_shift, _size__left_shift, _stack__left_shift, _pcsp__left_shift},
|
||||
{"_right_shift", _entry__right_shift, _size__right_shift, _stack__right_shift, _pcsp__right_shift},
|
||||
{"_vsigned", _entry__vsigned, _size__vsigned, _stack__vsigned, _pcsp__vsigned},
|
||||
{"_vstring", _entry__vstring, _size__vstring, _stack__vstring, _pcsp__vstring},
|
||||
{"_vunsigned", _entry__vunsigned, _size__vunsigned, _stack__vunsigned, _pcsp__vunsigned},
|
||||
}
|
||||
-14488
File diff suppressed because it is too large
Load Diff
+35
@@ -0,0 +1,35 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
var F_quote func(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
var S_quote uintptr
|
||||
|
||||
//go:nosplit
|
||||
func quote(sp unsafe.Pointer, nb int, dp unsafe.Pointer, dn *int, flags uint64) (ret int) {
|
||||
return F_quote(rt.NoEscape(sp), nb, rt.NoEscape(dp), rt.NoEscape(unsafe.Pointer(dn)), flags)
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__quote = 48
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__quote = 56
|
||||
)
|
||||
|
||||
const (
|
||||
_size__quote = 1696
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__quote = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1649, 56},
|
||||
{1653, 48},
|
||||
{1654, 40},
|
||||
{1656, 32},
|
||||
{1658, 24},
|
||||
{1660, 16},
|
||||
{1662, 8},
|
||||
{1663, 0},
|
||||
{1696, 56},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_quote = []loader.CFunc{
|
||||
{"_quote_entry", 0, _entry__quote, 0, nil},
|
||||
{"_quote", _entry__quote, _size__quote, _stack__quote, _pcsp__quote},
|
||||
}
|
||||
+1085
File diff suppressed because it is too large
Load Diff
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License );
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_skip_array func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
var S_skip_array uintptr
|
||||
|
||||
//go:nosplit
|
||||
func skip_array(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
|
||||
return F_skip_array(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__skip_array = 160
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__skip_array = 152
|
||||
)
|
||||
|
||||
const (
|
||||
_size__skip_array = 9524
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__skip_array = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{8962, 152},
|
||||
{8966, 48},
|
||||
{8967, 40},
|
||||
{8969, 32},
|
||||
{8971, 24},
|
||||
{8973, 16},
|
||||
{8975, 8},
|
||||
{8976, 0},
|
||||
{9524, 152},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_skip_array = []loader.CFunc{
|
||||
{"_skip_array_entry", 0, _entry__skip_array, 0, nil},
|
||||
{"_skip_array", _entry__skip_array, _size__skip_array, _stack__skip_array, _pcsp__skip_array},
|
||||
}
|
||||
+2854
File diff suppressed because it is too large
Load Diff
+36
@@ -0,0 +1,36 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License );
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_skip_number func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
|
||||
|
||||
var S_skip_number uintptr
|
||||
|
||||
//go:nosplit
|
||||
func skip_number(s *string, p *int) (ret int) {
|
||||
return F_skip_number(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__skip_number = 112
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__skip_number = 72
|
||||
)
|
||||
|
||||
const (
|
||||
_size__skip_number = 1108
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__skip_number = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{1025, 72},
|
||||
{1029, 48},
|
||||
{1030, 40},
|
||||
{1032, 32},
|
||||
{1034, 24},
|
||||
{1036, 16},
|
||||
{1038, 8},
|
||||
{1039, 0},
|
||||
{1108, 72},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_skip_number = []loader.CFunc{
|
||||
{"_skip_number_entry", 0, _entry__skip_number, 0, nil},
|
||||
{"_skip_number", _entry__skip_number, _size__skip_number, _stack__skip_number, _pcsp__skip_number},
|
||||
}
|
||||
+394
@@ -0,0 +1,394 @@
|
||||
// +build amd64
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
var _text_skip_number = []byte{
|
||||
// .p2align 4, 0x00
|
||||
// LCPI0_0
|
||||
0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, // QUAD $0x2f2f2f2f2f2f2f2f; QUAD $0x2f2f2f2f2f2f2f2f // .space 16, '////////////////'
|
||||
//0x00000010 LCPI0_1
|
||||
0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, //0x00000010 QUAD $0x3a3a3a3a3a3a3a3a; QUAD $0x3a3a3a3a3a3a3a3a // .space 16, '::::::::::::::::'
|
||||
//0x00000020 LCPI0_2
|
||||
0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, //0x00000020 QUAD $0x2b2b2b2b2b2b2b2b; QUAD $0x2b2b2b2b2b2b2b2b // .space 16, '++++++++++++++++'
|
||||
//0x00000030 LCPI0_3
|
||||
0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, //0x00000030 QUAD $0x2d2d2d2d2d2d2d2d; QUAD $0x2d2d2d2d2d2d2d2d // .space 16, '----------------'
|
||||
//0x00000040 LCPI0_4
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, //0x00000040 QUAD $0x2020202020202020; QUAD $0x2020202020202020 // .space 16, ' '
|
||||
//0x00000050 LCPI0_5
|
||||
0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, //0x00000050 QUAD $0x2e2e2e2e2e2e2e2e; QUAD $0x2e2e2e2e2e2e2e2e // .space 16, '................'
|
||||
//0x00000060 LCPI0_6
|
||||
0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, //0x00000060 QUAD $0x6565656565656565; QUAD $0x6565656565656565 // .space 16, 'eeeeeeeeeeeeeeee'
|
||||
//0x00000070 .p2align 4, 0x90
|
||||
//0x00000070 _skip_number
|
||||
0x55, //0x00000070 pushq %rbp
|
||||
0x48, 0x89, 0xe5, //0x00000071 movq %rsp, %rbp
|
||||
0x41, 0x57, //0x00000074 pushq %r15
|
||||
0x41, 0x56, //0x00000076 pushq %r14
|
||||
0x41, 0x55, //0x00000078 pushq %r13
|
||||
0x41, 0x54, //0x0000007a pushq %r12
|
||||
0x53, //0x0000007c pushq %rbx
|
||||
0x48, 0x83, 0xec, 0x18, //0x0000007d subq $24, %rsp
|
||||
0x48, 0x8b, 0x1f, //0x00000081 movq (%rdi), %rbx
|
||||
0x4c, 0x8b, 0x6f, 0x08, //0x00000084 movq $8(%rdi), %r13
|
||||
0x48, 0x8b, 0x16, //0x00000088 movq (%rsi), %rdx
|
||||
0x49, 0x29, 0xd5, //0x0000008b subq %rdx, %r13
|
||||
0x31, 0xc0, //0x0000008e xorl %eax, %eax
|
||||
0x80, 0x3c, 0x13, 0x2d, //0x00000090 cmpb $45, (%rbx,%rdx)
|
||||
0x4c, 0x8d, 0x3c, 0x13, //0x00000094 leaq (%rbx,%rdx), %r15
|
||||
0x0f, 0x94, 0xc0, //0x00000098 sete %al
|
||||
0x49, 0x01, 0xc7, //0x0000009b addq %rax, %r15
|
||||
0x49, 0x29, 0xc5, //0x0000009e subq %rax, %r13
|
||||
0x0f, 0x84, 0xee, 0x03, 0x00, 0x00, //0x000000a1 je LBB0_1
|
||||
0x41, 0x8a, 0x3f, //0x000000a7 movb (%r15), %dil
|
||||
0x8d, 0x4f, 0xd0, //0x000000aa leal $-48(%rdi), %ecx
|
||||
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x000000ad movq $-2, %rax
|
||||
0x80, 0xf9, 0x09, //0x000000b4 cmpb $9, %cl
|
||||
0x0f, 0x87, 0xae, 0x03, 0x00, 0x00, //0x000000b7 ja LBB0_59
|
||||
0x40, 0x80, 0xff, 0x30, //0x000000bd cmpb $48, %dil
|
||||
0x0f, 0x85, 0x34, 0x00, 0x00, 0x00, //0x000000c1 jne LBB0_7
|
||||
0xbf, 0x01, 0x00, 0x00, 0x00, //0x000000c7 movl $1, %edi
|
||||
0x49, 0x83, 0xfd, 0x01, //0x000000cc cmpq $1, %r13
|
||||
0x0f, 0x84, 0x6a, 0x03, 0x00, 0x00, //0x000000d0 je LBB0_58
|
||||
0x41, 0x8a, 0x47, 0x01, //0x000000d6 movb $1(%r15), %al
|
||||
0x04, 0xd2, //0x000000da addb $-46, %al
|
||||
0x3c, 0x37, //0x000000dc cmpb $55, %al
|
||||
0x0f, 0x87, 0x5c, 0x03, 0x00, 0x00, //0x000000de ja LBB0_58
|
||||
0x0f, 0xb6, 0xc0, //0x000000e4 movzbl %al, %eax
|
||||
0x48, 0xb9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //0x000000e7 movabsq $36028797027352577, %rcx
|
||||
0x48, 0x0f, 0xa3, 0xc1, //0x000000f1 btq %rax, %rcx
|
||||
0x0f, 0x83, 0x45, 0x03, 0x00, 0x00, //0x000000f5 jae LBB0_58
|
||||
//0x000000fb LBB0_7
|
||||
0x48, 0x89, 0x55, 0xd0, //0x000000fb movq %rdx, $-48(%rbp)
|
||||
0x49, 0x83, 0xfd, 0x10, //0x000000ff cmpq $16, %r13
|
||||
0x0f, 0x82, 0x98, 0x03, 0x00, 0x00, //0x00000103 jb LBB0_8
|
||||
0x48, 0x89, 0x5d, 0xc8, //0x00000109 movq %rbx, $-56(%rbp)
|
||||
0x48, 0x89, 0x75, 0xc0, //0x0000010d movq %rsi, $-64(%rbp)
|
||||
0x4d, 0x8d, 0x45, 0xf0, //0x00000111 leaq $-16(%r13), %r8
|
||||
0x4c, 0x89, 0xc0, //0x00000115 movq %r8, %rax
|
||||
0x48, 0x83, 0xe0, 0xf0, //0x00000118 andq $-16, %rax
|
||||
0x4e, 0x8d, 0x64, 0x38, 0x10, //0x0000011c leaq $16(%rax,%r15), %r12
|
||||
0x41, 0x83, 0xe0, 0x0f, //0x00000121 andl $15, %r8d
|
||||
0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x00000125 movq $-1, %r11
|
||||
0xc5, 0x7a, 0x6f, 0x05, 0xcc, 0xfe, 0xff, 0xff, //0x0000012c vmovdqu $-308(%rip), %xmm8 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0x7a, 0x6f, 0x0d, 0xd4, 0xfe, 0xff, 0xff, //0x00000134 vmovdqu $-300(%rip), %xmm9 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0x7a, 0x6f, 0x15, 0xdc, 0xfe, 0xff, 0xff, //0x0000013c vmovdqu $-292(%rip), %xmm10 /* LCPI0_2+0(%rip) */
|
||||
0xc5, 0x7a, 0x6f, 0x1d, 0xe4, 0xfe, 0xff, 0xff, //0x00000144 vmovdqu $-284(%rip), %xmm11 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x25, 0xec, 0xfe, 0xff, 0xff, //0x0000014c vmovdqu $-276(%rip), %xmm4 /* LCPI0_4+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x2d, 0xf4, 0xfe, 0xff, 0xff, //0x00000154 vmovdqu $-268(%rip), %xmm5 /* LCPI0_5+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x35, 0xfc, 0xfe, 0xff, 0xff, //0x0000015c vmovdqu $-260(%rip), %xmm6 /* LCPI0_6+0(%rip) */
|
||||
0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x00000164 movq $-1, %r14
|
||||
0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x0000016b movq $-1, %r10
|
||||
0x4c, 0x89, 0xfb, //0x00000172 movq %r15, %rbx
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000175 .p2align 4, 0x90
|
||||
//0x00000180 LBB0_10
|
||||
0xc5, 0xfa, 0x6f, 0x3b, //0x00000180 vmovdqu (%rbx), %xmm7
|
||||
0xc4, 0xc1, 0x41, 0x64, 0xc0, //0x00000184 vpcmpgtb %xmm8, %xmm7, %xmm0
|
||||
0xc5, 0xb1, 0x64, 0xcf, //0x00000189 vpcmpgtb %xmm7, %xmm9, %xmm1
|
||||
0xc5, 0xf9, 0xdb, 0xc1, //0x0000018d vpand %xmm1, %xmm0, %xmm0
|
||||
0xc5, 0xa9, 0x74, 0xcf, //0x00000191 vpcmpeqb %xmm7, %xmm10, %xmm1
|
||||
0xc5, 0xa1, 0x74, 0xd7, //0x00000195 vpcmpeqb %xmm7, %xmm11, %xmm2
|
||||
0xc5, 0xe9, 0xeb, 0xc9, //0x00000199 vpor %xmm1, %xmm2, %xmm1
|
||||
0xc5, 0xc1, 0xeb, 0xd4, //0x0000019d vpor %xmm4, %xmm7, %xmm2
|
||||
0xc5, 0xe9, 0x74, 0xd6, //0x000001a1 vpcmpeqb %xmm6, %xmm2, %xmm2
|
||||
0xc5, 0xc1, 0x74, 0xfd, //0x000001a5 vpcmpeqb %xmm5, %xmm7, %xmm7
|
||||
0xc5, 0xe9, 0xeb, 0xdf, //0x000001a9 vpor %xmm7, %xmm2, %xmm3
|
||||
0xc5, 0xf1, 0xeb, 0xc0, //0x000001ad vpor %xmm0, %xmm1, %xmm0
|
||||
0xc5, 0xe1, 0xeb, 0xc0, //0x000001b1 vpor %xmm0, %xmm3, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xff, //0x000001b5 vpmovmskb %xmm7, %edi
|
||||
0xc5, 0xf9, 0xd7, 0xf2, //0x000001b9 vpmovmskb %xmm2, %esi
|
||||
0xc5, 0xf9, 0xd7, 0xc1, //0x000001bd vpmovmskb %xmm1, %eax
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x000001c1 vpmovmskb %xmm0, %ecx
|
||||
0xba, 0xff, 0xff, 0xff, 0xff, //0x000001c5 movl $4294967295, %edx
|
||||
0x48, 0x31, 0xd1, //0x000001ca xorq %rdx, %rcx
|
||||
0x48, 0x0f, 0xbc, 0xc9, //0x000001cd bsfq %rcx, %rcx
|
||||
0x83, 0xf9, 0x10, //0x000001d1 cmpl $16, %ecx
|
||||
0x0f, 0x84, 0x11, 0x00, 0x00, 0x00, //0x000001d4 je LBB0_12
|
||||
0xba, 0xff, 0xff, 0xff, 0xff, //0x000001da movl $-1, %edx
|
||||
0xd3, 0xe2, //0x000001df shll %cl, %edx
|
||||
0xf7, 0xd2, //0x000001e1 notl %edx
|
||||
0x21, 0xd7, //0x000001e3 andl %edx, %edi
|
||||
0x21, 0xd6, //0x000001e5 andl %edx, %esi
|
||||
0x21, 0xc2, //0x000001e7 andl %eax, %edx
|
||||
0x89, 0xd0, //0x000001e9 movl %edx, %eax
|
||||
//0x000001eb LBB0_12
|
||||
0x44, 0x8d, 0x4f, 0xff, //0x000001eb leal $-1(%rdi), %r9d
|
||||
0x41, 0x21, 0xf9, //0x000001ef andl %edi, %r9d
|
||||
0x0f, 0x85, 0x26, 0x02, 0x00, 0x00, //0x000001f2 jne LBB0_13
|
||||
0x8d, 0x56, 0xff, //0x000001f8 leal $-1(%rsi), %edx
|
||||
0x21, 0xf2, //0x000001fb andl %esi, %edx
|
||||
0x0f, 0x85, 0x10, 0x02, 0x00, 0x00, //0x000001fd jne LBB0_17
|
||||
0x8d, 0x50, 0xff, //0x00000203 leal $-1(%rax), %edx
|
||||
0x21, 0xc2, //0x00000206 andl %eax, %edx
|
||||
0x0f, 0x85, 0x05, 0x02, 0x00, 0x00, //0x00000208 jne LBB0_17
|
||||
0x85, 0xff, //0x0000020e testl %edi, %edi
|
||||
0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000210 je LBB0_22
|
||||
0x48, 0x89, 0xda, //0x00000216 movq %rbx, %rdx
|
||||
0x4c, 0x29, 0xfa, //0x00000219 subq %r15, %rdx
|
||||
0x0f, 0xbc, 0xff, //0x0000021c bsfl %edi, %edi
|
||||
0x48, 0x01, 0xd7, //0x0000021f addq %rdx, %rdi
|
||||
0x49, 0x83, 0xfa, 0xff, //0x00000222 cmpq $-1, %r10
|
||||
0x0f, 0x85, 0xfc, 0x01, 0x00, 0x00, //0x00000226 jne LBB0_15
|
||||
0x49, 0x89, 0xfa, //0x0000022c movq %rdi, %r10
|
||||
//0x0000022f LBB0_22
|
||||
0x85, 0xf6, //0x0000022f testl %esi, %esi
|
||||
0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000231 je LBB0_25
|
||||
0x48, 0x89, 0xda, //0x00000237 movq %rbx, %rdx
|
||||
0x4c, 0x29, 0xfa, //0x0000023a subq %r15, %rdx
|
||||
0x0f, 0xbc, 0xfe, //0x0000023d bsfl %esi, %edi
|
||||
0x48, 0x01, 0xd7, //0x00000240 addq %rdx, %rdi
|
||||
0x49, 0x83, 0xfe, 0xff, //0x00000243 cmpq $-1, %r14
|
||||
0x0f, 0x85, 0xdb, 0x01, 0x00, 0x00, //0x00000247 jne LBB0_15
|
||||
0x49, 0x89, 0xfe, //0x0000024d movq %rdi, %r14
|
||||
//0x00000250 LBB0_25
|
||||
0x85, 0xc0, //0x00000250 testl %eax, %eax
|
||||
0x0f, 0x84, 0x19, 0x00, 0x00, 0x00, //0x00000252 je LBB0_28
|
||||
0x48, 0x89, 0xda, //0x00000258 movq %rbx, %rdx
|
||||
0x4c, 0x29, 0xfa, //0x0000025b subq %r15, %rdx
|
||||
0x0f, 0xbc, 0xf8, //0x0000025e bsfl %eax, %edi
|
||||
0x48, 0x01, 0xd7, //0x00000261 addq %rdx, %rdi
|
||||
0x49, 0x83, 0xfb, 0xff, //0x00000264 cmpq $-1, %r11
|
||||
0x0f, 0x85, 0xba, 0x01, 0x00, 0x00, //0x00000268 jne LBB0_15
|
||||
0x49, 0x89, 0xfb, //0x0000026e movq %rdi, %r11
|
||||
//0x00000271 LBB0_28
|
||||
0x83, 0xf9, 0x10, //0x00000271 cmpl $16, %ecx
|
||||
0x0f, 0x85, 0xb2, 0x00, 0x00, 0x00, //0x00000274 jne LBB0_60
|
||||
0x48, 0x83, 0xc3, 0x10, //0x0000027a addq $16, %rbx
|
||||
0x49, 0x83, 0xc5, 0xf0, //0x0000027e addq $-16, %r13
|
||||
0x49, 0x83, 0xfd, 0x0f, //0x00000282 cmpq $15, %r13
|
||||
0x0f, 0x87, 0xf4, 0xfe, 0xff, 0xff, //0x00000286 ja LBB0_10
|
||||
0x4d, 0x85, 0xc0, //0x0000028c testq %r8, %r8
|
||||
0x48, 0x8b, 0x75, 0xc0, //0x0000028f movq $-64(%rbp), %rsi
|
||||
0x48, 0x8b, 0x5d, 0xc8, //0x00000293 movq $-56(%rbp), %rbx
|
||||
0x0f, 0x84, 0x9d, 0x00, 0x00, 0x00, //0x00000297 je LBB0_42
|
||||
//0x0000029d LBB0_31
|
||||
0x4b, 0x8d, 0x04, 0x04, //0x0000029d leaq (%r12,%r8), %rax
|
||||
0x48, 0x8d, 0x0d, 0x1c, 0x02, 0x00, 0x00, //0x000002a1 leaq $540(%rip), %rcx /* LJTI0_0+0(%rip) */
|
||||
0xe9, 0x0f, 0x00, 0x00, 0x00, //0x000002a8 jmp LBB0_32
|
||||
0x90, 0x90, 0x90, //0x000002ad .p2align 4, 0x90
|
||||
//0x000002b0 LBB0_40
|
||||
0x49, 0x89, 0xd4, //0x000002b0 movq %rdx, %r12
|
||||
0x49, 0xff, 0xc8, //0x000002b3 decq %r8
|
||||
0x0f, 0x84, 0x8f, 0x01, 0x00, 0x00, //0x000002b6 je LBB0_41
|
||||
//0x000002bc LBB0_32
|
||||
0x41, 0x0f, 0xbe, 0x3c, 0x24, //0x000002bc movsbl (%r12), %edi
|
||||
0x83, 0xc7, 0xd5, //0x000002c1 addl $-43, %edi
|
||||
0x83, 0xff, 0x3a, //0x000002c4 cmpl $58, %edi
|
||||
0x0f, 0x87, 0x6d, 0x00, 0x00, 0x00, //0x000002c7 ja LBB0_42
|
||||
0x49, 0x8d, 0x54, 0x24, 0x01, //0x000002cd leaq $1(%r12), %rdx
|
||||
0x48, 0x63, 0x3c, 0xb9, //0x000002d2 movslq (%rcx,%rdi,4), %rdi
|
||||
0x48, 0x01, 0xcf, //0x000002d6 addq %rcx, %rdi
|
||||
0xff, 0xe7, //0x000002d9 jmpq *%rdi
|
||||
//0x000002db LBB0_38
|
||||
0x48, 0x89, 0xd7, //0x000002db movq %rdx, %rdi
|
||||
0x4c, 0x29, 0xff, //0x000002de subq %r15, %rdi
|
||||
0x49, 0x83, 0xfb, 0xff, //0x000002e1 cmpq $-1, %r11
|
||||
0x0f, 0x85, 0x95, 0x01, 0x00, 0x00, //0x000002e5 jne LBB0_61
|
||||
0x48, 0xff, 0xcf, //0x000002eb decq %rdi
|
||||
0x49, 0x89, 0xfb, //0x000002ee movq %rdi, %r11
|
||||
0xe9, 0xba, 0xff, 0xff, 0xff, //0x000002f1 jmp LBB0_40
|
||||
//0x000002f6 LBB0_36
|
||||
0x48, 0x89, 0xd7, //0x000002f6 movq %rdx, %rdi
|
||||
0x4c, 0x29, 0xff, //0x000002f9 subq %r15, %rdi
|
||||
0x49, 0x83, 0xfe, 0xff, //0x000002fc cmpq $-1, %r14
|
||||
0x0f, 0x85, 0x7a, 0x01, 0x00, 0x00, //0x00000300 jne LBB0_61
|
||||
0x48, 0xff, 0xcf, //0x00000306 decq %rdi
|
||||
0x49, 0x89, 0xfe, //0x00000309 movq %rdi, %r14
|
||||
0xe9, 0x9f, 0xff, 0xff, 0xff, //0x0000030c jmp LBB0_40
|
||||
//0x00000311 LBB0_34
|
||||
0x48, 0x89, 0xd7, //0x00000311 movq %rdx, %rdi
|
||||
0x4c, 0x29, 0xff, //0x00000314 subq %r15, %rdi
|
||||
0x49, 0x83, 0xfa, 0xff, //0x00000317 cmpq $-1, %r10
|
||||
0x0f, 0x85, 0x5f, 0x01, 0x00, 0x00, //0x0000031b jne LBB0_61
|
||||
0x48, 0xff, 0xcf, //0x00000321 decq %rdi
|
||||
0x49, 0x89, 0xfa, //0x00000324 movq %rdi, %r10
|
||||
0xe9, 0x84, 0xff, 0xff, 0xff, //0x00000327 jmp LBB0_40
|
||||
//0x0000032c LBB0_60
|
||||
0x48, 0x01, 0xcb, //0x0000032c addq %rcx, %rbx
|
||||
0x49, 0x89, 0xdc, //0x0000032f movq %rbx, %r12
|
||||
0x48, 0x8b, 0x75, 0xc0, //0x00000332 movq $-64(%rbp), %rsi
|
||||
0x48, 0x8b, 0x5d, 0xc8, //0x00000336 movq $-56(%rbp), %rbx
|
||||
//0x0000033a LBB0_42
|
||||
0x48, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000033a movq $-1, %rdi
|
||||
0x4d, 0x85, 0xf6, //0x00000341 testq %r14, %r14
|
||||
0x0f, 0x84, 0x14, 0x01, 0x00, 0x00, //0x00000344 je LBB0_57
|
||||
//0x0000034a LBB0_43
|
||||
0x4d, 0x85, 0xdb, //0x0000034a testq %r11, %r11
|
||||
0x0f, 0x84, 0x0b, 0x01, 0x00, 0x00, //0x0000034d je LBB0_57
|
||||
0x4d, 0x85, 0xd2, //0x00000353 testq %r10, %r10
|
||||
0x48, 0x8b, 0x55, 0xd0, //0x00000356 movq $-48(%rbp), %rdx
|
||||
0x0f, 0x84, 0xfe, 0x00, 0x00, 0x00, //0x0000035a je LBB0_57
|
||||
0x4d, 0x29, 0xfc, //0x00000360 subq %r15, %r12
|
||||
0x49, 0x8d, 0x44, 0x24, 0xff, //0x00000363 leaq $-1(%r12), %rax
|
||||
0x49, 0x39, 0xc6, //0x00000368 cmpq %rax, %r14
|
||||
0x0f, 0x84, 0x3c, 0x00, 0x00, 0x00, //0x0000036b je LBB0_48
|
||||
0x49, 0x39, 0xc2, //0x00000371 cmpq %rax, %r10
|
||||
0x0f, 0x84, 0x33, 0x00, 0x00, 0x00, //0x00000374 je LBB0_48
|
||||
0x49, 0x39, 0xc3, //0x0000037a cmpq %rax, %r11
|
||||
0x0f, 0x84, 0x2a, 0x00, 0x00, 0x00, //0x0000037d je LBB0_48
|
||||
0x4d, 0x85, 0xdb, //0x00000383 testq %r11, %r11
|
||||
0x0f, 0x8e, 0x35, 0x00, 0x00, 0x00, //0x00000386 jle LBB0_52
|
||||
0x49, 0x8d, 0x43, 0xff, //0x0000038c leaq $-1(%r11), %rax
|
||||
0x49, 0x39, 0xc6, //0x00000390 cmpq %rax, %r14
|
||||
0x0f, 0x84, 0x28, 0x00, 0x00, 0x00, //0x00000393 je LBB0_52
|
||||
0x49, 0xf7, 0xd3, //0x00000399 notq %r11
|
||||
0x4c, 0x89, 0xdf, //0x0000039c movq %r11, %rdi
|
||||
0x48, 0x85, 0xff, //0x0000039f testq %rdi, %rdi
|
||||
0x0f, 0x89, 0x98, 0x00, 0x00, 0x00, //0x000003a2 jns LBB0_58
|
||||
0xe9, 0xb1, 0x00, 0x00, 0x00, //0x000003a8 jmp LBB0_57
|
||||
//0x000003ad LBB0_48
|
||||
0x49, 0xf7, 0xdc, //0x000003ad negq %r12
|
||||
0x4c, 0x89, 0xe7, //0x000003b0 movq %r12, %rdi
|
||||
0x48, 0x85, 0xff, //0x000003b3 testq %rdi, %rdi
|
||||
0x0f, 0x89, 0x84, 0x00, 0x00, 0x00, //0x000003b6 jns LBB0_58
|
||||
0xe9, 0x9d, 0x00, 0x00, 0x00, //0x000003bc jmp LBB0_57
|
||||
//0x000003c1 LBB0_52
|
||||
0x4c, 0x89, 0xd0, //0x000003c1 movq %r10, %rax
|
||||
0x4c, 0x09, 0xf0, //0x000003c4 orq %r14, %rax
|
||||
0x4d, 0x39, 0xf2, //0x000003c7 cmpq %r14, %r10
|
||||
0x0f, 0x8c, 0x1d, 0x00, 0x00, 0x00, //0x000003ca jl LBB0_55
|
||||
0x48, 0x85, 0xc0, //0x000003d0 testq %rax, %rax
|
||||
0x0f, 0x88, 0x14, 0x00, 0x00, 0x00, //0x000003d3 js LBB0_55
|
||||
0x49, 0xf7, 0xd2, //0x000003d9 notq %r10
|
||||
0x4c, 0x89, 0xd7, //0x000003dc movq %r10, %rdi
|
||||
0x48, 0x85, 0xff, //0x000003df testq %rdi, %rdi
|
||||
0x0f, 0x89, 0x58, 0x00, 0x00, 0x00, //0x000003e2 jns LBB0_58
|
||||
0xe9, 0x71, 0x00, 0x00, 0x00, //0x000003e8 jmp LBB0_57
|
||||
//0x000003ed LBB0_55
|
||||
0x48, 0x85, 0xc0, //0x000003ed testq %rax, %rax
|
||||
0x49, 0x8d, 0x46, 0xff, //0x000003f0 leaq $-1(%r14), %rax
|
||||
0x49, 0xf7, 0xd6, //0x000003f4 notq %r14
|
||||
0x4d, 0x0f, 0x48, 0xf4, //0x000003f7 cmovsq %r12, %r14
|
||||
0x49, 0x39, 0xc2, //0x000003fb cmpq %rax, %r10
|
||||
0x4d, 0x0f, 0x45, 0xf4, //0x000003fe cmovneq %r12, %r14
|
||||
0x4c, 0x89, 0xf7, //0x00000402 movq %r14, %rdi
|
||||
0x48, 0x85, 0xff, //0x00000405 testq %rdi, %rdi
|
||||
0x0f, 0x89, 0x32, 0x00, 0x00, 0x00, //0x00000408 jns LBB0_58
|
||||
0xe9, 0x4b, 0x00, 0x00, 0x00, //0x0000040e jmp LBB0_57
|
||||
//0x00000413 LBB0_17
|
||||
0x4c, 0x29, 0xfb, //0x00000413 subq %r15, %rbx
|
||||
0x0f, 0xbc, 0xfa, //0x00000416 bsfl %edx, %edi
|
||||
0xe9, 0x07, 0x00, 0x00, 0x00, //0x00000419 jmp LBB0_14
|
||||
//0x0000041e LBB0_13
|
||||
0x4c, 0x29, 0xfb, //0x0000041e subq %r15, %rbx
|
||||
0x41, 0x0f, 0xbc, 0xf9, //0x00000421 bsfl %r9d, %edi
|
||||
//0x00000425 LBB0_14
|
||||
0x48, 0x01, 0xdf, //0x00000425 addq %rbx, %rdi
|
||||
//0x00000428 LBB0_15
|
||||
0x48, 0xf7, 0xd7, //0x00000428 notq %rdi
|
||||
0x48, 0x8b, 0x75, 0xc0, //0x0000042b movq $-64(%rbp), %rsi
|
||||
0x48, 0x8b, 0x5d, 0xc8, //0x0000042f movq $-56(%rbp), %rbx
|
||||
0x48, 0x8b, 0x55, 0xd0, //0x00000433 movq $-48(%rbp), %rdx
|
||||
0x48, 0x85, 0xff, //0x00000437 testq %rdi, %rdi
|
||||
0x0f, 0x88, 0x1e, 0x00, 0x00, 0x00, //0x0000043a js LBB0_57
|
||||
//0x00000440 LBB0_58
|
||||
0x49, 0x01, 0xff, //0x00000440 addq %rdi, %r15
|
||||
0x48, 0x89, 0xd0, //0x00000443 movq %rdx, %rax
|
||||
0xe9, 0x20, 0x00, 0x00, 0x00, //0x00000446 jmp LBB0_59
|
||||
//0x0000044b LBB0_41
|
||||
0x49, 0x89, 0xc4, //0x0000044b movq %rax, %r12
|
||||
0x48, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, //0x0000044e movq $-1, %rdi
|
||||
0x4d, 0x85, 0xf6, //0x00000455 testq %r14, %r14
|
||||
0x0f, 0x85, 0xec, 0xfe, 0xff, 0xff, //0x00000458 jne LBB0_43
|
||||
//0x0000045e LBB0_57
|
||||
0x48, 0xf7, 0xd7, //0x0000045e notq %rdi
|
||||
0x49, 0x01, 0xff, //0x00000461 addq %rdi, %r15
|
||||
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000464 movq $-2, %rax
|
||||
//0x0000046b LBB0_59
|
||||
0x49, 0x29, 0xdf, //0x0000046b subq %rbx, %r15
|
||||
0x4c, 0x89, 0x3e, //0x0000046e movq %r15, (%rsi)
|
||||
0x48, 0x83, 0xc4, 0x18, //0x00000471 addq $24, %rsp
|
||||
0x5b, //0x00000475 popq %rbx
|
||||
0x41, 0x5c, //0x00000476 popq %r12
|
||||
0x41, 0x5d, //0x00000478 popq %r13
|
||||
0x41, 0x5e, //0x0000047a popq %r14
|
||||
0x41, 0x5f, //0x0000047c popq %r15
|
||||
0x5d, //0x0000047e popq %rbp
|
||||
0xc3, //0x0000047f retq
|
||||
//0x00000480 LBB0_61
|
||||
0x48, 0xf7, 0xdf, //0x00000480 negq %rdi
|
||||
0x48, 0x8b, 0x55, 0xd0, //0x00000483 movq $-48(%rbp), %rdx
|
||||
0x48, 0x85, 0xff, //0x00000487 testq %rdi, %rdi
|
||||
0x0f, 0x89, 0xb0, 0xff, 0xff, 0xff, //0x0000048a jns LBB0_58
|
||||
0xe9, 0xc9, 0xff, 0xff, 0xff, //0x00000490 jmp LBB0_57
|
||||
//0x00000495 LBB0_1
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000495 movq $-1, %rax
|
||||
0xe9, 0xca, 0xff, 0xff, 0xff, //0x0000049c jmp LBB0_59
|
||||
//0x000004a1 LBB0_8
|
||||
0x49, 0xc7, 0xc2, 0xff, 0xff, 0xff, 0xff, //0x000004a1 movq $-1, %r10
|
||||
0x4d, 0x89, 0xfc, //0x000004a8 movq %r15, %r12
|
||||
0x4d, 0x89, 0xe8, //0x000004ab movq %r13, %r8
|
||||
0x49, 0xc7, 0xc6, 0xff, 0xff, 0xff, 0xff, //0x000004ae movq $-1, %r14
|
||||
0x49, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, //0x000004b5 movq $-1, %r11
|
||||
0xe9, 0xdc, 0xfd, 0xff, 0xff, //0x000004bc jmp LBB0_31
|
||||
0x90, 0x90, 0x90, //0x000004c1 .p2align 2, 0x90
|
||||
// // .set L0_0_set_38, LBB0_38-LJTI0_0
|
||||
// // .set L0_0_set_42, LBB0_42-LJTI0_0
|
||||
// // .set L0_0_set_34, LBB0_34-LJTI0_0
|
||||
// // .set L0_0_set_40, LBB0_40-LJTI0_0
|
||||
// // .set L0_0_set_36, LBB0_36-LJTI0_0
|
||||
//0x000004c4 LJTI0_0
|
||||
0x17, 0xfe, 0xff, 0xff, //0x000004c4 .long L0_0_set_38
|
||||
0x76, 0xfe, 0xff, 0xff, //0x000004c8 .long L0_0_set_42
|
||||
0x17, 0xfe, 0xff, 0xff, //0x000004cc .long L0_0_set_38
|
||||
0x4d, 0xfe, 0xff, 0xff, //0x000004d0 .long L0_0_set_34
|
||||
0x76, 0xfe, 0xff, 0xff, //0x000004d4 .long L0_0_set_42
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004d8 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004dc .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004e0 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004e4 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004e8 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004ec .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004f0 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004f4 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004f8 .long L0_0_set_40
|
||||
0xec, 0xfd, 0xff, 0xff, //0x000004fc .long L0_0_set_40
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000500 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000504 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000508 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000050c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000510 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000514 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000518 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000051c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000520 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000524 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000528 .long L0_0_set_42
|
||||
0x32, 0xfe, 0xff, 0xff, //0x0000052c .long L0_0_set_36
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000530 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000534 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000538 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000053c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000540 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000544 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000548 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000054c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000550 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000554 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000558 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000055c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000560 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000564 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000568 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000056c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000570 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000574 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000578 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000057c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000580 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000584 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000588 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000058c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000590 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000594 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x00000598 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x0000059c .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x000005a0 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x000005a4 .long L0_0_set_42
|
||||
0x76, 0xfe, 0xff, 0xff, //0x000005a8 .long L0_0_set_42
|
||||
0x32, 0xfe, 0xff, 0xff, //0x000005ac .long L0_0_set_36
|
||||
//0x000005b0 .p2align 2, 0x00
|
||||
//0x000005b0 _MASK_USE_NUMBER
|
||||
0x02, 0x00, 0x00, 0x00, //0x000005b0 .long 2
|
||||
}
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License );
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_skip_object func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
var S_skip_object uintptr
|
||||
|
||||
//go:nosplit
|
||||
func skip_object(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
|
||||
return F_skip_object(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__skip_object = 160
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__skip_object = 152
|
||||
)
|
||||
|
||||
const (
|
||||
_size__skip_object = 9524
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__skip_object = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{8962, 152},
|
||||
{8966, 48},
|
||||
{8967, 40},
|
||||
{8969, 32},
|
||||
{8971, 24},
|
||||
{8973, 16},
|
||||
{8975, 8},
|
||||
{8976, 0},
|
||||
{9524, 152},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_skip_object = []loader.CFunc{
|
||||
{"_skip_object_entry", 0, _entry__skip_object, 0, nil},
|
||||
{"_skip_object", _entry__skip_object, _size__skip_object, _stack__skip_object, _pcsp__skip_object},
|
||||
}
|
||||
+2854
File diff suppressed because it is too large
Load Diff
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/native/types`
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_skip_one func(s unsafe.Pointer, p unsafe.Pointer, m unsafe.Pointer, flags uint64) (ret int)
|
||||
|
||||
var S_skip_one uintptr
|
||||
|
||||
//go:nosplit
|
||||
func skip_one(s *string, p *int, m *types.StateMachine, flags uint64) (ret int) {
|
||||
return F_skip_one(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)), rt.NoEscape(unsafe.Pointer(m)), flags)
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
// Code generated by Makefile, DO NOT EDIT.
|
||||
|
||||
/*
|
||||
* Copyright 2021 ByteDance Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`unsafe`
|
||||
|
||||
`github.com/bytedance/sonic/internal/rt`
|
||||
)
|
||||
|
||||
var F_skip_one_fast func(s unsafe.Pointer, p unsafe.Pointer) (ret int)
|
||||
|
||||
var S_skip_one_fast uintptr
|
||||
|
||||
//go:nosplit
|
||||
func skip_one_fast(s *string, p *int) (ret int) {
|
||||
return F_skip_one_fast(rt.NoEscape(unsafe.Pointer(s)), rt.NoEscape(unsafe.Pointer(p)))
|
||||
}
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__skip_one_fast = 128
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__skip_one_fast = 176
|
||||
)
|
||||
|
||||
const (
|
||||
_size__skip_one_fast = 3016
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__skip_one_fast = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{658, 176},
|
||||
{659, 168},
|
||||
{661, 160},
|
||||
{663, 152},
|
||||
{665, 144},
|
||||
{667, 136},
|
||||
{671, 128},
|
||||
{3016, 176},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_skip_one_fast = []loader.CFunc{
|
||||
{"_skip_one_fast_entry", 0, _entry__skip_one_fast, 0, nil},
|
||||
{"_skip_one_fast", _entry__skip_one_fast, _size__skip_one_fast, _stack__skip_one_fast, _pcsp__skip_one_fast},
|
||||
}
|
||||
Generated
Vendored
+945
@@ -0,0 +1,945 @@
|
||||
// +build amd64
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
var _text_skip_one_fast = []byte{
|
||||
// .p2align 4, 0x00
|
||||
// LCPI0_0
|
||||
0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, // QUAD $0x2c2c2c2c2c2c2c2c; QUAD $0x2c2c2c2c2c2c2c2c // .space 16, ',,,,,,,,,,,,,,,,'
|
||||
//0x00000010 LCPI0_1
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, //0x00000010 QUAD $0x2020202020202020; QUAD $0x2020202020202020 // .space 16, ' '
|
||||
//0x00000020 LCPI0_2
|
||||
0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, //0x00000020 QUAD $0x7d7d7d7d7d7d7d7d; QUAD $0x7d7d7d7d7d7d7d7d // .space 16, '}}}}}}}}}}}}}}}}'
|
||||
//0x00000030 LCPI0_3
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, //0x00000030 QUAD $0x2222222222222222; QUAD $0x2222222222222222 // .space 16, '""""""""""""""""'
|
||||
//0x00000040 LCPI0_4
|
||||
0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, //0x00000040 QUAD $0x5c5c5c5c5c5c5c5c; QUAD $0x5c5c5c5c5c5c5c5c // .space 16, '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
|
||||
//0x00000050 LCPI0_5
|
||||
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, //0x00000050 QUAD $0x7b7b7b7b7b7b7b7b; QUAD $0x7b7b7b7b7b7b7b7b // .space 16, '{{{{{{{{{{{{{{{{'
|
||||
//0x00000060 LCPI0_6
|
||||
0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, //0x00000060 QUAD $0x5b5b5b5b5b5b5b5b; QUAD $0x5b5b5b5b5b5b5b5b // .space 16, '[[[[[[[[[[[[[[[['
|
||||
//0x00000070 LCPI0_7
|
||||
0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, //0x00000070 QUAD $0x5d5d5d5d5d5d5d5d; QUAD $0x5d5d5d5d5d5d5d5d // .space 16, ']]]]]]]]]]]]]]]]'
|
||||
//0x00000080 .p2align 4, 0x90
|
||||
//0x00000080 _skip_one_fast
|
||||
0x55, //0x00000080 pushq %rbp
|
||||
0x48, 0x89, 0xe5, //0x00000081 movq %rsp, %rbp
|
||||
0x41, 0x57, //0x00000084 pushq %r15
|
||||
0x41, 0x56, //0x00000086 pushq %r14
|
||||
0x41, 0x55, //0x00000088 pushq %r13
|
||||
0x41, 0x54, //0x0000008a pushq %r12
|
||||
0x53, //0x0000008c pushq %rbx
|
||||
0x48, 0x81, 0xec, 0x80, 0x00, 0x00, 0x00, //0x0000008d subq $128, %rsp
|
||||
0x4c, 0x8b, 0x37, //0x00000094 movq (%rdi), %r14
|
||||
0x4c, 0x8b, 0x47, 0x08, //0x00000097 movq $8(%rdi), %r8
|
||||
0x48, 0x8b, 0x16, //0x0000009b movq (%rsi), %rdx
|
||||
0x48, 0x89, 0xd0, //0x0000009e movq %rdx, %rax
|
||||
0x4c, 0x29, 0xc0, //0x000000a1 subq %r8, %rax
|
||||
0x0f, 0x83, 0x2a, 0x00, 0x00, 0x00, //0x000000a4 jae LBB0_5
|
||||
0x41, 0x8a, 0x0c, 0x16, //0x000000aa movb (%r14,%rdx), %cl
|
||||
0x80, 0xf9, 0x0d, //0x000000ae cmpb $13, %cl
|
||||
0x0f, 0x84, 0x1d, 0x00, 0x00, 0x00, //0x000000b1 je LBB0_5
|
||||
0x80, 0xf9, 0x20, //0x000000b7 cmpb $32, %cl
|
||||
0x0f, 0x84, 0x14, 0x00, 0x00, 0x00, //0x000000ba je LBB0_5
|
||||
0x80, 0xc1, 0xf7, //0x000000c0 addb $-9, %cl
|
||||
0x80, 0xf9, 0x01, //0x000000c3 cmpb $1, %cl
|
||||
0x0f, 0x86, 0x08, 0x00, 0x00, 0x00, //0x000000c6 jbe LBB0_5
|
||||
0x49, 0x89, 0xd3, //0x000000cc movq %rdx, %r11
|
||||
0xe9, 0x2b, 0x01, 0x00, 0x00, //0x000000cf jmp LBB0_27
|
||||
//0x000000d4 LBB0_5
|
||||
0x4c, 0x8d, 0x5a, 0x01, //0x000000d4 leaq $1(%rdx), %r11
|
||||
0x4d, 0x39, 0xc3, //0x000000d8 cmpq %r8, %r11
|
||||
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x000000db jae LBB0_9
|
||||
0x43, 0x8a, 0x0c, 0x1e, //0x000000e1 movb (%r14,%r11), %cl
|
||||
0x80, 0xf9, 0x0d, //0x000000e5 cmpb $13, %cl
|
||||
0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x000000e8 je LBB0_9
|
||||
0x80, 0xf9, 0x20, //0x000000ee cmpb $32, %cl
|
||||
0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x000000f1 je LBB0_9
|
||||
0x80, 0xc1, 0xf7, //0x000000f7 addb $-9, %cl
|
||||
0x80, 0xf9, 0x01, //0x000000fa cmpb $1, %cl
|
||||
0x0f, 0x87, 0xfc, 0x00, 0x00, 0x00, //0x000000fd ja LBB0_27
|
||||
//0x00000103 LBB0_9
|
||||
0x4c, 0x8d, 0x5a, 0x02, //0x00000103 leaq $2(%rdx), %r11
|
||||
0x4d, 0x39, 0xc3, //0x00000107 cmpq %r8, %r11
|
||||
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x0000010a jae LBB0_13
|
||||
0x43, 0x8a, 0x0c, 0x1e, //0x00000110 movb (%r14,%r11), %cl
|
||||
0x80, 0xf9, 0x0d, //0x00000114 cmpb $13, %cl
|
||||
0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000117 je LBB0_13
|
||||
0x80, 0xf9, 0x20, //0x0000011d cmpb $32, %cl
|
||||
0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x00000120 je LBB0_13
|
||||
0x80, 0xc1, 0xf7, //0x00000126 addb $-9, %cl
|
||||
0x80, 0xf9, 0x01, //0x00000129 cmpb $1, %cl
|
||||
0x0f, 0x87, 0xcd, 0x00, 0x00, 0x00, //0x0000012c ja LBB0_27
|
||||
//0x00000132 LBB0_13
|
||||
0x4c, 0x8d, 0x5a, 0x03, //0x00000132 leaq $3(%rdx), %r11
|
||||
0x4d, 0x39, 0xc3, //0x00000136 cmpq %r8, %r11
|
||||
0x0f, 0x83, 0x22, 0x00, 0x00, 0x00, //0x00000139 jae LBB0_17
|
||||
0x43, 0x8a, 0x0c, 0x1e, //0x0000013f movb (%r14,%r11), %cl
|
||||
0x80, 0xf9, 0x0d, //0x00000143 cmpb $13, %cl
|
||||
0x0f, 0x84, 0x15, 0x00, 0x00, 0x00, //0x00000146 je LBB0_17
|
||||
0x80, 0xf9, 0x20, //0x0000014c cmpb $32, %cl
|
||||
0x0f, 0x84, 0x0c, 0x00, 0x00, 0x00, //0x0000014f je LBB0_17
|
||||
0x80, 0xc1, 0xf7, //0x00000155 addb $-9, %cl
|
||||
0x80, 0xf9, 0x01, //0x00000158 cmpb $1, %cl
|
||||
0x0f, 0x87, 0x9e, 0x00, 0x00, 0x00, //0x0000015b ja LBB0_27
|
||||
//0x00000161 LBB0_17
|
||||
0x48, 0x8d, 0x4a, 0x04, //0x00000161 leaq $4(%rdx), %rcx
|
||||
0x49, 0x39, 0xc8, //0x00000165 cmpq %rcx, %r8
|
||||
0x0f, 0x86, 0x4b, 0x00, 0x00, 0x00, //0x00000168 jbe LBB0_23
|
||||
0x49, 0x39, 0xc8, //0x0000016e cmpq %rcx, %r8
|
||||
0x0f, 0x84, 0x51, 0x00, 0x00, 0x00, //0x00000171 je LBB0_24
|
||||
0x4b, 0x8d, 0x0c, 0x06, //0x00000177 leaq (%r14,%r8), %rcx
|
||||
0x48, 0x83, 0xc0, 0x04, //0x0000017b addq $4, %rax
|
||||
0x4e, 0x8d, 0x5c, 0x32, 0x05, //0x0000017f leaq $5(%rdx,%r14), %r11
|
||||
0x48, 0xba, 0x00, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, //0x00000184 movabsq $4294977024, %rdx
|
||||
0x90, 0x90, //0x0000018e .p2align 4, 0x90
|
||||
//0x00000190 LBB0_20
|
||||
0x41, 0x0f, 0xbe, 0x5b, 0xff, //0x00000190 movsbl $-1(%r11), %ebx
|
||||
0x83, 0xfb, 0x20, //0x00000195 cmpl $32, %ebx
|
||||
0x0f, 0x87, 0x48, 0x00, 0x00, 0x00, //0x00000198 ja LBB0_26
|
||||
0x48, 0x0f, 0xa3, 0xda, //0x0000019e btq %rbx, %rdx
|
||||
0x0f, 0x83, 0x3e, 0x00, 0x00, 0x00, //0x000001a2 jae LBB0_26
|
||||
0x49, 0xff, 0xc3, //0x000001a8 incq %r11
|
||||
0x48, 0xff, 0xc0, //0x000001ab incq %rax
|
||||
0x0f, 0x85, 0xdc, 0xff, 0xff, 0xff, //0x000001ae jne LBB0_20
|
||||
0xe9, 0x12, 0x00, 0x00, 0x00, //0x000001b4 jmp LBB0_25
|
||||
//0x000001b9 LBB0_23
|
||||
0x48, 0x89, 0x0e, //0x000001b9 movq %rcx, (%rsi)
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000001bc movq $-1, %rax
|
||||
0xe9, 0x46, 0x01, 0x00, 0x00, //0x000001c3 jmp LBB0_45
|
||||
//0x000001c8 LBB0_24
|
||||
0x4c, 0x01, 0xf1, //0x000001c8 addq %r14, %rcx
|
||||
//0x000001cb LBB0_25
|
||||
0x4c, 0x29, 0xf1, //0x000001cb subq %r14, %rcx
|
||||
0x49, 0x89, 0xcb, //0x000001ce movq %rcx, %r11
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000001d1 movq $-1, %rax
|
||||
0x4d, 0x39, 0xc3, //0x000001d8 cmpq %r8, %r11
|
||||
0x0f, 0x82, 0x1e, 0x00, 0x00, 0x00, //0x000001db jb LBB0_27
|
||||
0xe9, 0x28, 0x01, 0x00, 0x00, //0x000001e1 jmp LBB0_45
|
||||
//0x000001e6 LBB0_26
|
||||
0x4c, 0x89, 0xf0, //0x000001e6 movq %r14, %rax
|
||||
0x48, 0xf7, 0xd0, //0x000001e9 notq %rax
|
||||
0x49, 0x01, 0xc3, //0x000001ec addq %rax, %r11
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x000001ef movq $-1, %rax
|
||||
0x4d, 0x39, 0xc3, //0x000001f6 cmpq %r8, %r11
|
||||
0x0f, 0x83, 0x0f, 0x01, 0x00, 0x00, //0x000001f9 jae LBB0_45
|
||||
//0x000001ff LBB0_27
|
||||
0x49, 0x8d, 0x5b, 0x01, //0x000001ff leaq $1(%r11), %rbx
|
||||
0x48, 0x89, 0x1e, //0x00000203 movq %rbx, (%rsi)
|
||||
0x43, 0x0f, 0xbe, 0x0c, 0x1e, //0x00000206 movsbl (%r14,%r11), %ecx
|
||||
0x83, 0xf9, 0x7b, //0x0000020b cmpl $123, %ecx
|
||||
0x0f, 0x87, 0x1f, 0x01, 0x00, 0x00, //0x0000020e ja LBB0_47
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000214 movq $-1, %rax
|
||||
0x48, 0x8d, 0x15, 0x26, 0x0a, 0x00, 0x00, //0x0000021b leaq $2598(%rip), %rdx /* LJTI0_0+0(%rip) */
|
||||
0x48, 0x63, 0x0c, 0x8a, //0x00000222 movslq (%rdx,%rcx,4), %rcx
|
||||
0x48, 0x01, 0xd1, //0x00000226 addq %rdx, %rcx
|
||||
0xff, 0xe1, //0x00000229 jmpq *%rcx
|
||||
//0x0000022b LBB0_29
|
||||
0x48, 0x8b, 0x4f, 0x08, //0x0000022b movq $8(%rdi), %rcx
|
||||
0x48, 0x89, 0xc8, //0x0000022f movq %rcx, %rax
|
||||
0x48, 0x29, 0xd8, //0x00000232 subq %rbx, %rax
|
||||
0x4c, 0x01, 0xf3, //0x00000235 addq %r14, %rbx
|
||||
0x48, 0x83, 0xf8, 0x10, //0x00000238 cmpq $16, %rax
|
||||
0x0f, 0x82, 0x77, 0x00, 0x00, 0x00, //0x0000023c jb LBB0_34
|
||||
0x4c, 0x29, 0xd9, //0x00000242 subq %r11, %rcx
|
||||
0x48, 0x83, 0xc1, 0xef, //0x00000245 addq $-17, %rcx
|
||||
0x48, 0x89, 0xca, //0x00000249 movq %rcx, %rdx
|
||||
0x48, 0x83, 0xe2, 0xf0, //0x0000024c andq $-16, %rdx
|
||||
0x4c, 0x01, 0xda, //0x00000250 addq %r11, %rdx
|
||||
0x49, 0x8d, 0x54, 0x16, 0x11, //0x00000253 leaq $17(%r14,%rdx), %rdx
|
||||
0x83, 0xe1, 0x0f, //0x00000258 andl $15, %ecx
|
||||
0xc5, 0xfa, 0x6f, 0x05, 0x9d, 0xfd, 0xff, 0xff, //0x0000025b vmovdqu $-611(%rip), %xmm0 /* LCPI0_0+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0xa5, 0xfd, 0xff, 0xff, //0x00000263 vmovdqu $-603(%rip), %xmm1 /* LCPI0_1+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x15, 0xad, 0xfd, 0xff, 0xff, //0x0000026b vmovdqu $-595(%rip), %xmm2 /* LCPI0_2+0(%rip) */
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000273 .p2align 4, 0x90
|
||||
//0x00000280 LBB0_31
|
||||
0xc5, 0xfa, 0x6f, 0x1b, //0x00000280 vmovdqu (%rbx), %xmm3
|
||||
0xc5, 0xe1, 0x74, 0xe0, //0x00000284 vpcmpeqb %xmm0, %xmm3, %xmm4
|
||||
0xc5, 0xe1, 0xeb, 0xd9, //0x00000288 vpor %xmm1, %xmm3, %xmm3
|
||||
0xc5, 0xe1, 0x74, 0xda, //0x0000028c vpcmpeqb %xmm2, %xmm3, %xmm3
|
||||
0xc5, 0xe1, 0xeb, 0xdc, //0x00000290 vpor %xmm4, %xmm3, %xmm3
|
||||
0xc5, 0xf9, 0xd7, 0xfb, //0x00000294 vpmovmskb %xmm3, %edi
|
||||
0x66, 0x85, 0xff, //0x00000298 testw %di, %di
|
||||
0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x0000029b jne LBB0_42
|
||||
0x48, 0x83, 0xc3, 0x10, //0x000002a1 addq $16, %rbx
|
||||
0x48, 0x83, 0xc0, 0xf0, //0x000002a5 addq $-16, %rax
|
||||
0x48, 0x83, 0xf8, 0x0f, //0x000002a9 cmpq $15, %rax
|
||||
0x0f, 0x87, 0xcd, 0xff, 0xff, 0xff, //0x000002ad ja LBB0_31
|
||||
0x48, 0x89, 0xc8, //0x000002b3 movq %rcx, %rax
|
||||
0x48, 0x89, 0xd3, //0x000002b6 movq %rdx, %rbx
|
||||
//0x000002b9 LBB0_34
|
||||
0x48, 0x85, 0xc0, //0x000002b9 testq %rax, %rax
|
||||
0x0f, 0x84, 0x31, 0x00, 0x00, 0x00, //0x000002bc je LBB0_41
|
||||
0x48, 0x8d, 0x0c, 0x03, //0x000002c2 leaq (%rbx,%rax), %rcx
|
||||
//0x000002c6 LBB0_36
|
||||
0x0f, 0xb6, 0x13, //0x000002c6 movzbl (%rbx), %edx
|
||||
0x80, 0xfa, 0x2c, //0x000002c9 cmpb $44, %dl
|
||||
0x0f, 0x84, 0x21, 0x00, 0x00, 0x00, //0x000002cc je LBB0_41
|
||||
0x80, 0xfa, 0x7d, //0x000002d2 cmpb $125, %dl
|
||||
0x0f, 0x84, 0x18, 0x00, 0x00, 0x00, //0x000002d5 je LBB0_41
|
||||
0x80, 0xfa, 0x5d, //0x000002db cmpb $93, %dl
|
||||
0x0f, 0x84, 0x0f, 0x00, 0x00, 0x00, //0x000002de je LBB0_41
|
||||
0x48, 0xff, 0xc3, //0x000002e4 incq %rbx
|
||||
0x48, 0xff, 0xc8, //0x000002e7 decq %rax
|
||||
0x0f, 0x85, 0xd6, 0xff, 0xff, 0xff, //0x000002ea jne LBB0_36
|
||||
0x48, 0x89, 0xcb, //0x000002f0 movq %rcx, %rbx
|
||||
//0x000002f3 LBB0_41
|
||||
0x4c, 0x29, 0xf3, //0x000002f3 subq %r14, %rbx
|
||||
0xe9, 0x0d, 0x00, 0x00, 0x00, //0x000002f6 jmp LBB0_43
|
||||
//0x000002fb LBB0_42
|
||||
0x0f, 0xb7, 0xc7, //0x000002fb movzwl %di, %eax
|
||||
0x48, 0x0f, 0xbc, 0xc0, //0x000002fe bsfq %rax, %rax
|
||||
0x4c, 0x29, 0xf3, //0x00000302 subq %r14, %rbx
|
||||
0x48, 0x01, 0xc3, //0x00000305 addq %rax, %rbx
|
||||
//0x00000308 LBB0_43
|
||||
0x48, 0x89, 0x1e, //0x00000308 movq %rbx, (%rsi)
|
||||
//0x0000030b LBB0_44
|
||||
0x4c, 0x89, 0xd8, //0x0000030b movq %r11, %rax
|
||||
//0x0000030e LBB0_45
|
||||
0x48, 0x8d, 0x65, 0xd8, //0x0000030e leaq $-40(%rbp), %rsp
|
||||
0x5b, //0x00000312 popq %rbx
|
||||
0x41, 0x5c, //0x00000313 popq %r12
|
||||
0x41, 0x5d, //0x00000315 popq %r13
|
||||
0x41, 0x5e, //0x00000317 popq %r14
|
||||
0x41, 0x5f, //0x00000319 popq %r15
|
||||
0x5d, //0x0000031b popq %rbp
|
||||
0xc5, 0xf8, 0x77, //0x0000031c vzeroupper
|
||||
0xc3, //0x0000031f retq
|
||||
//0x00000320 LBB0_46
|
||||
0x49, 0x8d, 0x4b, 0x04, //0x00000320 leaq $4(%r11), %rcx
|
||||
0x48, 0x3b, 0x4f, 0x08, //0x00000324 cmpq $8(%rdi), %rcx
|
||||
0x0f, 0x87, 0xe0, 0xff, 0xff, 0xff, //0x00000328 ja LBB0_45
|
||||
0xe9, 0xa6, 0x04, 0x00, 0x00, //0x0000032e jmp LBB0_83
|
||||
//0x00000333 LBB0_47
|
||||
0x4c, 0x89, 0x1e, //0x00000333 movq %r11, (%rsi)
|
||||
0x48, 0xc7, 0xc0, 0xfe, 0xff, 0xff, 0xff, //0x00000336 movq $-2, %rax
|
||||
0xe9, 0xcc, 0xff, 0xff, 0xff, //0x0000033d jmp LBB0_45
|
||||
//0x00000342 LBB0_48
|
||||
0x4c, 0x8b, 0x47, 0x08, //0x00000342 movq $8(%rdi), %r8
|
||||
0x4d, 0x89, 0xc7, //0x00000346 movq %r8, %r15
|
||||
0x49, 0x29, 0xdf, //0x00000349 subq %rbx, %r15
|
||||
0x49, 0x83, 0xff, 0x20, //0x0000034c cmpq $32, %r15
|
||||
0x0f, 0x8c, 0xbb, 0x08, 0x00, 0x00, //0x00000350 jl LBB0_117
|
||||
0x41, 0xb9, 0xff, 0xff, 0xff, 0xff, //0x00000356 movl $4294967295, %r9d
|
||||
0x4f, 0x8d, 0x14, 0x1e, //0x0000035c leaq (%r14,%r11), %r10
|
||||
0x4d, 0x29, 0xd8, //0x00000360 subq %r11, %r8
|
||||
0x41, 0xbd, 0x1f, 0x00, 0x00, 0x00, //0x00000363 movl $31, %r13d
|
||||
0x45, 0x31, 0xff, //0x00000369 xorl %r15d, %r15d
|
||||
0xc5, 0xfa, 0x6f, 0x05, 0xbc, 0xfc, 0xff, 0xff, //0x0000036c vmovdqu $-836(%rip), %xmm0 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0xc4, 0xfc, 0xff, 0xff, //0x00000374 vmovdqu $-828(%rip), %xmm1 /* LCPI0_4+0(%rip) */
|
||||
0x45, 0x31, 0xe4, //0x0000037c xorl %r12d, %r12d
|
||||
0xe9, 0x2e, 0x00, 0x00, 0x00, //0x0000037f jmp LBB0_50
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000384 .p2align 4, 0x90
|
||||
//0x00000390 LBB0_52
|
||||
0x45, 0x31, 0xe4, //0x00000390 xorl %r12d, %r12d
|
||||
0x85, 0xc9, //0x00000393 testl %ecx, %ecx
|
||||
0x0f, 0x85, 0x9e, 0x00, 0x00, 0x00, //0x00000395 jne LBB0_110
|
||||
//0x0000039b LBB0_53
|
||||
0x49, 0x83, 0xc7, 0x20, //0x0000039b addq $32, %r15
|
||||
0x4b, 0x8d, 0x4c, 0x28, 0xe0, //0x0000039f leaq $-32(%r8,%r13), %rcx
|
||||
0x49, 0x83, 0xc5, 0xe0, //0x000003a4 addq $-32, %r13
|
||||
0x48, 0x83, 0xf9, 0x3f, //0x000003a8 cmpq $63, %rcx
|
||||
0x0f, 0x8e, 0xdc, 0x07, 0x00, 0x00, //0x000003ac jle LBB0_54
|
||||
//0x000003b2 LBB0_50
|
||||
0xc4, 0x81, 0x7a, 0x6f, 0x54, 0x3a, 0x01, //0x000003b2 vmovdqu $1(%r10,%r15), %xmm2
|
||||
0xc4, 0x81, 0x7a, 0x6f, 0x5c, 0x3a, 0x11, //0x000003b9 vmovdqu $17(%r10,%r15), %xmm3
|
||||
0xc5, 0xe9, 0x74, 0xe0, //0x000003c0 vpcmpeqb %xmm0, %xmm2, %xmm4
|
||||
0xc5, 0xf9, 0xd7, 0xfc, //0x000003c4 vpmovmskb %xmm4, %edi
|
||||
0xc5, 0xe1, 0x74, 0xe0, //0x000003c8 vpcmpeqb %xmm0, %xmm3, %xmm4
|
||||
0xc5, 0xf9, 0xd7, 0xcc, //0x000003cc vpmovmskb %xmm4, %ecx
|
||||
0x48, 0xc1, 0xe1, 0x10, //0x000003d0 shlq $16, %rcx
|
||||
0x48, 0x09, 0xf9, //0x000003d4 orq %rdi, %rcx
|
||||
0xc5, 0xe9, 0x74, 0xd1, //0x000003d7 vpcmpeqb %xmm1, %xmm2, %xmm2
|
||||
0xc5, 0xf9, 0xd7, 0xda, //0x000003db vpmovmskb %xmm2, %ebx
|
||||
0xc5, 0xe1, 0x74, 0xd1, //0x000003df vpcmpeqb %xmm1, %xmm3, %xmm2
|
||||
0xc5, 0xf9, 0xd7, 0xfa, //0x000003e3 vpmovmskb %xmm2, %edi
|
||||
0x48, 0xc1, 0xe7, 0x10, //0x000003e7 shlq $16, %rdi
|
||||
0x48, 0x09, 0xdf, //0x000003eb orq %rbx, %rdi
|
||||
0x48, 0x89, 0xfb, //0x000003ee movq %rdi, %rbx
|
||||
0x4c, 0x09, 0xe3, //0x000003f1 orq %r12, %rbx
|
||||
0x0f, 0x84, 0x96, 0xff, 0xff, 0xff, //0x000003f4 je LBB0_52
|
||||
0x44, 0x89, 0xe3, //0x000003fa movl %r12d, %ebx
|
||||
0x44, 0x31, 0xcb, //0x000003fd xorl %r9d, %ebx
|
||||
0x21, 0xdf, //0x00000400 andl %ebx, %edi
|
||||
0x8d, 0x1c, 0x3f, //0x00000402 leal (%rdi,%rdi), %ebx
|
||||
0x44, 0x09, 0xe3, //0x00000405 orl %r12d, %ebx
|
||||
0x41, 0x8d, 0x91, 0xab, 0xaa, 0xaa, 0xaa, //0x00000408 leal $-1431655765(%r9), %edx
|
||||
0x31, 0xda, //0x0000040f xorl %ebx, %edx
|
||||
0x21, 0xfa, //0x00000411 andl %edi, %edx
|
||||
0x81, 0xe2, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000413 andl $-1431655766, %edx
|
||||
0x45, 0x31, 0xe4, //0x00000419 xorl %r12d, %r12d
|
||||
0x01, 0xfa, //0x0000041c addl %edi, %edx
|
||||
0x41, 0x0f, 0x92, 0xc4, //0x0000041e setb %r12b
|
||||
0x01, 0xd2, //0x00000422 addl %edx, %edx
|
||||
0x81, 0xf2, 0x55, 0x55, 0x55, 0x55, //0x00000424 xorl $1431655765, %edx
|
||||
0x21, 0xda, //0x0000042a andl %ebx, %edx
|
||||
0x44, 0x31, 0xca, //0x0000042c xorl %r9d, %edx
|
||||
0x21, 0xd1, //0x0000042f andl %edx, %ecx
|
||||
0x85, 0xc9, //0x00000431 testl %ecx, %ecx
|
||||
0x0f, 0x84, 0x62, 0xff, 0xff, 0xff, //0x00000433 je LBB0_53
|
||||
//0x00000439 LBB0_110
|
||||
0x48, 0x0f, 0xbc, 0xc1, //0x00000439 bsfq %rcx, %rax
|
||||
0x49, 0x01, 0xc2, //0x0000043d addq %rax, %r10
|
||||
0x4d, 0x01, 0xfa, //0x00000440 addq %r15, %r10
|
||||
0x4d, 0x29, 0xf2, //0x00000443 subq %r14, %r10
|
||||
0x49, 0x83, 0xc2, 0x02, //0x00000446 addq $2, %r10
|
||||
0x4c, 0x89, 0x16, //0x0000044a movq %r10, (%rsi)
|
||||
0xe9, 0xb9, 0xfe, 0xff, 0xff, //0x0000044d jmp LBB0_44
|
||||
//0x00000452 LBB0_57
|
||||
0x48, 0x8b, 0x4f, 0x08, //0x00000452 movq $8(%rdi), %rcx
|
||||
0x48, 0x29, 0xd9, //0x00000456 subq %rbx, %rcx
|
||||
0x49, 0x01, 0xde, //0x00000459 addq %rbx, %r14
|
||||
0x45, 0x31, 0xe4, //0x0000045c xorl %r12d, %r12d
|
||||
0xc5, 0x7a, 0x6f, 0x15, 0xc9, 0xfb, 0xff, 0xff, //0x0000045f vmovdqu $-1079(%rip), %xmm10 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0xd1, 0xfb, 0xff, 0xff, //0x00000467 vmovdqu $-1071(%rip), %xmm1 /* LCPI0_4+0(%rip) */
|
||||
0xc4, 0x41, 0x31, 0x76, 0xc9, //0x0000046f vpcmpeqd %xmm9, %xmm9, %xmm9
|
||||
0xc5, 0xfa, 0x6f, 0x1d, 0xe4, 0xfb, 0xff, 0xff, //0x00000474 vmovdqu $-1052(%rip), %xmm3 /* LCPI0_6+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x25, 0xec, 0xfb, 0xff, 0xff, //0x0000047c vmovdqu $-1044(%rip), %xmm4 /* LCPI0_7+0(%rip) */
|
||||
0xc4, 0x41, 0x38, 0x57, 0xc0, //0x00000484 vxorps %xmm8, %xmm8, %xmm8
|
||||
0x31, 0xdb, //0x00000489 xorl %ebx, %ebx
|
||||
0x45, 0x31, 0xc0, //0x0000048b xorl %r8d, %r8d
|
||||
0x45, 0x31, 0xff, //0x0000048e xorl %r15d, %r15d
|
||||
0x48, 0x83, 0xf9, 0x40, //0x00000491 cmpq $64, %rcx
|
||||
0x48, 0x89, 0x4c, 0x24, 0x08, //0x00000495 movq %rcx, $8(%rsp)
|
||||
0x4c, 0x89, 0x44, 0x24, 0x10, //0x0000049a movq %r8, $16(%rsp)
|
||||
0x0f, 0x8d, 0x33, 0x01, 0x00, 0x00, //0x0000049f jge LBB0_58
|
||||
//0x000004a5 LBB0_67
|
||||
0x48, 0x85, 0xc9, //0x000004a5 testq %rcx, %rcx
|
||||
0x0f, 0x8e, 0x6b, 0x07, 0x00, 0x00, //0x000004a8 jle LBB0_118
|
||||
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x40, //0x000004ae vmovups %ymm8, $64(%rsp)
|
||||
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x20, //0x000004b4 vmovups %ymm8, $32(%rsp)
|
||||
0x44, 0x89, 0xf1, //0x000004ba movl %r14d, %ecx
|
||||
0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x000004bd andl $4095, %ecx
|
||||
0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x000004c3 cmpl $4033, %ecx
|
||||
0x0f, 0x82, 0x09, 0x01, 0x00, 0x00, //0x000004c9 jb LBB0_58
|
||||
0x48, 0x83, 0x7c, 0x24, 0x08, 0x20, //0x000004cf cmpq $32, $8(%rsp)
|
||||
0x0f, 0x82, 0x2e, 0x00, 0x00, 0x00, //0x000004d5 jb LBB0_71
|
||||
0xc4, 0xc1, 0x78, 0x10, 0x06, //0x000004db vmovups (%r14), %xmm0
|
||||
0xc5, 0xf8, 0x11, 0x44, 0x24, 0x20, //0x000004e0 vmovups %xmm0, $32(%rsp)
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x46, 0x10, //0x000004e6 vmovdqu $16(%r14), %xmm0
|
||||
0xc5, 0xfa, 0x7f, 0x44, 0x24, 0x30, //0x000004ec vmovdqu %xmm0, $48(%rsp)
|
||||
0x49, 0x83, 0xc6, 0x20, //0x000004f2 addq $32, %r14
|
||||
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x000004f6 movq $8(%rsp), %rcx
|
||||
0x48, 0x8d, 0x51, 0xe0, //0x000004fb leaq $-32(%rcx), %rdx
|
||||
0x4c, 0x8d, 0x44, 0x24, 0x40, //0x000004ff leaq $64(%rsp), %r8
|
||||
0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000504 jmp LBB0_72
|
||||
//0x00000509 LBB0_71
|
||||
0x4c, 0x8d, 0x44, 0x24, 0x20, //0x00000509 leaq $32(%rsp), %r8
|
||||
0x48, 0x8b, 0x54, 0x24, 0x08, //0x0000050e movq $8(%rsp), %rdx
|
||||
//0x00000513 LBB0_72
|
||||
0x48, 0x83, 0xfa, 0x10, //0x00000513 cmpq $16, %rdx
|
||||
0x0f, 0x82, 0x5c, 0x00, 0x00, 0x00, //0x00000517 jb LBB0_73
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x0000051d vmovdqu (%r14), %xmm0
|
||||
0xc4, 0xc1, 0x7a, 0x7f, 0x00, //0x00000522 vmovdqu %xmm0, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x10, //0x00000527 addq $16, %r14
|
||||
0x49, 0x83, 0xc0, 0x10, //0x0000052b addq $16, %r8
|
||||
0x48, 0x83, 0xc2, 0xf0, //0x0000052f addq $-16, %rdx
|
||||
0x48, 0x83, 0xfa, 0x08, //0x00000533 cmpq $8, %rdx
|
||||
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x00000537 jae LBB0_78
|
||||
//0x0000053d LBB0_74
|
||||
0x48, 0x83, 0xfa, 0x04, //0x0000053d cmpq $4, %rdx
|
||||
0x0f, 0x8c, 0x58, 0x00, 0x00, 0x00, //0x00000541 jl LBB0_75
|
||||
//0x00000547 LBB0_79
|
||||
0x41, 0x8b, 0x0e, //0x00000547 movl (%r14), %ecx
|
||||
0x41, 0x89, 0x08, //0x0000054a movl %ecx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x04, //0x0000054d addq $4, %r14
|
||||
0x49, 0x83, 0xc0, 0x04, //0x00000551 addq $4, %r8
|
||||
0x48, 0x83, 0xc2, 0xfc, //0x00000555 addq $-4, %rdx
|
||||
0x48, 0x83, 0xfa, 0x02, //0x00000559 cmpq $2, %rdx
|
||||
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x0000055d jae LBB0_80
|
||||
//0x00000563 LBB0_76
|
||||
0x4c, 0x89, 0xf1, //0x00000563 movq %r14, %rcx
|
||||
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000566 leaq $32(%rsp), %r14
|
||||
0x48, 0x85, 0xd2, //0x0000056b testq %rdx, %rdx
|
||||
0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x0000056e jne LBB0_81
|
||||
0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00000574 jmp LBB0_58
|
||||
//0x00000579 LBB0_73
|
||||
0x48, 0x83, 0xfa, 0x08, //0x00000579 cmpq $8, %rdx
|
||||
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x0000057d jb LBB0_74
|
||||
//0x00000583 LBB0_78
|
||||
0x49, 0x8b, 0x0e, //0x00000583 movq (%r14), %rcx
|
||||
0x49, 0x89, 0x08, //0x00000586 movq %rcx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x08, //0x00000589 addq $8, %r14
|
||||
0x49, 0x83, 0xc0, 0x08, //0x0000058d addq $8, %r8
|
||||
0x48, 0x83, 0xc2, 0xf8, //0x00000591 addq $-8, %rdx
|
||||
0x48, 0x83, 0xfa, 0x04, //0x00000595 cmpq $4, %rdx
|
||||
0x0f, 0x8d, 0xa8, 0xff, 0xff, 0xff, //0x00000599 jge LBB0_79
|
||||
//0x0000059f LBB0_75
|
||||
0x48, 0x83, 0xfa, 0x02, //0x0000059f cmpq $2, %rdx
|
||||
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x000005a3 jb LBB0_76
|
||||
//0x000005a9 LBB0_80
|
||||
0x41, 0x0f, 0xb7, 0x0e, //0x000005a9 movzwl (%r14), %ecx
|
||||
0x66, 0x41, 0x89, 0x08, //0x000005ad movw %cx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x02, //0x000005b1 addq $2, %r14
|
||||
0x49, 0x83, 0xc0, 0x02, //0x000005b5 addq $2, %r8
|
||||
0x48, 0x83, 0xc2, 0xfe, //0x000005b9 addq $-2, %rdx
|
||||
0x4c, 0x89, 0xf1, //0x000005bd movq %r14, %rcx
|
||||
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000005c0 leaq $32(%rsp), %r14
|
||||
0x48, 0x85, 0xd2, //0x000005c5 testq %rdx, %rdx
|
||||
0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x000005c8 je LBB0_58
|
||||
//0x000005ce LBB0_81
|
||||
0x8a, 0x09, //0x000005ce movb (%rcx), %cl
|
||||
0x41, 0x88, 0x08, //0x000005d0 movb %cl, (%r8)
|
||||
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000005d3 leaq $32(%rsp), %r14
|
||||
//0x000005d8 LBB0_58
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x16, //0x000005d8 vmovdqu (%r14), %xmm2
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x6e, 0x10, //0x000005dd vmovdqu $16(%r14), %xmm5
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x7e, 0x20, //0x000005e3 vmovdqu $32(%r14), %xmm7
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x76, 0x30, //0x000005e9 vmovdqu $48(%r14), %xmm6
|
||||
0xc5, 0xa9, 0x74, 0xc2, //0x000005ef vpcmpeqb %xmm2, %xmm10, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xe8, //0x000005f3 vpmovmskb %xmm0, %r13d
|
||||
0xc5, 0xa9, 0x74, 0xc5, //0x000005f7 vpcmpeqb %xmm5, %xmm10, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x000005fb vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xa9, 0x74, 0xc7, //0x000005ff vpcmpeqb %xmm7, %xmm10, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x00000603 vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xa9, 0x74, 0xc6, //0x00000607 vpcmpeqb %xmm6, %xmm10, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc8, //0x0000060b vpmovmskb %xmm0, %r9d
|
||||
0x49, 0xc1, 0xe1, 0x30, //0x0000060f shlq $48, %r9
|
||||
0x48, 0xc1, 0xe2, 0x20, //0x00000613 shlq $32, %rdx
|
||||
0x48, 0xc1, 0xe1, 0x10, //0x00000617 shlq $16, %rcx
|
||||
0x49, 0x09, 0xcd, //0x0000061b orq %rcx, %r13
|
||||
0x49, 0x09, 0xd5, //0x0000061e orq %rdx, %r13
|
||||
0x4d, 0x09, 0xcd, //0x00000621 orq %r9, %r13
|
||||
0xc5, 0xe9, 0x74, 0xc1, //0x00000624 vpcmpeqb %xmm1, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x00000628 vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xd1, 0x74, 0xc1, //0x0000062c vpcmpeqb %xmm1, %xmm5, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x00000630 vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xc1, 0x74, 0xc1, //0x00000634 vpcmpeqb %xmm1, %xmm7, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc8, //0x00000638 vpmovmskb %xmm0, %r9d
|
||||
0xc5, 0xc9, 0x74, 0xc1, //0x0000063c vpcmpeqb %xmm1, %xmm6, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xd0, //0x00000640 vpmovmskb %xmm0, %r10d
|
||||
0x49, 0xc1, 0xe2, 0x30, //0x00000644 shlq $48, %r10
|
||||
0x49, 0xc1, 0xe1, 0x20, //0x00000648 shlq $32, %r9
|
||||
0x48, 0xc1, 0xe2, 0x10, //0x0000064c shlq $16, %rdx
|
||||
0x48, 0x09, 0xd1, //0x00000650 orq %rdx, %rcx
|
||||
0x4c, 0x09, 0xc9, //0x00000653 orq %r9, %rcx
|
||||
0x4c, 0x09, 0xd1, //0x00000656 orq %r10, %rcx
|
||||
0x48, 0x89, 0xca, //0x00000659 movq %rcx, %rdx
|
||||
0x48, 0x09, 0xda, //0x0000065c orq %rbx, %rdx
|
||||
0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x0000065f je LBB0_60
|
||||
0x48, 0x89, 0xda, //0x00000665 movq %rbx, %rdx
|
||||
0x48, 0xf7, 0xd2, //0x00000668 notq %rdx
|
||||
0x48, 0x21, 0xca, //0x0000066b andq %rcx, %rdx
|
||||
0x4c, 0x8d, 0x0c, 0x12, //0x0000066e leaq (%rdx,%rdx), %r9
|
||||
0x49, 0x09, 0xd9, //0x00000672 orq %rbx, %r9
|
||||
0x4d, 0x89, 0xca, //0x00000675 movq %r9, %r10
|
||||
0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000678 movabsq $-6148914691236517206, %rbx
|
||||
0x49, 0x31, 0xda, //0x00000682 xorq %rbx, %r10
|
||||
0x48, 0x21, 0xd9, //0x00000685 andq %rbx, %rcx
|
||||
0x4c, 0x21, 0xd1, //0x00000688 andq %r10, %rcx
|
||||
0x31, 0xdb, //0x0000068b xorl %ebx, %ebx
|
||||
0x48, 0x01, 0xd1, //0x0000068d addq %rdx, %rcx
|
||||
0x0f, 0x92, 0xc3, //0x00000690 setb %bl
|
||||
0x48, 0x01, 0xc9, //0x00000693 addq %rcx, %rcx
|
||||
0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000696 movabsq $6148914691236517205, %rdx
|
||||
0x48, 0x31, 0xd1, //0x000006a0 xorq %rdx, %rcx
|
||||
0x4c, 0x21, 0xc9, //0x000006a3 andq %r9, %rcx
|
||||
0x48, 0xf7, 0xd1, //0x000006a6 notq %rcx
|
||||
0xe9, 0x09, 0x00, 0x00, 0x00, //0x000006a9 jmp LBB0_61
|
||||
//0x000006ae LBB0_60
|
||||
0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x000006ae movq $-1, %rcx
|
||||
0x31, 0xdb, //0x000006b5 xorl %ebx, %ebx
|
||||
//0x000006b7 LBB0_61
|
||||
0x48, 0x89, 0x5c, 0x24, 0x18, //0x000006b7 movq %rbx, $24(%rsp)
|
||||
0x4c, 0x21, 0xe9, //0x000006bc andq %r13, %rcx
|
||||
0xc4, 0xe1, 0xf9, 0x6e, 0xc1, //0x000006bf vmovq %rcx, %xmm0
|
||||
0xc4, 0xc3, 0x79, 0x44, 0xc1, 0x00, //0x000006c4 vpclmulqdq $0, %xmm9, %xmm0, %xmm0
|
||||
0xc4, 0xc1, 0xf9, 0x7e, 0xc5, //0x000006ca vmovq %xmm0, %r13
|
||||
0x4d, 0x31, 0xe5, //0x000006cf xorq %r12, %r13
|
||||
0xc5, 0xe9, 0x74, 0xc3, //0x000006d2 vpcmpeqb %xmm3, %xmm2, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xd0, //0x000006d6 vpmovmskb %xmm0, %r10d
|
||||
0xc5, 0xd1, 0x74, 0xc3, //0x000006da vpcmpeqb %xmm3, %xmm5, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x000006de vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xc1, 0x74, 0xc3, //0x000006e2 vpcmpeqb %xmm3, %xmm7, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x000006e6 vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xc9, 0x74, 0xc3, //0x000006ea vpcmpeqb %xmm3, %xmm6, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc8, //0x000006ee vpmovmskb %xmm0, %r9d
|
||||
0x49, 0xc1, 0xe1, 0x30, //0x000006f2 shlq $48, %r9
|
||||
0x48, 0xc1, 0xe2, 0x20, //0x000006f6 shlq $32, %rdx
|
||||
0x48, 0xc1, 0xe1, 0x10, //0x000006fa shlq $16, %rcx
|
||||
0x49, 0x09, 0xca, //0x000006fe orq %rcx, %r10
|
||||
0x49, 0x09, 0xd2, //0x00000701 orq %rdx, %r10
|
||||
0x4d, 0x09, 0xca, //0x00000704 orq %r9, %r10
|
||||
0x4d, 0x89, 0xe9, //0x00000707 movq %r13, %r9
|
||||
0x49, 0xf7, 0xd1, //0x0000070a notq %r9
|
||||
0x4d, 0x21, 0xca, //0x0000070d andq %r9, %r10
|
||||
0xc5, 0xe9, 0x74, 0xc4, //0x00000710 vpcmpeqb %xmm4, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x00000714 vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xd1, 0x74, 0xc4, //0x00000718 vpcmpeqb %xmm4, %xmm5, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x0000071c vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xc1, 0x74, 0xc4, //0x00000720 vpcmpeqb %xmm4, %xmm7, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc0, //0x00000724 vpmovmskb %xmm0, %r8d
|
||||
0xc5, 0xc9, 0x74, 0xc4, //0x00000728 vpcmpeqb %xmm4, %xmm6, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xe0, //0x0000072c vpmovmskb %xmm0, %r12d
|
||||
0x49, 0xc1, 0xe4, 0x30, //0x00000730 shlq $48, %r12
|
||||
0x49, 0xc1, 0xe0, 0x20, //0x00000734 shlq $32, %r8
|
||||
0x48, 0xc1, 0xe2, 0x10, //0x00000738 shlq $16, %rdx
|
||||
0x48, 0x09, 0xd1, //0x0000073c orq %rdx, %rcx
|
||||
0x4c, 0x09, 0xc1, //0x0000073f orq %r8, %rcx
|
||||
0x4c, 0x09, 0xe1, //0x00000742 orq %r12, %rcx
|
||||
0x4c, 0x21, 0xc9, //0x00000745 andq %r9, %rcx
|
||||
0x0f, 0x84, 0x3e, 0x00, 0x00, 0x00, //0x00000748 je LBB0_65
|
||||
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x0000074e movq $16(%rsp), %r8
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000753 .p2align 4, 0x90
|
||||
//0x00000760 LBB0_63
|
||||
0x48, 0x8d, 0x59, 0xff, //0x00000760 leaq $-1(%rcx), %rbx
|
||||
0x48, 0x89, 0xda, //0x00000764 movq %rbx, %rdx
|
||||
0x4c, 0x21, 0xd2, //0x00000767 andq %r10, %rdx
|
||||
0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x0000076a popcntq %rdx, %rdx
|
||||
0x4c, 0x01, 0xc2, //0x0000076f addq %r8, %rdx
|
||||
0x4c, 0x39, 0xfa, //0x00000772 cmpq %r15, %rdx
|
||||
0x0f, 0x86, 0xe0, 0x03, 0x00, 0x00, //0x00000775 jbe LBB0_109
|
||||
0x49, 0xff, 0xc7, //0x0000077b incq %r15
|
||||
0x48, 0x21, 0xd9, //0x0000077e andq %rbx, %rcx
|
||||
0x0f, 0x85, 0xd9, 0xff, 0xff, 0xff, //0x00000781 jne LBB0_63
|
||||
0xe9, 0x05, 0x00, 0x00, 0x00, //0x00000787 jmp LBB0_66
|
||||
//0x0000078c LBB0_65
|
||||
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x0000078c movq $16(%rsp), %r8
|
||||
//0x00000791 LBB0_66
|
||||
0x49, 0xc1, 0xfd, 0x3f, //0x00000791 sarq $63, %r13
|
||||
0xf3, 0x49, 0x0f, 0xb8, 0xca, //0x00000795 popcntq %r10, %rcx
|
||||
0x49, 0x01, 0xc8, //0x0000079a addq %rcx, %r8
|
||||
0x49, 0x83, 0xc6, 0x40, //0x0000079d addq $64, %r14
|
||||
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x000007a1 movq $8(%rsp), %rcx
|
||||
0x48, 0x83, 0xc1, 0xc0, //0x000007a6 addq $-64, %rcx
|
||||
0x4d, 0x89, 0xec, //0x000007aa movq %r13, %r12
|
||||
0x48, 0x8b, 0x5c, 0x24, 0x18, //0x000007ad movq $24(%rsp), %rbx
|
||||
0x48, 0x83, 0xf9, 0x40, //0x000007b2 cmpq $64, %rcx
|
||||
0x48, 0x89, 0x4c, 0x24, 0x08, //0x000007b6 movq %rcx, $8(%rsp)
|
||||
0x4c, 0x89, 0x44, 0x24, 0x10, //0x000007bb movq %r8, $16(%rsp)
|
||||
0x0f, 0x8d, 0x12, 0xfe, 0xff, 0xff, //0x000007c0 jge LBB0_58
|
||||
0xe9, 0xda, 0xfc, 0xff, 0xff, //0x000007c6 jmp LBB0_67
|
||||
//0x000007cb LBB0_82
|
||||
0x49, 0x8d, 0x4b, 0x05, //0x000007cb leaq $5(%r11), %rcx
|
||||
0x48, 0x3b, 0x4f, 0x08, //0x000007cf cmpq $8(%rdi), %rcx
|
||||
0x0f, 0x87, 0x35, 0xfb, 0xff, 0xff, //0x000007d3 ja LBB0_45
|
||||
//0x000007d9 LBB0_83
|
||||
0x48, 0x89, 0x0e, //0x000007d9 movq %rcx, (%rsi)
|
||||
0xe9, 0x2a, 0xfb, 0xff, 0xff, //0x000007dc jmp LBB0_44
|
||||
//0x000007e1 LBB0_84
|
||||
0x48, 0x8b, 0x4f, 0x08, //0x000007e1 movq $8(%rdi), %rcx
|
||||
0x48, 0x29, 0xd9, //0x000007e5 subq %rbx, %rcx
|
||||
0x49, 0x01, 0xde, //0x000007e8 addq %rbx, %r14
|
||||
0x45, 0x31, 0xe4, //0x000007eb xorl %r12d, %r12d
|
||||
0xc5, 0x7a, 0x6f, 0x15, 0x3a, 0xf8, 0xff, 0xff, //0x000007ee vmovdqu $-1990(%rip), %xmm10 /* LCPI0_3+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x0d, 0x42, 0xf8, 0xff, 0xff, //0x000007f6 vmovdqu $-1982(%rip), %xmm1 /* LCPI0_4+0(%rip) */
|
||||
0xc4, 0x41, 0x31, 0x76, 0xc9, //0x000007fe vpcmpeqd %xmm9, %xmm9, %xmm9
|
||||
0xc5, 0xfa, 0x6f, 0x1d, 0x45, 0xf8, 0xff, 0xff, //0x00000803 vmovdqu $-1979(%rip), %xmm3 /* LCPI0_5+0(%rip) */
|
||||
0xc5, 0xfa, 0x6f, 0x25, 0x0d, 0xf8, 0xff, 0xff, //0x0000080b vmovdqu $-2035(%rip), %xmm4 /* LCPI0_2+0(%rip) */
|
||||
0xc4, 0x41, 0x38, 0x57, 0xc0, //0x00000813 vxorps %xmm8, %xmm8, %xmm8
|
||||
0x31, 0xdb, //0x00000818 xorl %ebx, %ebx
|
||||
0x45, 0x31, 0xc0, //0x0000081a xorl %r8d, %r8d
|
||||
0x45, 0x31, 0xff, //0x0000081d xorl %r15d, %r15d
|
||||
0x48, 0x83, 0xf9, 0x40, //0x00000820 cmpq $64, %rcx
|
||||
0x48, 0x89, 0x4c, 0x24, 0x08, //0x00000824 movq %rcx, $8(%rsp)
|
||||
0x4c, 0x89, 0x44, 0x24, 0x10, //0x00000829 movq %r8, $16(%rsp)
|
||||
0x0f, 0x8d, 0x33, 0x01, 0x00, 0x00, //0x0000082e jge LBB0_85
|
||||
//0x00000834 LBB0_94
|
||||
0x48, 0x85, 0xc9, //0x00000834 testq %rcx, %rcx
|
||||
0x0f, 0x8e, 0xdc, 0x03, 0x00, 0x00, //0x00000837 jle LBB0_118
|
||||
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x40, //0x0000083d vmovups %ymm8, $64(%rsp)
|
||||
0xc5, 0x7c, 0x11, 0x44, 0x24, 0x20, //0x00000843 vmovups %ymm8, $32(%rsp)
|
||||
0x44, 0x89, 0xf1, //0x00000849 movl %r14d, %ecx
|
||||
0x81, 0xe1, 0xff, 0x0f, 0x00, 0x00, //0x0000084c andl $4095, %ecx
|
||||
0x81, 0xf9, 0xc1, 0x0f, 0x00, 0x00, //0x00000852 cmpl $4033, %ecx
|
||||
0x0f, 0x82, 0x09, 0x01, 0x00, 0x00, //0x00000858 jb LBB0_85
|
||||
0x48, 0x83, 0x7c, 0x24, 0x08, 0x20, //0x0000085e cmpq $32, $8(%rsp)
|
||||
0x0f, 0x82, 0x2e, 0x00, 0x00, 0x00, //0x00000864 jb LBB0_98
|
||||
0xc4, 0xc1, 0x78, 0x10, 0x06, //0x0000086a vmovups (%r14), %xmm0
|
||||
0xc5, 0xf8, 0x11, 0x44, 0x24, 0x20, //0x0000086f vmovups %xmm0, $32(%rsp)
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x46, 0x10, //0x00000875 vmovdqu $16(%r14), %xmm0
|
||||
0xc5, 0xfa, 0x7f, 0x44, 0x24, 0x30, //0x0000087b vmovdqu %xmm0, $48(%rsp)
|
||||
0x49, 0x83, 0xc6, 0x20, //0x00000881 addq $32, %r14
|
||||
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00000885 movq $8(%rsp), %rcx
|
||||
0x48, 0x8d, 0x51, 0xe0, //0x0000088a leaq $-32(%rcx), %rdx
|
||||
0x4c, 0x8d, 0x44, 0x24, 0x40, //0x0000088e leaq $64(%rsp), %r8
|
||||
0xe9, 0x0a, 0x00, 0x00, 0x00, //0x00000893 jmp LBB0_99
|
||||
//0x00000898 LBB0_98
|
||||
0x4c, 0x8d, 0x44, 0x24, 0x20, //0x00000898 leaq $32(%rsp), %r8
|
||||
0x48, 0x8b, 0x54, 0x24, 0x08, //0x0000089d movq $8(%rsp), %rdx
|
||||
//0x000008a2 LBB0_99
|
||||
0x48, 0x83, 0xfa, 0x10, //0x000008a2 cmpq $16, %rdx
|
||||
0x0f, 0x82, 0x5c, 0x00, 0x00, 0x00, //0x000008a6 jb LBB0_100
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x06, //0x000008ac vmovdqu (%r14), %xmm0
|
||||
0xc4, 0xc1, 0x7a, 0x7f, 0x00, //0x000008b1 vmovdqu %xmm0, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x10, //0x000008b6 addq $16, %r14
|
||||
0x49, 0x83, 0xc0, 0x10, //0x000008ba addq $16, %r8
|
||||
0x48, 0x83, 0xc2, 0xf0, //0x000008be addq $-16, %rdx
|
||||
0x48, 0x83, 0xfa, 0x08, //0x000008c2 cmpq $8, %rdx
|
||||
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000008c6 jae LBB0_105
|
||||
//0x000008cc LBB0_101
|
||||
0x48, 0x83, 0xfa, 0x04, //0x000008cc cmpq $4, %rdx
|
||||
0x0f, 0x8c, 0x58, 0x00, 0x00, 0x00, //0x000008d0 jl LBB0_102
|
||||
//0x000008d6 LBB0_106
|
||||
0x41, 0x8b, 0x0e, //0x000008d6 movl (%r14), %ecx
|
||||
0x41, 0x89, 0x08, //0x000008d9 movl %ecx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x04, //0x000008dc addq $4, %r14
|
||||
0x49, 0x83, 0xc0, 0x04, //0x000008e0 addq $4, %r8
|
||||
0x48, 0x83, 0xc2, 0xfc, //0x000008e4 addq $-4, %rdx
|
||||
0x48, 0x83, 0xfa, 0x02, //0x000008e8 cmpq $2, %rdx
|
||||
0x0f, 0x83, 0x46, 0x00, 0x00, 0x00, //0x000008ec jae LBB0_107
|
||||
//0x000008f2 LBB0_103
|
||||
0x4c, 0x89, 0xf1, //0x000008f2 movq %r14, %rcx
|
||||
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x000008f5 leaq $32(%rsp), %r14
|
||||
0x48, 0x85, 0xd2, //0x000008fa testq %rdx, %rdx
|
||||
0x0f, 0x85, 0x5a, 0x00, 0x00, 0x00, //0x000008fd jne LBB0_108
|
||||
0xe9, 0x5f, 0x00, 0x00, 0x00, //0x00000903 jmp LBB0_85
|
||||
//0x00000908 LBB0_100
|
||||
0x48, 0x83, 0xfa, 0x08, //0x00000908 cmpq $8, %rdx
|
||||
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x0000090c jb LBB0_101
|
||||
//0x00000912 LBB0_105
|
||||
0x49, 0x8b, 0x0e, //0x00000912 movq (%r14), %rcx
|
||||
0x49, 0x89, 0x08, //0x00000915 movq %rcx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x08, //0x00000918 addq $8, %r14
|
||||
0x49, 0x83, 0xc0, 0x08, //0x0000091c addq $8, %r8
|
||||
0x48, 0x83, 0xc2, 0xf8, //0x00000920 addq $-8, %rdx
|
||||
0x48, 0x83, 0xfa, 0x04, //0x00000924 cmpq $4, %rdx
|
||||
0x0f, 0x8d, 0xa8, 0xff, 0xff, 0xff, //0x00000928 jge LBB0_106
|
||||
//0x0000092e LBB0_102
|
||||
0x48, 0x83, 0xfa, 0x02, //0x0000092e cmpq $2, %rdx
|
||||
0x0f, 0x82, 0xba, 0xff, 0xff, 0xff, //0x00000932 jb LBB0_103
|
||||
//0x00000938 LBB0_107
|
||||
0x41, 0x0f, 0xb7, 0x0e, //0x00000938 movzwl (%r14), %ecx
|
||||
0x66, 0x41, 0x89, 0x08, //0x0000093c movw %cx, (%r8)
|
||||
0x49, 0x83, 0xc6, 0x02, //0x00000940 addq $2, %r14
|
||||
0x49, 0x83, 0xc0, 0x02, //0x00000944 addq $2, %r8
|
||||
0x48, 0x83, 0xc2, 0xfe, //0x00000948 addq $-2, %rdx
|
||||
0x4c, 0x89, 0xf1, //0x0000094c movq %r14, %rcx
|
||||
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x0000094f leaq $32(%rsp), %r14
|
||||
0x48, 0x85, 0xd2, //0x00000954 testq %rdx, %rdx
|
||||
0x0f, 0x84, 0x0a, 0x00, 0x00, 0x00, //0x00000957 je LBB0_85
|
||||
//0x0000095d LBB0_108
|
||||
0x8a, 0x09, //0x0000095d movb (%rcx), %cl
|
||||
0x41, 0x88, 0x08, //0x0000095f movb %cl, (%r8)
|
||||
0x4c, 0x8d, 0x74, 0x24, 0x20, //0x00000962 leaq $32(%rsp), %r14
|
||||
//0x00000967 LBB0_85
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x16, //0x00000967 vmovdqu (%r14), %xmm2
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x6e, 0x10, //0x0000096c vmovdqu $16(%r14), %xmm5
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x7e, 0x20, //0x00000972 vmovdqu $32(%r14), %xmm7
|
||||
0xc4, 0xc1, 0x7a, 0x6f, 0x76, 0x30, //0x00000978 vmovdqu $48(%r14), %xmm6
|
||||
0xc5, 0xa9, 0x74, 0xc2, //0x0000097e vpcmpeqb %xmm2, %xmm10, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xe8, //0x00000982 vpmovmskb %xmm0, %r13d
|
||||
0xc5, 0xa9, 0x74, 0xc5, //0x00000986 vpcmpeqb %xmm5, %xmm10, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x0000098a vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xa9, 0x74, 0xc7, //0x0000098e vpcmpeqb %xmm7, %xmm10, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x00000992 vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xa9, 0x74, 0xc6, //0x00000996 vpcmpeqb %xmm6, %xmm10, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc8, //0x0000099a vpmovmskb %xmm0, %r9d
|
||||
0x49, 0xc1, 0xe1, 0x30, //0x0000099e shlq $48, %r9
|
||||
0x48, 0xc1, 0xe2, 0x20, //0x000009a2 shlq $32, %rdx
|
||||
0x48, 0xc1, 0xe1, 0x10, //0x000009a6 shlq $16, %rcx
|
||||
0x49, 0x09, 0xcd, //0x000009aa orq %rcx, %r13
|
||||
0x49, 0x09, 0xd5, //0x000009ad orq %rdx, %r13
|
||||
0x4d, 0x09, 0xcd, //0x000009b0 orq %r9, %r13
|
||||
0xc5, 0xe9, 0x74, 0xc1, //0x000009b3 vpcmpeqb %xmm1, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x000009b7 vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xd1, 0x74, 0xc1, //0x000009bb vpcmpeqb %xmm1, %xmm5, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x000009bf vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xc1, 0x74, 0xc1, //0x000009c3 vpcmpeqb %xmm1, %xmm7, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc8, //0x000009c7 vpmovmskb %xmm0, %r9d
|
||||
0xc5, 0xc9, 0x74, 0xc1, //0x000009cb vpcmpeqb %xmm1, %xmm6, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xd0, //0x000009cf vpmovmskb %xmm0, %r10d
|
||||
0x49, 0xc1, 0xe2, 0x30, //0x000009d3 shlq $48, %r10
|
||||
0x49, 0xc1, 0xe1, 0x20, //0x000009d7 shlq $32, %r9
|
||||
0x48, 0xc1, 0xe2, 0x10, //0x000009db shlq $16, %rdx
|
||||
0x48, 0x09, 0xd1, //0x000009df orq %rdx, %rcx
|
||||
0x4c, 0x09, 0xc9, //0x000009e2 orq %r9, %rcx
|
||||
0x4c, 0x09, 0xd1, //0x000009e5 orq %r10, %rcx
|
||||
0x48, 0x89, 0xca, //0x000009e8 movq %rcx, %rdx
|
||||
0x48, 0x09, 0xda, //0x000009eb orq %rbx, %rdx
|
||||
0x0f, 0x84, 0x49, 0x00, 0x00, 0x00, //0x000009ee je LBB0_87
|
||||
0x48, 0x89, 0xda, //0x000009f4 movq %rbx, %rdx
|
||||
0x48, 0xf7, 0xd2, //0x000009f7 notq %rdx
|
||||
0x48, 0x21, 0xca, //0x000009fa andq %rcx, %rdx
|
||||
0x4c, 0x8d, 0x0c, 0x12, //0x000009fd leaq (%rdx,%rdx), %r9
|
||||
0x49, 0x09, 0xd9, //0x00000a01 orq %rbx, %r9
|
||||
0x4d, 0x89, 0xca, //0x00000a04 movq %r9, %r10
|
||||
0x48, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, //0x00000a07 movabsq $-6148914691236517206, %rbx
|
||||
0x49, 0x31, 0xda, //0x00000a11 xorq %rbx, %r10
|
||||
0x48, 0x21, 0xd9, //0x00000a14 andq %rbx, %rcx
|
||||
0x4c, 0x21, 0xd1, //0x00000a17 andq %r10, %rcx
|
||||
0x31, 0xdb, //0x00000a1a xorl %ebx, %ebx
|
||||
0x48, 0x01, 0xd1, //0x00000a1c addq %rdx, %rcx
|
||||
0x0f, 0x92, 0xc3, //0x00000a1f setb %bl
|
||||
0x48, 0x01, 0xc9, //0x00000a22 addq %rcx, %rcx
|
||||
0x48, 0xba, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, //0x00000a25 movabsq $6148914691236517205, %rdx
|
||||
0x48, 0x31, 0xd1, //0x00000a2f xorq %rdx, %rcx
|
||||
0x4c, 0x21, 0xc9, //0x00000a32 andq %r9, %rcx
|
||||
0x48, 0xf7, 0xd1, //0x00000a35 notq %rcx
|
||||
0xe9, 0x09, 0x00, 0x00, 0x00, //0x00000a38 jmp LBB0_88
|
||||
//0x00000a3d LBB0_87
|
||||
0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000a3d movq $-1, %rcx
|
||||
0x31, 0xdb, //0x00000a44 xorl %ebx, %ebx
|
||||
//0x00000a46 LBB0_88
|
||||
0x48, 0x89, 0x5c, 0x24, 0x18, //0x00000a46 movq %rbx, $24(%rsp)
|
||||
0x4c, 0x21, 0xe9, //0x00000a4b andq %r13, %rcx
|
||||
0xc4, 0xe1, 0xf9, 0x6e, 0xc1, //0x00000a4e vmovq %rcx, %xmm0
|
||||
0xc4, 0xc3, 0x79, 0x44, 0xc1, 0x00, //0x00000a53 vpclmulqdq $0, %xmm9, %xmm0, %xmm0
|
||||
0xc4, 0xc1, 0xf9, 0x7e, 0xc5, //0x00000a59 vmovq %xmm0, %r13
|
||||
0x4d, 0x31, 0xe5, //0x00000a5e xorq %r12, %r13
|
||||
0xc5, 0xe9, 0x74, 0xc3, //0x00000a61 vpcmpeqb %xmm3, %xmm2, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xd0, //0x00000a65 vpmovmskb %xmm0, %r10d
|
||||
0xc5, 0xd1, 0x74, 0xc3, //0x00000a69 vpcmpeqb %xmm3, %xmm5, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x00000a6d vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xc1, 0x74, 0xc3, //0x00000a71 vpcmpeqb %xmm3, %xmm7, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x00000a75 vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xc9, 0x74, 0xc3, //0x00000a79 vpcmpeqb %xmm3, %xmm6, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc8, //0x00000a7d vpmovmskb %xmm0, %r9d
|
||||
0x49, 0xc1, 0xe1, 0x30, //0x00000a81 shlq $48, %r9
|
||||
0x48, 0xc1, 0xe2, 0x20, //0x00000a85 shlq $32, %rdx
|
||||
0x48, 0xc1, 0xe1, 0x10, //0x00000a89 shlq $16, %rcx
|
||||
0x49, 0x09, 0xca, //0x00000a8d orq %rcx, %r10
|
||||
0x49, 0x09, 0xd2, //0x00000a90 orq %rdx, %r10
|
||||
0x4d, 0x09, 0xca, //0x00000a93 orq %r9, %r10
|
||||
0x4d, 0x89, 0xe9, //0x00000a96 movq %r13, %r9
|
||||
0x49, 0xf7, 0xd1, //0x00000a99 notq %r9
|
||||
0x4d, 0x21, 0xca, //0x00000a9c andq %r9, %r10
|
||||
0xc5, 0xe9, 0x74, 0xc4, //0x00000a9f vpcmpeqb %xmm4, %xmm2, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xc8, //0x00000aa3 vpmovmskb %xmm0, %ecx
|
||||
0xc5, 0xd1, 0x74, 0xc4, //0x00000aa7 vpcmpeqb %xmm4, %xmm5, %xmm0
|
||||
0xc5, 0xf9, 0xd7, 0xd0, //0x00000aab vpmovmskb %xmm0, %edx
|
||||
0xc5, 0xc1, 0x74, 0xc4, //0x00000aaf vpcmpeqb %xmm4, %xmm7, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xc0, //0x00000ab3 vpmovmskb %xmm0, %r8d
|
||||
0xc5, 0xc9, 0x74, 0xc4, //0x00000ab7 vpcmpeqb %xmm4, %xmm6, %xmm0
|
||||
0xc5, 0x79, 0xd7, 0xe0, //0x00000abb vpmovmskb %xmm0, %r12d
|
||||
0x49, 0xc1, 0xe4, 0x30, //0x00000abf shlq $48, %r12
|
||||
0x49, 0xc1, 0xe0, 0x20, //0x00000ac3 shlq $32, %r8
|
||||
0x48, 0xc1, 0xe2, 0x10, //0x00000ac7 shlq $16, %rdx
|
||||
0x48, 0x09, 0xd1, //0x00000acb orq %rdx, %rcx
|
||||
0x4c, 0x09, 0xc1, //0x00000ace orq %r8, %rcx
|
||||
0x4c, 0x09, 0xe1, //0x00000ad1 orq %r12, %rcx
|
||||
0x4c, 0x21, 0xc9, //0x00000ad4 andq %r9, %rcx
|
||||
0x0f, 0x84, 0x3f, 0x00, 0x00, 0x00, //0x00000ad7 je LBB0_92
|
||||
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00000add movq $16(%rsp), %r8
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, //0x00000ae2 .p2align 4, 0x90
|
||||
//0x00000af0 LBB0_90
|
||||
0x48, 0x8d, 0x59, 0xff, //0x00000af0 leaq $-1(%rcx), %rbx
|
||||
0x48, 0x89, 0xda, //0x00000af4 movq %rbx, %rdx
|
||||
0x4c, 0x21, 0xd2, //0x00000af7 andq %r10, %rdx
|
||||
0xf3, 0x48, 0x0f, 0xb8, 0xd2, //0x00000afa popcntq %rdx, %rdx
|
||||
0x4c, 0x01, 0xc2, //0x00000aff addq %r8, %rdx
|
||||
0x4c, 0x39, 0xfa, //0x00000b02 cmpq %r15, %rdx
|
||||
0x0f, 0x86, 0x50, 0x00, 0x00, 0x00, //0x00000b05 jbe LBB0_109
|
||||
0x49, 0xff, 0xc7, //0x00000b0b incq %r15
|
||||
0x48, 0x21, 0xd9, //0x00000b0e andq %rbx, %rcx
|
||||
0x0f, 0x85, 0xd9, 0xff, 0xff, 0xff, //0x00000b11 jne LBB0_90
|
||||
0xe9, 0x05, 0x00, 0x00, 0x00, //0x00000b17 jmp LBB0_93
|
||||
//0x00000b1c LBB0_92
|
||||
0x4c, 0x8b, 0x44, 0x24, 0x10, //0x00000b1c movq $16(%rsp), %r8
|
||||
//0x00000b21 LBB0_93
|
||||
0x49, 0xc1, 0xfd, 0x3f, //0x00000b21 sarq $63, %r13
|
||||
0xf3, 0x49, 0x0f, 0xb8, 0xca, //0x00000b25 popcntq %r10, %rcx
|
||||
0x49, 0x01, 0xc8, //0x00000b2a addq %rcx, %r8
|
||||
0x49, 0x83, 0xc6, 0x40, //0x00000b2d addq $64, %r14
|
||||
0x48, 0x8b, 0x4c, 0x24, 0x08, //0x00000b31 movq $8(%rsp), %rcx
|
||||
0x48, 0x83, 0xc1, 0xc0, //0x00000b36 addq $-64, %rcx
|
||||
0x4d, 0x89, 0xec, //0x00000b3a movq %r13, %r12
|
||||
0x48, 0x8b, 0x5c, 0x24, 0x18, //0x00000b3d movq $24(%rsp), %rbx
|
||||
0x48, 0x83, 0xf9, 0x40, //0x00000b42 cmpq $64, %rcx
|
||||
0x48, 0x89, 0x4c, 0x24, 0x08, //0x00000b46 movq %rcx, $8(%rsp)
|
||||
0x4c, 0x89, 0x44, 0x24, 0x10, //0x00000b4b movq %r8, $16(%rsp)
|
||||
0x0f, 0x8d, 0x11, 0xfe, 0xff, 0xff, //0x00000b50 jge LBB0_85
|
||||
0xe9, 0xd9, 0xfc, 0xff, 0xff, //0x00000b56 jmp LBB0_94
|
||||
//0x00000b5b LBB0_109
|
||||
0x48, 0x8b, 0x47, 0x08, //0x00000b5b movq $8(%rdi), %rax
|
||||
0x48, 0x0f, 0xbc, 0xc9, //0x00000b5f bsfq %rcx, %rcx
|
||||
0x48, 0x2b, 0x4c, 0x24, 0x08, //0x00000b63 subq $8(%rsp), %rcx
|
||||
0x48, 0x8d, 0x44, 0x01, 0x01, //0x00000b68 leaq $1(%rcx,%rax), %rax
|
||||
0x48, 0x89, 0x06, //0x00000b6d movq %rax, (%rsi)
|
||||
0x48, 0x8b, 0x4f, 0x08, //0x00000b70 movq $8(%rdi), %rcx
|
||||
0x48, 0x39, 0xc8, //0x00000b74 cmpq %rcx, %rax
|
||||
0x48, 0x0f, 0x47, 0xc1, //0x00000b77 cmovaq %rcx, %rax
|
||||
0x48, 0x89, 0x06, //0x00000b7b movq %rax, (%rsi)
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000b7e movq $-1, %rax
|
||||
0x4c, 0x0f, 0x47, 0xd8, //0x00000b85 cmovaq %rax, %r11
|
||||
0xe9, 0x7d, 0xf7, 0xff, 0xff, //0x00000b89 jmp LBB0_44
|
||||
//0x00000b8e LBB0_54
|
||||
0x4d, 0x85, 0xe4, //0x00000b8e testq %r12, %r12
|
||||
0x0f, 0x85, 0x8e, 0x00, 0x00, 0x00, //0x00000b91 jne LBB0_119
|
||||
0x4b, 0x8d, 0x5c, 0x17, 0x01, //0x00000b97 leaq $1(%r15,%r10), %rbx
|
||||
0x49, 0xf7, 0xd7, //0x00000b9c notq %r15
|
||||
0x4d, 0x01, 0xc7, //0x00000b9f addq %r8, %r15
|
||||
//0x00000ba2 LBB0_56
|
||||
0x4d, 0x85, 0xff, //0x00000ba2 testq %r15, %r15
|
||||
0x0f, 0x8f, 0x24, 0x00, 0x00, 0x00, //0x00000ba5 jg LBB0_113
|
||||
0xe9, 0x5e, 0xf7, 0xff, 0xff, //0x00000bab jmp LBB0_45
|
||||
//0x00000bb0 LBB0_111
|
||||
0x48, 0xc7, 0xc1, 0xfe, 0xff, 0xff, 0xff, //0x00000bb0 movq $-2, %rcx
|
||||
0xb8, 0x02, 0x00, 0x00, 0x00, //0x00000bb7 movl $2, %eax
|
||||
0x48, 0x01, 0xc3, //0x00000bbc addq %rax, %rbx
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bbf movq $-1, %rax
|
||||
0x49, 0x01, 0xcf, //0x00000bc6 addq %rcx, %r15
|
||||
0x0f, 0x8e, 0x3f, 0xf7, 0xff, 0xff, //0x00000bc9 jle LBB0_45
|
||||
//0x00000bcf LBB0_113
|
||||
0x0f, 0xb6, 0x03, //0x00000bcf movzbl (%rbx), %eax
|
||||
0x3c, 0x5c, //0x00000bd2 cmpb $92, %al
|
||||
0x0f, 0x84, 0xd6, 0xff, 0xff, 0xff, //0x00000bd4 je LBB0_111
|
||||
0x3c, 0x22, //0x00000bda cmpb $34, %al
|
||||
0x0f, 0x84, 0x24, 0x00, 0x00, 0x00, //0x00000bdc je LBB0_116
|
||||
0x48, 0xc7, 0xc1, 0xff, 0xff, 0xff, 0xff, //0x00000be2 movq $-1, %rcx
|
||||
0xb8, 0x01, 0x00, 0x00, 0x00, //0x00000be9 movl $1, %eax
|
||||
0x48, 0x01, 0xc3, //0x00000bee addq %rax, %rbx
|
||||
0x48, 0xc7, 0xc0, 0xff, 0xff, 0xff, 0xff, //0x00000bf1 movq $-1, %rax
|
||||
0x49, 0x01, 0xcf, //0x00000bf8 addq %rcx, %r15
|
||||
0x0f, 0x8f, 0xce, 0xff, 0xff, 0xff, //0x00000bfb jg LBB0_113
|
||||
0xe9, 0x08, 0xf7, 0xff, 0xff, //0x00000c01 jmp LBB0_45
|
||||
//0x00000c06 LBB0_116
|
||||
0x4c, 0x29, 0xf3, //0x00000c06 subq %r14, %rbx
|
||||
0x48, 0xff, 0xc3, //0x00000c09 incq %rbx
|
||||
0xe9, 0xf7, 0xf6, 0xff, 0xff, //0x00000c0c jmp LBB0_43
|
||||
//0x00000c11 LBB0_117
|
||||
0x4c, 0x01, 0xf3, //0x00000c11 addq %r14, %rbx
|
||||
0xe9, 0x89, 0xff, 0xff, 0xff, //0x00000c14 jmp LBB0_56
|
||||
//0x00000c19 LBB0_118
|
||||
0x48, 0x8b, 0x4f, 0x08, //0x00000c19 movq $8(%rdi), %rcx
|
||||
0x48, 0x89, 0x0e, //0x00000c1d movq %rcx, (%rsi)
|
||||
0xe9, 0xe9, 0xf6, 0xff, 0xff, //0x00000c20 jmp LBB0_45
|
||||
//0x00000c25 LBB0_119
|
||||
0x49, 0x8d, 0x48, 0xff, //0x00000c25 leaq $-1(%r8), %rcx
|
||||
0x4c, 0x39, 0xf9, //0x00000c29 cmpq %r15, %rcx
|
||||
0x0f, 0x84, 0xdc, 0xf6, 0xff, 0xff, //0x00000c2c je LBB0_45
|
||||
0x4b, 0x8d, 0x5c, 0x17, 0x02, //0x00000c32 leaq $2(%r15,%r10), %rbx
|
||||
0x4d, 0x29, 0xf8, //0x00000c37 subq %r15, %r8
|
||||
0x49, 0x83, 0xc0, 0xfe, //0x00000c3a addq $-2, %r8
|
||||
0x4d, 0x89, 0xc7, //0x00000c3e movq %r8, %r15
|
||||
0xe9, 0x5c, 0xff, 0xff, 0xff, //0x00000c41 jmp LBB0_56
|
||||
0x90, 0x90, //0x00000c46 .p2align 2, 0x90
|
||||
// // .set L0_0_set_45, LBB0_45-LJTI0_0
|
||||
// // .set L0_0_set_47, LBB0_47-LJTI0_0
|
||||
// // .set L0_0_set_48, LBB0_48-LJTI0_0
|
||||
// // .set L0_0_set_29, LBB0_29-LJTI0_0
|
||||
// // .set L0_0_set_57, LBB0_57-LJTI0_0
|
||||
// // .set L0_0_set_82, LBB0_82-LJTI0_0
|
||||
// // .set L0_0_set_46, LBB0_46-LJTI0_0
|
||||
// // .set L0_0_set_84, LBB0_84-LJTI0_0
|
||||
//0x00000c48 LJTI0_0
|
||||
0xc6, 0xf6, 0xff, 0xff, //0x00000c48 .long L0_0_set_45
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c4c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c50 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c54 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c58 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c5c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c60 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c64 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c68 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c6c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c70 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c74 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c78 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c7c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c80 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c84 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c88 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c8c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c90 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c94 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c98 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000c9c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ca0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ca4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ca8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cac .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cb0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cb4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cb8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cbc .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cc0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cc4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cc8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ccc .long L0_0_set_47
|
||||
0xfa, 0xf6, 0xff, 0xff, //0x00000cd0 .long L0_0_set_48
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cd4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cd8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cdc .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ce0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ce4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ce8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cec .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cf0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cf4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000cf8 .long L0_0_set_47
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000cfc .long L0_0_set_29
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d00 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d04 .long L0_0_set_47
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d08 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d0c .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d10 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d14 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d18 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d1c .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d20 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d24 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d28 .long L0_0_set_29
|
||||
0xe3, 0xf5, 0xff, 0xff, //0x00000d2c .long L0_0_set_29
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d30 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d34 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d38 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d3c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d40 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d44 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d48 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d4c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d50 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d54 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d58 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d5c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d60 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d64 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d68 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d6c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d70 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d74 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d78 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d7c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d80 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d84 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d88 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d8c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d90 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d94 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d98 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000d9c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000da0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000da4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000da8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dac .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000db0 .long L0_0_set_47
|
||||
0x0a, 0xf8, 0xff, 0xff, //0x00000db4 .long L0_0_set_57
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000db8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dbc .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dc0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dc4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dc8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dcc .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dd0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dd4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dd8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000ddc .long L0_0_set_47
|
||||
0x83, 0xfb, 0xff, 0xff, //0x00000de0 .long L0_0_set_82
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000de4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000de8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dec .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000df0 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000df4 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000df8 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000dfc .long L0_0_set_47
|
||||
0xd8, 0xf6, 0xff, 0xff, //0x00000e00 .long L0_0_set_46
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e04 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e08 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e0c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e10 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e14 .long L0_0_set_47
|
||||
0xd8, 0xf6, 0xff, 0xff, //0x00000e18 .long L0_0_set_46
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e1c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e20 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e24 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e28 .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e2c .long L0_0_set_47
|
||||
0xeb, 0xf6, 0xff, 0xff, //0x00000e30 .long L0_0_set_47
|
||||
0x99, 0xfb, 0xff, 0xff, //0x00000e34 .long L0_0_set_84
|
||||
//0x00000e38 .p2align 2, 0x00
|
||||
//0x00000e38 _MASK_USE_NUMBER
|
||||
0x02, 0x00, 0x00, 0x00, //0x00000e38 .long 2
|
||||
}
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// +build !noasm !appengine
|
||||
// Code generated by asm2asm, DO NOT EDIT.
|
||||
|
||||
package avx
|
||||
|
||||
import (
|
||||
`github.com/bytedance/sonic/loader`
|
||||
)
|
||||
|
||||
const (
|
||||
_entry__skip_one = 144
|
||||
)
|
||||
|
||||
const (
|
||||
_stack__skip_one = 160
|
||||
)
|
||||
|
||||
const (
|
||||
_size__skip_one = 9472
|
||||
)
|
||||
|
||||
var (
|
||||
_pcsp__skip_one = [][2]uint32{
|
||||
{1, 0},
|
||||
{4, 8},
|
||||
{6, 16},
|
||||
{8, 24},
|
||||
{10, 32},
|
||||
{12, 40},
|
||||
{13, 48},
|
||||
{9044, 160},
|
||||
{9048, 48},
|
||||
{9049, 40},
|
||||
{9051, 32},
|
||||
{9053, 24},
|
||||
{9055, 16},
|
||||
{9057, 8},
|
||||
{9058, 0},
|
||||
{9472, 160},
|
||||
}
|
||||
)
|
||||
|
||||
var _cfunc_skip_one = []loader.CFunc{
|
||||
{"_skip_one_entry", 0, _entry__skip_one, 0, nil},
|
||||
{"_skip_one", _entry__skip_one, _size__skip_one, _stack__skip_one, _pcsp__skip_one},
|
||||
}
|
||||
+2830
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user